/** * \brief Calls sol.main.on_finished() if it exists. * * This function is called when the program is reset or stopped. */ void LuaContext::main_on_finished() { push_main(l); on_finished(); remove_timers(-1); // Stop timers associated to sol.main. remove_menus(-1); // Stop menus associated to sol.main. lua_pop(l, 1); }
/** * \brief Calls the on_finished() method of a Lua menu. * \param menu_ref A reference to the menu object. */ void LuaContext::menu_on_finished(const ScopedLuaRef& menu_ref) { push_ref(l, menu_ref); remove_menus(-1); // First, stop children menus if any. on_finished(); remove_timers(-1); // Stop timers associated to this menu. lua_pop(l, 1); }
/** * @brief Calls the on_finished() method of a Lua game. * @param game A game. */ void LuaContext::game_on_finished(Game& game) { push_game(l, game.get_savegame()); on_finished(); remove_timers(-1); // Stop timers and menus associated to this game. remove_menus(-1); lua_pop(l, 1); }
/** * \brief Calls the on_finished() method of a Lua equipment item. * * Does nothing if the method is not defined. * * \param item An equipment item. */ void LuaContext::item_on_finished(EquipmentItem& item) { push_item(l, item); if (userdata_has_field(item, "on_finished")) { on_finished(); } remove_timers(-1); // Stop timers and menus associated to this item. remove_menus(-1); lua_pop(l, 1); }
/** * \brief Calls the on_finished() method of a Lua game if it is defined. * * Also stops timers and menus associated to the game. * * \param game A game. */ void LuaContext::game_on_finished(Game& game) { if (!game.get_savegame().is_known_to_lua()) { return; } push_game(l, game.get_savegame()); if (userdata_has_field(game.get_savegame(), "on_finished")) { on_finished(); } remove_timers(-1); // Stop timers and menus associated to this game. remove_menus(-1); lua_pop(l, 1); }