#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(); void unloadCartridge(); // Save/Load game state bool saveGameState(const std::string &saveFilePath); bool loadGameState(const std::string &saveFilePath); std::string getAutoSavePath() const; // Generate completion log (for wherigo.com) bool generateCompletionLog(const std::string &logFilePath); 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; } private: bool initLuaState(); lua_State* m_luaState = nullptr; int m_cartridgeRef = -1; // LUA_NOREF std::unique_ptr m_cartridge; std::string m_cartridgePath; };