// ScriptRunner.h: interface for the CScriptRunner class.
//

#pragma once

class CMotherBoard;

using ScriptArgList = std::list<CString>;

class CScriptRunner
{
		int                 m_nScriptLinePos;
		int                 m_nScriptLineLen;
		DWORD               m_nScriptCurrTick;
		DWORD               m_nScriptPDCurrTick;
		CStdioFile          m_fileScript;
		fs::path            m_strScriptFile;
		CString             m_strScriptLine;
		UINT                m_nTickDelay;
		UINT                m_nTickPDDelay;
		bool                m_bStopButton;
		bool                m_bRus;
		bool                m_bIsAr2Press;	// флаг нажатия АР2
		bool				m_bPressDelay;	// флаг удержания клавиши
		bool				m_bRegularKey;	// флаг нажатия обычной кнопки
		bool                m_bHasScript;

		ScriptArgList       m_listArgs;

		bool                CheckEscChar(TCHAR ch);
		int                 ParseArg();
		int                 ParseArg8();
		void                ParseNextChar(TCHAR ch);
		void                SendKoiChar(uint8_t ch);

	public:
		CScriptRunner();
		virtual ~CScriptRunner();

		void                SetScript(const fs::path &strScriptPath, const fs::path &strScriptFileName, bool bXlat);
		void                StopScript();
		void                SetArgumentList(ScriptArgList &ArgList);
		void                SetArgument(CString &strArg);
		bool                RunScript();
};
