#pragma once #include #include #include #include extern "C" { struct lua_State; } class cApp : public wxApp { public: bool OnInit() override; int OnExit() override; bool loadCartridge(const std::string &filePath); void startGame() const; void unloadCartridge(); // Save/Load game state bool saveGameState(const std::string &saveFilePath) const; bool loadGameState(const std::string &saveFilePath) const; std::string getAutoSavePath() const; // Generate completion log (for wherigo.com) bool generateCompletionLog(const std::string &logFilePath) const; std::string getCompletionLogPath() const; lua_State* getLuaState() const { return m_luaState; } int getCartridgeRef() const { return m_cartridgeRef; } cartridge::Cartridge* getCartridge() const { return m_cartridge.get(); } bool isCartridgeLoaded() const { return m_cartridge != nullptr; } std::string getCartridgePath() const { return m_cartridgePath; } private: bool initLuaState(); lua_State* m_luaState = nullptr; int m_cartridgeRef = -1; // LUA_NOREF std::unique_ptr m_cartridge; std::string m_cartridgePath; };