#ifndef EDITSCENE_LUA_GAMEMODE_API_HPP
#define EDITSCENE_LUA_GAMEMODE_API_HPP
#pragma once

#include <lua.hpp>

/**
 * @file LuaGameModeApi.hpp
 * @brief Lua API for querying editor/game mode state.
 *
 * Provides functions to check whether the application is in editor mode
 * or game mode, and what the current gameplay state is.
 *
 * Exposed Lua globals (in the "ecs" table):
 *   ecs.is_editor_mode()    -> bool
 *   ecs.is_game_mode()      -> bool
 *   ecs.is_game_playing()   -> bool
 *   ecs.is_game_menu()      -> bool
 *   ecs.is_game_paused()    -> bool
 *   ecs.get_game_mode()     -> string ("editor" or "game")
 *   ecs.get_game_play_state() -> string ("menu", "playing", or "paused")
 *   ecs.debug_crash(msg)    -> prints msg to log/stderr, then calls std::abort()
 */

namespace editScene
{

/**
 * @brief Register all game-mode Lua API functions into the "ecs" global table.
 *
 * Adds mode query functions to the existing "ecs" table.
 *
 * @param L The Lua state.
 */
void registerLuaGameModeApi(lua_State *L);

} // namespace editScene

#endif // EDITSCENE_LUA_GAMEMODE_API_HPP
