The Battle for Wesnoth  1.19.0-dev
Public Member Functions | Public Attributes | Private Member Functions | Static Private Member Functions | Private Attributes | Static Private Attributes | Friends | List of all members
game_lua_kernel Class Reference

#include <game_lua_kernel.hpp>

Inheritance diagram for game_lua_kernel:

Public Member Functions

game_boardboard ()
 
std::vector< team > & teams ()
 
const gamemapmap () const
 
game_displayget_display () const
 
 game_lua_kernel (game_state &, play_controller &, reports &)
 
void set_game_display (game_display *gd)
 
virtual std::string my_name () override
 User-visible name of the lua kernel that they are talking to. More...
 
std::string apply_effect (const std::string &name, unit &u, const config &cfg, bool need_apply)
 
void initialize (const config &level)
 
void save_game (config &level)
 Executes the game_events.on_save function and adds to cfg the returned tags. More...
 
void load_game (const config &level)
 Executes the game_events.on_load function and passes to it all the scenario tags not yet handled. More...
 
bool run_event (const game_events::queued_event &)
 Executes the game_events.on_event function. More...
 
void custom_command (const std::string &, const config &)
 
void push_builtin_effect ()
 Registers a function for use as an effect handler. More...
 
void set_wml_action (const std::string &, game_events::wml_action::handler)
 Registers a function for use as an action handler. More...
 
void set_wml_condition (const std::string &, bool(*)(const vconfig &))
 Registers a function for use as a conditional handler. More...
 
bool run_wml_action (const std::string &, const vconfig &, const game_events::queued_event &)
 Runs a command from an event handler. More...
 
bool run_filter (char const *name, const unit &u)
 Runs a script from a unit filter. More...
 
bool run_filter (char const *name, const map_location &l)
 Runs a script from a location filter. More...
 
bool run_filter (char const *name, const team &t)
 Runs a script from a location filter. More...
 
bool run_filter (char const *name, int nArgs)
 Runs a script from a filter. More...
 
bool run_wml_conditional (const std::string &, const vconfig &)
 Evaluates a WML conidition. More...
 
int save_wml_event ()
 Store a WML event in the Lua registry, as a function. More...
 
int save_wml_event (const std::string &name, const std::string &id, const std::string &code)
 Store a WML event in the Lua registry, as a function. More...
 
int save_wml_event (int idx)
 Store a WML event in the Lua registry, as a function. More...
 
void clear_wml_event (int ref)
 Clear a WML event store in the Lua registry. More...
 
bool run_wml_event (int ref, const vconfig &args, const game_events::queued_event &ev, bool *out=nullptr)
 Run a WML stored in the Lua registry. More...
 
virtual void log_error (char const *msg, char const *context="Lua error") override
 Error reporting mechanisms, used by virtual methods protected_call and load_string. More...
 
ai::lua_ai_contextcreate_lua_ai_context (char const *code, ai::engine_lua *engine)
 
ai::lua_ai_action_handlercreate_lua_ai_action_handler (char const *code, ai::lua_ai_context &context)
 
void mouse_over_hex_callback (const map_location &loc)
 
bool mouse_button_callback (const map_location &loc, const std::string &button, const std::string &event)
 
void select_hex_callback (const map_location &loc)
 
void preload_finished ()
 
- Public Member Functions inherited from lua_kernel_base
 lua_kernel_base ()
 
virtual ~lua_kernel_base ()
 
void run_lua_tag (const config &cfg)
 Runs a [lua] tag. More...
 
void run (char const *prog, const std::string &name, int nArgs=0)
 Runs a plain script. More...
 
void throwing_run (char const *prog, const std::string &name, int nArgs, bool in_interpreter=false)
 Runs a plain script, but reports errors by throwing lua_error. More...
 
void interactive_run (char const *prog)
 Tests if a program resolves to an expression, and pretty prints it if it is, otherwise it runs it normally. More...
 
void load_package ()
 Loads the package library into lua environment. More...
 
void load_core ()
 Loads the "core" library into the Lua environment. More...
 
std::vector< std::string > get_global_var_names ()
 Get tab completion strings. More...
 
std::vector< std::string > get_attribute_names (const std::string &var_path)
 Gets all attribute names of an extended variable name. More...
 
const std::stringstream & get_log ()
 Access / manipulate logging of lua kernel activities. More...
 
void add_log (const char *str)
 
void clear_log ()
 
void set_external_log (external_log_type lg)
 
virtual void throw_exception (char const *msg, char const *context="Lua error")
 
virtual uint32_t get_random_seed ()
 
lua_State * get_state ()
 
void add_widget_definition (const std::string &type, const std::string &id)
 
void add_log_to_console (const std::string &msg)
 
int intf_show_lua_console (lua_State *L)
 

Public Attributes

int map_locked_
 A value != 0 means that the shouldn't remove any units from the map, usually because we are currently operating on a unit& and removing it might cause memory corruptions note that we don't check for the dtor of lua owned units because we assume that we operate on such a unit that the lua function that invoked the operation on that unit (like wesnoth.units.add_modification, wesnoth.units.matches ..) have a local copy of that lua_unit* userdata in its stack that prevents it from being collected. More...
 

Private Member Functions

unit_mapunits ()
 
game_datagamedata ()
 
tod_managertod_man ()
 
const game_events::queued_eventget_event_info ()
 
int intf_allow_end_turn (lua_State *)
 Allow undo sets the flag saying whether the event has mutated the game to false. More...
 
int intf_allow_undo (lua_State *)
 Allow undo sets the flag saying whether the event has mutated the game to false. More...
 
int intf_cancel_action (lua_State *)
 
int intf_add_time_area (lua_State *)
 Adding new time_areas dynamically with Standard Location Filters. More...
 
int intf_remove_time_area (lua_State *)
 Removing new time_areas dynamically with Standard Location Filters. More...
 
int intf_get_time_area (lua_State *)
 
int intf_animate_unit (lua_State *)
 
int intf_gamestate_inspector (lua_State *)
 
int impl_run_animation (lua_State *)
 
int intf_create_animator (lua_State *)
 
int intf_get_unit (lua_State *)
 Gets the unit at the given location or with the given id. More...
 
int intf_get_units (lua_State *)
 Gets all the units matching a given filter. More...
 
int intf_get_displayed_unit (lua_State *)
 Gets the unit displayed in the sidebar. More...
 
int intf_match_unit (lua_State *L)
 Matches a unit against the given filter. More...
 
int intf_get_recall_units (lua_State *L)
 Gets the numeric ids of all the units matching a given filter on the recall lists. More...
 
int intf_get_variable (lua_State *L)
 Gets a WML variable. More...
 
int intf_set_variable (lua_State *L)
 Sets a WML variable. More...
 
int intf_highlight_hex (lua_State *L)
 Highlights the given location on the map. More...
 
int intf_is_enemy (lua_State *L)
 Returns whether the first side is an enemy of the second one. More...
 
int intf_unit_ability (lua_State *L)
 Returns true if the unit has the given ability enabled. More...
 
int intf_view_locked (lua_State *L)
 Gets whether gamemap scrolling is disabled for the user. More...
 
int intf_lock_view (lua_State *L)
 Sets whether gamemap scrolling is disabled for the user. More...
 
int impl_get_terrain_info (lua_State *L)
 Gets details about a terrain. More...
 
template<bool consider_illuminates>
int intf_get_time_of_day (lua_State *L)
 Gets time of day information. More...
 
int impl_schedule_get (lua_State *L)
 
int impl_schedule_len (lua_State *L)
 
void luaW_push_schedule (lua_State *L, int area_index)
 
int intf_get_village_owner (lua_State *L)
 Gets the side of a village owner. More...
 
int intf_set_village_owner (lua_State *L)
 Sets the owner of a village. More...
 
int intf_get_mouseover_tile (lua_State *L)
 Returns the currently overed tile. More...
 
int intf_get_selected_tile (lua_State *L)
 Returns the currently selected tile. More...
 
int impl_game_config_get (lua_State *L) override
 Gets some game_config data (__index metamethod). More...
 
int impl_game_config_set (lua_State *L) override
 Sets some game_config data (__newindex metamethod). More...
 
int impl_scenario_get (lua_State *L)
 Gets some scenario data (__index metamethod). More...
 
int impl_scenario_set (lua_State *L)
 Sets some scenario data (__newindex metamethod). More...
 
int impl_current_get (lua_State *L)
 Gets some data about current point of game (__index metamethod). More...
 
int intf_clear_messages (lua_State *)
 Removes all messages from the chat window. More...
 
int impl_end_level_data_set (lua_State *)
 
int intf_end_turn (lua_State *)
 
int intf_find_cost_map (lua_State *L)
 Is called with one or more units and builds a cost map. More...
 
int intf_find_path (lua_State *L)
 Finds a path between two locations. More...
 
int intf_find_reach (lua_State *L)
 Finds all the locations reachable by a unit. More...
 
int intf_find_vision_range (lua_State *L)
 Finds all the locations for which a given unit would remove the fog (if there was fog on the map). More...
 
int intf_heal_unit (lua_State *L)
 
int intf_message (lua_State *L)
 Displays a message in the chat window and in the logs. More...
 
int intf_play_sound (lua_State *L)
 Plays a sound, possibly repeated. More...
 
int intf_set_achievement (lua_State *L)
 Sets an achievement as being completed. More...
 
int intf_has_achievement (lua_State *L)
 Returns whether an achievement has been completed. More...
 
int intf_has_sub_achievement (lua_State *L)
 Returns whether an achievement has been completed. More...
 
int intf_get_achievement (lua_State *L)
 Returns information on a single achievement, or no data if the achievement is not found. More...
 
int intf_progress_achievement (lua_State *L)
 Progresses the provided achievement. More...
 
int intf_set_sub_achievement (lua_State *L)
 Marks a single sub-achievement as completed. More...
 
int intf_set_floating_label (lua_State *L, bool spawn)
 Arg 1: text - string Arg 2: options table. More...
 
int intf_remove_floating_label (lua_State *L)
 
int intf_move_floating_label (lua_State *L)
 
void put_unit_helper (const map_location &loc)
 
int intf_put_unit (lua_State *L)
 Places a unit on the map. More...
 
int intf_erase_unit (lua_State *L)
 Erases a unit from the map. More...
 
int intf_put_recall_unit (lua_State *L)
 Puts a unit on a recall list. More...
 
int intf_extract_unit (lua_State *L)
 Extracts a unit from the map or a recall list and gives it to Lua. More...
 
int intf_find_vacant_tile (lua_State *L)
 Finds a vacant tile. More...
 
int intf_float_label (lua_State *L)
 Floats some text on the map. More...
 
int intf_clear_menu_item (lua_State *L)
 
int intf_create_side (lua_State *L)
 
int intf_set_menu_item (lua_State *L)
 
int intf_toggle_shroud (lua_State *L, bool place_shroud)
 Toggle shroud on some locations Arg 1: Side number Arg 2: List of locations on which to place/remove shroud. More...
 
int intf_override_shroud (lua_State *L)
 Overrides the shroud entirely. More...
 
int intf_simulate_combat (lua_State *L)
 Simulates a combat between two units. More...
 
int intf_scroll_to_tile (lua_State *L)
 Scrolls to given tile. More...
 
int intf_select_unit (lua_State *L)
 Selects and highlights the given location on the map. More...
 
int intf_deselect_hex (lua_State *L)
 Deselects any highlighted hex on the map. More...
 
int intf_is_skipping_messages (lua_State *L)
 Return true if a replay is in progress but the player has chosen to skip it. More...
 
int intf_skip_messages (lua_State *L)
 Set whether to skip messages Arg 1 (optional) - boolean. More...
 
int intf_get_locations (lua_State *L)
 Gets all the locations matching a given filter. More...
 
int intf_match_location (lua_State *L)
 Matches a location against the given filter. More...
 
int intf_match_side (lua_State *L)
 Matches a side against the given filter. More...
 
int intf_set_side_id (lua_State *L)
 
int intf_modify_ai_wml (lua_State *L)
 
int intf_get_sides (lua_State *L)
 Returns a proxy table array for all sides matching the given SSF. More...
 
int intf_get_side (lua_State *L)
 
int intf_add_tile_overlay (lua_State *L)
 Adds an overlay on a tile. More...
 
int intf_remove_tile_overlay (lua_State *L)
 Removes an overlay from a tile. More...
 
template<bool is_menu_item>
int intf_add_event_simple (lua_State *L)
 Add a new event handler Arg 1: Event to handle, as a string or list of strings; or menu item ID if this is a menu item Arg 2: The function to call when the event triggers Arg 3: (optional) Event priority Arg 4: (optional, non-menu-items only) The function to call when the event is undone. More...
 
int intf_add_event_wml (lua_State *L)
 Add a new event handler Arg: A full event specification as a WML config. More...
 
int intf_add_event (lua_State *L)
 Add a new event handler Arg 1: Table of options. More...
 
int intf_add_undo_actions (lua_State *L)
 Add undo actions for the current active event Arg 1: Either a table of ActionWML or a function to call Arg 2: (optional) If Arg 1 is a function, this is a WML table that will be passed to it. More...
 
int cfun_undoable_event (lua_State *L)
 Upvalue 1: The event function Upvalue 2: The undo function Arg 1: The event content. More...
 
int intf_remove_event (lua_State *L)
 
int intf_color_adjust (lua_State *L)
 
int intf_get_color_adjust (lua_State *L)
 
int intf_screen_fade (lua_State *L)
 
int intf_delay (lua_State *L)
 Delays engine for a while. More...
 
int intf_add_label (lua_State *L)
 
int intf_remove_label (lua_State *L)
 
int intf_get_label (lua_State *L)
 
int intf_redraw (lua_State *L)
 
int intf_replace_schedule (lua_State *l)
 Replacing the current time of day schedule. More...
 
int impl_schedule_set (lua_State *L)
 
int intf_scroll (lua_State *L)
 
int intf_get_all_vars (lua_State *L)
 Gets all the WML variables currently set. More...
 
int impl_theme_item (lua_State *L, std::string name)
 Executes its upvalue as a theme item generator. More...
 
int impl_theme_items_get (lua_State *L)
 Creates a field of the theme_items table and returns it (__index metamethod). More...
 
int impl_theme_items_set (lua_State *L)
 Sets a field of the theme_items table (__newindex metamethod). More...
 
int cfun_builtin_effect (lua_State *L)
 Applies its upvalue as an effect Arg 1: The unit to apply to Arg 3: The [effect] tag contents Arg 3: If false, only build description Return: The description of the effect. More...
 
int cfun_wml_action (lua_State *L)
 Executes its upvalue as a wml action. More...
 
int intf_fire_event (lua_State *L, const bool by_id)
 Fires an event. More...
 
int intf_fire_wml_menu_item (lua_State *L)
 Fires a wml menu item. More...
 
int intf_teleport (lua_State *L)
 Teeleports a unit to a location. More...
 
int intf_log (lua_State *L)
 Logs a message Arg 1: (optional) Logger; "wml" for WML errors or deprecations Arg 2: Message Arg 3: Whether to print to chat (always true if arg 1 is "wml") More...
 
int intf_toggle_fog (lua_State *L, const bool clear)
 Implements the lifting and resetting of fog via WML. More...
 
int intf_get_fog_or_shroud (lua_State *L, bool fog)
 
int intf_log_replay (lua_State *L)
 
int intf_zoom (lua_State *L)
 
std::string synced_state ()
 converts synced_context::get_synced_state() to a string. More...
 
void lua_chat (const std::string &caption, const std::string &msg)
 
std::vector< int > get_sides_vector (const vconfig &cfg)
 Gets a vector of sides from side= attribute in a given config node. More...
 

Static Private Member Functions

static void extract_preload_scripts (const game_config_view &game_config)
 

Private Attributes

game_displaygame_display_
 
game_stategame_state_
 
play_controllerplay_controller_
 
reportsreports_
 
config level_lua_
 
int EVENT_TABLE
 
bool has_preloaded_ = false
 
std::stack< game_events::queued_event const * > queued_events_
 

Static Private Attributes

static std::vector< configpreload_scripts
 
static config preload_config
 

Friends

class game_config_manager
 

Additional Inherited Members

- Public Types inherited from lua_kernel_base
using external_log_type = std::function< void(const std::string &)>
 
typedef std::function< void(char const *, char const *)> error_handler
 
- Static Public Member Functions inherited from lua_kernel_base
template<typename T >
static T & get_lua_kernel (lua_State *L)
 
- Protected Member Functions inherited from lua_kernel_base
int intf_print (lua_State *L)
 Replacement print function – instead of printing to std::cout, print to the command log. More...
 
bool protected_call (int nArgs, int nRets, error_handler)
 
bool load_string (char const *prog, const std::string &name, error_handler)
 
virtual bool protected_call (int nArgs, int nRets)
 
virtual bool load_string (char const *prog, const std::string &name)
 
int intf_dofile (lua_State *L)
 Loads and executes a Lua file. More...
 
int intf_require (lua_State *L)
 Loads and executes a Lua file, if there is no corresponding entry in wesnoth.package. More...
 
int intf_kernel_type (lua_State *L)
 
- Static Protected Member Functions inherited from lua_kernel_base
static bool protected_call (lua_State *L, int nArgs, int nRets, error_handler)
 
- Protected Attributes inherited from lua_kernel_base
lua_State * mState
 
command_log cmd_log_
 

Detailed Description

Definition at line 46 of file game_lua_kernel.hpp.

Constructor & Destructor Documentation

◆ game_lua_kernel()

game_lua_kernel::game_lua_kernel ( game_state gs,
play_controller pc,
reports reports_object 
)

Definition at line 4941 of file game_lua_kernel.cpp.

References unit::builtin_effects, lua_kernel_base::cmd_log_, EVENT_TABLE, play_controller::get_classification(), game_events::builtin_conditions::have_location(), game_events::builtin_conditions::have_unit(), ai::lua_ai_context::init(), intf_add_known_unit(), intf_add_modification(), intf_advance_unit(), intf_append_ai(), intf_copy_unit(), intf_create_attack(), intf_create_unit(), intf_debug_ai(), intf_do_unsynced(), intf_eval_conditional(), intf_get_era(), intf_get_resource(), intf_get_viewing_side(), intf_handle_user_interact(), intf_invoke_synced_command(), intf_modify_ai(), intf_modify_ai_old(), intf_on_board(), intf_on_border(), intf_remove_modifications(), intf_replace_if_failed(), intf_switch_ai(), intf_synchronize_choice(), intf_synchronize_choices(), intf_terrain_mask(), intf_terrainmap_iter(), lua_common::intf_tovconfig(), intf_transform_unit(), intf_unit_defense(), intf_unit_jamming_cost(), intf_unit_movement_cost(), intf_unit_resistance(), intf_unit_vision_cost(), game_classification::is_test(), luaW_getglobal(), lua_kernel_base::mState, play_controller_, push_builtin_effect(), queued_events_, lua_units::register_attacks_metatables(), lua_race::register_metatable(), lua_team::register_metatable(), lua_unit_type::register_metatable(), lua_terrainmap::register_metatables(), lua_units::register_metatables(), lua_audio::register_table(), lua_unit_type::register_table(), lua_common::register_vconfig_metatable(), game_events::wml_action::registry(), lua_cpp::set_functions(), set_wml_action(), set_wml_condition(), and game_events::builtin_conditions::variable_matches().

Member Function Documentation

◆ apply_effect()

std::string game_lua_kernel::apply_effect ( const std::string &  name,
unit u,
const config cfg,
bool  need_apply 
)

◆ board()

game_board & game_lua_kernel::board ( )

◆ cfun_builtin_effect()

int game_lua_kernel::cfun_builtin_effect ( lua_State *  L)
private

Applies its upvalue as an effect Arg 1: The unit to apply to Arg 3: The [effect] tag contents Arg 3: If false, only build description Return: The description of the effect.

Definition at line 5559 of file game_lua_kernel.cpp.

References unit::apply_builtin_effect(), unit::describe_builtin_effect(), luaW_checkconfig(), luaW_checkunit(), and luaW_toboolean().

◆ cfun_undoable_event()

int game_lua_kernel::cfun_undoable_event ( lua_State *  L)
private

Upvalue 1: The event function Upvalue 2: The undo function Arg 1: The event content.

Definition at line 4104 of file game_lua_kernel.cpp.

References synced_context::add_undo_commands(), get_event_info(), lua_push(), and luaW_pcall().

◆ cfun_wml_action()

int game_lua_kernel::cfun_wml_action ( lua_State *  L)
private

Executes its upvalue as a wml action.

Definition at line 5609 of file game_lua_kernel.cpp.

References get_event_info(), h, and luaW_checkvconfig().

◆ clear_wml_event()

void game_lua_kernel::clear_wml_event ( int  ref)

Clear a WML event store in the Lua registry.

Parameters
refThe unique index into the EVENT_TABLE within the Lua registry

Definition at line 5782 of file game_lua_kernel.cpp.

References EVENT_TABLE, and lua_kernel_base::mState.

Referenced by lua_event_filter::~lua_event_filter().

◆ create_lua_ai_action_handler()

ai::lua_ai_action_handler * game_lua_kernel::create_lua_ai_action_handler ( char const *  code,
ai::lua_ai_context context 
)

◆ create_lua_ai_context()

ai::lua_ai_context * game_lua_kernel::create_lua_ai_context ( char const *  code,
ai::engine_lua engine 
)

Definition at line 5944 of file game_lua_kernel.cpp.

References ai::lua_ai_context::create(), and lua_kernel_base::mState.

◆ custom_command()

void game_lua_kernel::custom_command ( const std::string &  name,
const config cfg 
)

◆ extract_preload_scripts()

void game_lua_kernel::extract_preload_scripts ( const game_config_view game_config)
staticprivate

Definition at line 173 of file game_lua_kernel.cpp.

References preload_config, and preload_scripts.

Referenced by game_config_manager::load_game_config().

◆ gamedata()

game_data & game_lua_kernel::gamedata ( )
private

◆ get_display()

game_display* game_lua_kernel::get_display ( ) const
inline

Definition at line 198 of file game_lua_kernel.hpp.

References game_display_.

◆ get_event_info()

const game_events::queued_event & game_lua_kernel::get_event_info ( )
private

◆ get_sides_vector()

std::vector< int > game_lua_kernel::get_sides_vector ( const vconfig cfg)
private

Gets a vector of sides from side= attribute in a given config node.

Promotes consistent behavior.

Definition at line 200 of file game_lua_kernel.cpp.

References vconfig::child(), config_attribute_value::empty(), game_state_, side_filter::get_teams(), vconfig::null(), config_attribute_value::str(), and WRN_LUA.

◆ impl_current_get()

int game_lua_kernel::impl_current_get ( lua_State *  L)
private

◆ impl_end_level_data_set()

int game_lua_kernel::impl_end_level_data_set ( lua_State *  L)
private

Definition at line 1389 of file game_lua_kernel.cpp.

References data, modify_bool_attrib, modify_string_attrib, and play_controller_.

◆ impl_game_config_get()

int game_lua_kernel::impl_game_config_get ( lua_State *  L)
overrideprivatevirtual

◆ impl_game_config_set()

int game_lua_kernel::impl_game_config_set ( lua_State *  L)
overrideprivatevirtual

◆ impl_get_terrain_info()

int game_lua_kernel::impl_get_terrain_info ( lua_State *  L)
private

Gets details about a terrain.

  • Arg 1: terrain code string.
  • Ret 1: table.

Definition at line 1034 of file game_lua_kernel.cpp.

References board(), lg::info(), lua_push(), luaW_pushtstring(), game_board::map(), t_translation::NONE_TERRAIN, t_translation::read_terrain_code(), t, and gamemap::tdata().

◆ impl_run_animation()

int game_lua_kernel::impl_run_animation ( lua_State *  L)
private

◆ impl_scenario_get()

int game_lua_kernel::impl_scenario_get ( lua_State *  L)
private

◆ impl_scenario_set()

int game_lua_kernel::impl_scenario_set ( lua_State *  L)
private

◆ impl_schedule_get()

int game_lua_kernel::impl_schedule_get ( lua_State *  L)
private

◆ impl_schedule_len()

int game_lua_kernel::impl_schedule_len ( lua_State *  L)
private

Definition at line 950 of file game_lua_kernel.cpp.

References luaW_check_schedule(), tod_manager::times(), and tod_man().

◆ impl_schedule_set()

int game_lua_kernel::impl_schedule_set ( lua_State *  L)
private

◆ impl_theme_item()

int game_lua_kernel::impl_theme_item ( lua_State *  L,
std::string  name 
)
private

◆ impl_theme_items_get()

int game_lua_kernel::impl_theme_items_get ( lua_State *  L)
private

Creates a field of the theme_items table and returns it (__index metamethod).

Definition at line 4701 of file game_lua_kernel.cpp.

References impl_theme_item(), lua_cpp::push_closure(), reports::register_generator(), and reports_.

◆ impl_theme_items_set()

int game_lua_kernel::impl_theme_items_set ( lua_State *  L)
private

Sets a field of the theme_items table (__newindex metamethod).

Definition at line 4715 of file game_lua_kernel.cpp.

References reports::register_generator(), and reports_.

◆ initialize()

void game_lua_kernel::initialize ( const config level)

◆ intf_add_event()

int game_lua_kernel::intf_add_event ( lua_State *  L)
private

Add a new event handler Arg 1: Table of options.

name: Event to handle, as a string or list of strings id: Event ID menu_item: True if this is a menu item (an ID is required); this means removing the menu item will automatically remove this event. Default false. first_time_only: Whether this event should fire again after the first time; default true. priority: Number that determines execution order. Events execute in order of decreasing priority, and secondarily in order of addition. filter: Event filters as a config with filter tags, a table of the form {filter_type = filter_contents}, or a function filter_args: Arbitrary data that will be passed to the filter, if it is a function. Ignored if the filter is specified as WML or a table. content: The content of the event. This is a WML table passed verbatim into the event when it fires. If no function is specified, it will be interpreted as ActionWML. action: The function to call when the event triggers. Defaults to wesnoth.wml_actions.command.

Lua API: wesnoth.game_events.add

Definition at line 4025 of file game_lua_kernel.cpp.

References game_events::manager::add_event_handler_from_lua(), game_state::events_manager_, game_state_, has_preloaded_, id, luaW_table_get_def(), luaW_tableget(), luaW_toconfig(), read_event_name(), READ_ONE_FILTER, s, save_wml_event(), and game_events::event_handler::set_arguments().

◆ intf_add_event_simple()

template<bool is_menu_item>
int game_lua_kernel::intf_add_event_simple ( lua_State *  L)
private

Add a new event handler Arg 1: Event to handle, as a string or list of strings; or menu item ID if this is a menu item Arg 2: The function to call when the event triggers Arg 3: (optional) Event priority Arg 4: (optional, non-menu-items only) The function to call when the event is undone.

Lua API:

  • wesnoth.game_events.add_repeating
  • wesnoth.game_events.add_menu

Definition at line 4124 of file game_lua_kernel.cpp.

References game_events::manager::add_event_handler_from_lua(), game_state::events_manager_, game_state_, has_preloaded_, id, read_event_name(), save_wml_event(), and game_events::event_handler::set_arguments().

◆ intf_add_event_wml()

int game_lua_kernel::intf_add_event_wml ( lua_State *  L)
private

Add a new event handler Arg: A full event specification as a WML config.

WML API: [event]

Definition at line 4155 of file game_lua_kernel.cpp.

References game_events::manager::add_event_handler_from_wml(), game_state::events_manager_, game_state_, vconfig::get_config(), vconfig::get_parsed_config(), and luaW_checkvconfig().

◆ intf_add_label()

int game_lua_kernel::intf_add_label ( lua_State *  L)
private

◆ intf_add_tile_overlay()

int game_lua_kernel::intf_add_tile_overlay ( lua_State *  L)
private

Adds an overlay on a tile.

  • Arg 1: location.
  • Arg 2: WML table.

Definition at line 3893 of file game_lua_kernel.cpp.

References display::add_overlay(), vconfig::child(), game_display_, game_state_, side_filter::get_teams(), utils::join(), luaW_checklocation(), luaW_checkvconfig(), vconfig::null(), and teams().

◆ intf_add_time_area()

int game_lua_kernel::intf_add_time_area ( lua_State *  L)
private

Adding new time_areas dynamically with Standard Location Filters.

Arg 1: Area ID Arg 2: Area locations (either a filter or a list of locations) Arg 3: (optional) Area schedule - WML table with [time] tags and optional current_time=

Definition at line 4551 of file game_lua_kernel.cpp.

References tod_manager::add_time_area(), deprecated_message(), game_state_, vconfig::get_parsed_config(), id, INDEFINITE, LOG_LUA, log_scope, luaW_check_locationset(), luaW_checkconfig(), luaW_checkvconfig(), luaW_tovconfig(), and tod_man().

◆ intf_add_undo_actions()

int game_lua_kernel::intf_add_undo_actions ( lua_State *  L)
private

Add undo actions for the current active event Arg 1: Either a table of ActionWML or a function to call Arg 2: (optional) If Arg 1 is a function, this is a WML table that will be passed to it.

Definition at line 3999 of file game_lua_kernel.cpp.

References synced_context::add_undo_commands(), get_event_info(), luaW_toconfig(), and save_wml_event().

◆ intf_allow_end_turn()

int game_lua_kernel::intf_allow_end_turn ( lua_State *  L)
private

Allow undo sets the flag saying whether the event has mutated the game to false.

Definition at line 4513 of file game_lua_kernel.cpp.

References gamedata(), luaW_iststring(), luaW_toboolean(), luaW_totstring(), and game_data::set_allow_end_turn().

◆ intf_allow_undo()

int game_lua_kernel::intf_allow_undo ( lua_State *  L)
private

Allow undo sets the flag saying whether the event has mutated the game to false.

Definition at line 4529 of file game_lua_kernel.cpp.

References luaW_toboolean(), play_controller_, play_controller::pump(), and game_events::wml_event_pump::set_undo_disabled().

◆ intf_animate_unit()

int game_lua_kernel::intf_animate_unit ( lua_State *  )
private

◆ intf_cancel_action()

int game_lua_kernel::intf_cancel_action ( lua_State *  )
private

◆ intf_clear_menu_item()

int game_lua_kernel::intf_clear_menu_item ( lua_State *  L)
private

◆ intf_clear_messages()

int game_lua_kernel::intf_clear_messages ( lua_State *  )
private

Removes all messages from the chat window.

Definition at line 1789 of file game_lua_kernel.cpp.

References display_chat_manager::clear_chat_messages(), game_display_, and game_display::get_chat_manager().

◆ intf_color_adjust()

int game_lua_kernel::intf_color_adjust ( lua_State *  L)
private

◆ intf_create_animator()

int game_lua_kernel::intf_create_animator ( lua_State *  L)
private

◆ intf_create_side()

int game_lua_kernel::intf_create_side ( lua_State *  L)
private

◆ intf_delay()

int game_lua_kernel::intf_delay ( lua_State *  L)
private

Delays engine for a while.

  • Arg 1: integer.
  • Arg 2: boolean (optional).

Definition at line 4213 of file game_lua_kernel.cpp.

References game_display_, gamedata(), game_data::INITIAL, luaW_toboolean(), play_controller_, controller_base::play_slice(), game_data::PRELOAD, game_data::PRESTART, and display::turbo_speed().

Referenced by intf_scroll().

◆ intf_deselect_hex()

int game_lua_kernel::intf_deselect_hex ( lua_State *  L)
private

Deselects any highlighted hex on the map.

No arguments or return values

Definition at line 3376 of file game_lua_kernel.cpp.

References game_display_, game_display::highlight_hex(), and map_location::null_location().

◆ intf_end_turn()

int game_lua_kernel::intf_end_turn ( lua_State *  L)
private

◆ intf_erase_unit()

int game_lua_kernel::intf_erase_unit ( lua_State *  L)
private

◆ intf_extract_unit()

int game_lua_kernel::intf_extract_unit ( lua_State *  L)
private

Extracts a unit from the map or a recall list and gives it to Lua.

  • Arg 1: unit userdata.

Definition at line 2686 of file game_lua_kernel.cpp.

References board(), unit_map::extract(), game_board::get_team(), luaW_checkunit_ref(), map_locked_, t, and units().

◆ intf_find_cost_map()

int game_lua_kernel::intf_find_cost_map ( lua_State *  L)
private

Is called with one or more units and builds a cost map.

  • Arg 1: source location. (Or Arg 1: unit. Or Arg 1: table containing a filter)
  • Arg 2: optional array of tables with 4 elements (coordinates + side + unit type string)
  • Arg 3: optional table (optional fields: ignore_units, ignore_teleport, viewing_side, debug).
  • Arg 4: optional table: standard location filter.
  • Ret 1: array of triples (coordinates + array of tuples(summed cost + reach counter)).

Definition at line 2130 of file game_lua_kernel.cpp.

References pathfind::full_cost_map::add_unit(), board(), map_labels::clear_all(), debug, fake_unit_manager::empty(), resources::fake_units, unit_type_data::find(), unit_map::find(), game_display_, game_state_, pathfind::full_cost_map::get_pair_at(), game_board::get_team(), i, display::labels(), load_fake_units(), luaW_checklocation(), luaW_push_namedtuple(), luaW_toboolean(), luaW_tounit(), luaW_tovconfig(), vconfig::null(), s, map_labels::set_label(), utf8::size(), teams(), game_board::teams(), vconfig::unconstructed_vconfig(), unit_types, units(), and unit_map::iterator_base< iter_types >::valid().

◆ intf_find_path()

int game_lua_kernel::intf_find_path ( lua_State *  L)
private

Finds a path between two locations.

  • Arg 1: source location. (Or Arg 1: unit.)
  • Arg 2: destination.
  • Arg 3: optional cost function or table (optional fields: ignore_units, ignore_teleport, max_cost, viewing_side).
  • Ret 1: array of pairs containing path steps.
  • Ret 2: path cost.

Definition at line 1836 of file game_lua_kernel.cpp.

References pathfind::a_star_search(), board(), deprecated_message(), unit_map::find(), FOR_REMOVAL, unit::get_location(), unit_map::iterator_base< iter_types >::get_shared_ptr(), pathfind::get_teleport_locations(), gamemap_base::h(), i, luaW_checklocation(), luaW_checkunit(), luaW_pushlocation(), map(), game_board::map(), pathfind::plain_route::move_cost, unit::side(), utf8::size(), pathfind::plain_route::steps, teams(), units(), unit_map::iterator_base< iter_types >::valid(), and gamemap_base::w().

◆ intf_find_reach()

int game_lua_kernel::intf_find_reach ( lua_State *  L)
private

Finds all the locations reachable by a unit.

  • Arg 1: source location OR unit.
  • Arg 2: optional table (optional fields: ignore_units, ignore_teleport, additional_turns, viewing_side).
  • Ret 1: array of triples (coordinates + remaining movement).

Definition at line 1951 of file game_lua_kernel.cpp.

References board(), deprecated_message(), pathfind::paths::destinations, unit_map::find(), FOR_REMOVAL, unit_map::iterator_base< iter_types >::get_shared_ptr(), game_board::get_team(), i, luaW_checklocation(), luaW_checkunit(), luaW_push_namedtuple(), s, unit::side(), utf8::size(), teams(), units(), and unit_map::iterator_base< iter_types >::valid().

◆ intf_find_vacant_tile()

int game_lua_kernel::intf_find_vacant_tile ( lua_State *  L)
private

Finds a vacant tile.

  • Arg 1: location.
  • Arg 2: optional unit for checking movement type.
  • Rets 1,2: location.

Definition at line 2718 of file game_lua_kernel.cpp.

References unit::create(), pathfind::find_vacant_tile(), luaW_checkconfig(), luaW_checklocation(), luaW_checkunit_ptr(), luaW_isunit(), pathfind::VACANT_ANY, map_location::valid(), map_location::wml_x(), and map_location::wml_y().

◆ intf_find_vision_range()

int game_lua_kernel::intf_find_vision_range ( lua_State *  L)
private

Finds all the locations for which a given unit would remove the fog (if there was fog on the map).

  • Arg 1: source location OR unit.
  • Ret 1: array of triples (coordinates + remaining vision points).

Definition at line 2026 of file game_lua_kernel.cpp.

References actions::create_jamming_map(), d, pathfind::paths::destinations, e, pathfind::vision_path::edges, unit_map::find(), resources::gameboard, unit::get_location(), unit_map::iterator_base< iter_types >::get_shared_ptr(), luaW_checklocation(), luaW_checkunit(), luaW_push_namedtuple(), unit::side(), units(), and unit_map::iterator_base< iter_types >::valid().

◆ intf_fire_event()

int game_lua_kernel::intf_fire_event ( lua_State *  L,
const bool  by_id 
)
private

Fires an event.

  • Arg 1: string containing the event name or id.
  • Arg 2: optional first location.
  • Arg 3: optional second location.
  • Arg 4: optional WML table used used as the event data Typically this contains [first] as the [weapon] tag and [second] as the [second_weapon] tag.
  • Ret 1: boolean indicating whether the event was processed or not.

Definition at line 613 of file game_lua_kernel.cpp.

References b, data, game_events::wml_event_pump::fire(), luaW_toconfig(), luaW_tolocation(), play_controller_, and play_controller::pump().

◆ intf_fire_wml_menu_item()

int game_lua_kernel::intf_fire_wml_menu_item ( lua_State *  L)
private

Fires a wml menu item.

  • Arg 1: id of the item. it is not possible to fire items that don't have ids with this function.
  • Arg 2: optional first location.
  • Ret 1: boolean, true indicating that the event was fired successfully

NOTE: This is not an "official" feature, it may currently cause assertion failures if used with menu items which have "needs_select". It is not supported right now to use it this way. The purpose of this function right now is to make it possible to have automated sanity tests for the wml menu items system.

Definition at line 665 of file game_lua_kernel.cpp.

References b, game_events::wmi_manager::fire_item(), game_state_, gamedata(), game_state::get_wml_menu_items(), luaW_checklocation(), and units().

◆ intf_float_label()

int game_lua_kernel::intf_float_label ( lua_State *  L)
private

Floats some text on the map.

  • Arg 1: location.
  • Arg 2: string.
  • Arg 3: color.

Definition at line 2747 of file game_lua_kernel.cpp.

References game_display::float_label(), color_t::from_rgb_string(), game_display_, font::LABEL_COLOR, luaW_checklocation(), and luaW_checktstring().

◆ intf_gamestate_inspector()

int game_lua_kernel::intf_gamestate_inspector ( lua_State *  L)
private

◆ intf_get_achievement()

int game_lua_kernel::intf_get_achievement ( lua_State *  L)
private

Returns information on a single achievement, or no data if the achievement is not found.

  • Arg 1: string - content_for.
  • Arg 2: string - id.
  • Ret 1: WML table returned by the function.

Definition at line 3145 of file game_lua_kernel.cpp.

References config::add_child(), ERR_LUA, game_config_manager::get(), and luaW_pushconfig().

◆ intf_get_all_vars()

int game_lua_kernel::intf_get_all_vars ( lua_State *  L)
private

Gets all the WML variables currently set.

  • Ret 1: WML table

Definition at line 4729 of file game_lua_kernel.cpp.

References gamedata(), and luaW_pushconfig().

◆ intf_get_color_adjust()

int game_lua_kernel::intf_get_color_adjust ( lua_State *  L)
private

Definition at line 4183 of file game_lua_kernel.cpp.

References game_display_, and display::get_color_overlay().

◆ intf_get_displayed_unit()

int game_lua_kernel::intf_get_displayed_unit ( lua_State *  L)
private

Gets the unit displayed in the sidebar.

  • Ret 1: full userdata with __index pointing to impl_unit_get and __newindex pointing to impl_unit_set.

Definition at line 462 of file game_lua_kernel.cpp.

References board(), game_display::displayed_unit_hex(), game_board::find_visible_unit(), game_display_, luaW_pushunit(), display::show_everything(), teams(), unit_map::iterator_base< iter_types >::valid(), and display::viewing_team().

◆ intf_get_fog_or_shroud()

int game_lua_kernel::intf_get_fog_or_shroud ( lua_State *  L,
bool  fog 
)
private

◆ intf_get_label()

int game_lua_kernel::intf_get_label ( lua_State *  L)
private

◆ intf_get_locations()

int game_lua_kernel::intf_get_locations ( lua_State *  L)
private

Gets all the locations matching a given filter.

  • Arg 1: WML table.
  • Arg 2: Optional reference unit (teleport_unit)
  • Ret 1: array of integer pairs.

Definition at line 3560 of file game_lua_kernel.cpp.

References game_state_, luaW_checkvconfig(), luaW_isunit(), luaW_push_locationset(), and luaW_tounit().

◆ intf_get_mouseover_tile()

int game_lua_kernel::intf_get_mouseover_tile ( lua_State *  L)
private

Returns the currently overed tile.

  • Ret 1: x.
  • Ret 2: y.

Definition at line 1197 of file game_lua_kernel.cpp.

References board(), game_display_, map(), display::mouseover_hex(), map_location::wml_x(), and map_location::wml_y().

◆ intf_get_recall_units()

int game_lua_kernel::intf_get_recall_units ( lua_State *  L)
private

Gets the numeric ids of all the units matching a given filter on the recall lists.

  • Arg 1: optional table containing a filter
  • Ret 1: table containing full userdata with __index pointing to impl_unit_get and __newindex pointing to impl_unit_set.

Definition at line 575 of file game_lua_kernel.cpp.

References i, luaW_checkvconfig(), luaW_pushunit(), vconfig::null(), s, t, and teams().

◆ intf_get_selected_tile()

int game_lua_kernel::intf_get_selected_tile ( lua_State *  L)
private

Returns the currently selected tile.

  • Ret 1: x.
  • Ret 2: y.

Definition at line 1215 of file game_lua_kernel.cpp.

References board(), game_display_, map(), display::selected_hex(), map_location::wml_x(), and map_location::wml_y().

◆ intf_get_side()

int game_lua_kernel::intf_get_side ( lua_State *  L)
private

Definition at line 3742 of file game_lua_kernel.cpp.

References board(), i, luaW_pushteam(), utf8::size(), and teams().

◆ intf_get_sides()

int game_lua_kernel::intf_get_sides ( lua_State *  L)
private

Returns a proxy table array for all sides matching the given SSF.

  • Arg 1: SSF
  • Ret 1: proxy table array

Definition at line 3755 of file game_lua_kernel.cpp.

References board(), game_state_, side_filter::get_teams(), utf8::index(), LOG_LUA, luaW_checkvconfig(), luaW_pushteam(), my_name(), vconfig::null(), and teams().

◆ intf_get_time_area()

int game_lua_kernel::intf_get_time_area ( lua_State *  L)
private

◆ intf_get_time_of_day()

template<bool consider_illuminates>
int game_lua_kernel::intf_get_time_of_day ( lua_State *  L)
private

Gets time of day information.

  • Arg 1: schedule object, location, time area ID, or nil
  • Arg 2: optional turn number
  • Ret 1: table.

Definition at line 1075 of file game_lua_kernel.cpp.

References board(), tod_manager::get_area_by_id(), tod_manager::get_area_by_index(), tod_manager::get_illuminated_time_of_day(), tod_manager::get_time_of_day(), luaW_check_schedule(), luaW_push_tod(), luaW_tolocation(), map(), tod_manager::number_of_turns(), tod_man(), tod_manager::turn(), and units().

◆ intf_get_unit()

int game_lua_kernel::intf_get_unit ( lua_State *  L)
private

Gets the unit at the given location or with the given id.

  • Arg 1: location OR
  • Arg 1: string ID
  • Ret 1: full userdata with __index pointing to impl_unit_get and __newindex pointing to impl_unit_set.

Definition at line 433 of file game_lua_kernel.cpp.

References unit_map::find(), luaW_pushunit(), luaW_tolocation(), units(), and unit_map::iterator_base< iter_types >::valid().

◆ intf_get_units()

int game_lua_kernel::intf_get_units ( lua_State *  L)
private

Gets all the units matching a given filter.

  • Arg 1: optional table containing a filter
  • Arg 2: optional location (to find all units that would match on that location) OR unit (to find all units that would match adjacent to that unit)
  • Ret 1: table containing full userdata with __index pointing to impl_unit_get and __newindex pointing to impl_unit_set.

Definition at line 486 of file game_lua_kernel.cpp.

References unit_filter::all_matches_at(), unit_filter::all_matches_on_map(), unit_filter::all_matches_with_unit(), i, luaW_checkvconfig(), luaW_pushunit(), luaW_tolocation(), luaW_tounit(), units(), and map_location::valid().

◆ intf_get_variable()

int game_lua_kernel::intf_get_variable ( lua_State *  L)
private

Gets a WML variable.

  • Arg 1: string containing the variable name.
  • Arg 2: optional bool indicating if tables for containers should be left empty.
  • Ret 1: value of the variable, if any.

Definition at line 682 of file game_lua_kernel.cpp.

References gamedata(), game_data::get_variable_access_read(), and luaW_pushvariable().

◆ intf_get_village_owner()

int game_lua_kernel::intf_get_village_owner ( lua_State *  L)
private

Gets the side of a village owner.

  • Arg 1: map location.
  • Ret 1: integer.

Definition at line 1122 of file game_lua_kernel.cpp.

References board(), luaW_checklocation(), map(), and display_context::village_owner().

◆ intf_has_achievement()

int game_lua_kernel::intf_has_achievement ( lua_State *  L)
private

Returns whether an achievement has been completed.

  • Arg 1: string - content_for.
  • Arg 2: string - id.
  • Ret 1: boolean.

Definition at line 3124 of file game_lua_kernel.cpp.

References preferences::achievement(), resources::controller, ERR_LUA, and synced_context::is_synced().

◆ intf_has_sub_achievement()

int game_lua_kernel::intf_has_sub_achievement ( lua_State *  L)
private

Returns whether an achievement has been completed.

  • Arg 1: string - content_for.
  • Arg 2: string - achievement id.
  • Arg 3: string - sub-achievement id
  • Ret 1: boolean.

Definition at line 3255 of file game_lua_kernel.cpp.

References resources::controller, ERR_LUA, synced_context::is_synced(), and preferences::sub_achievement().

◆ intf_heal_unit()

int game_lua_kernel::intf_heal_unit ( lua_State *  L)
private

◆ intf_highlight_hex()

int game_lua_kernel::intf_highlight_hex ( lua_State *  L)
private

Highlights the given location on the map.

  • Arg 1: location.

Definition at line 798 of file game_lua_kernel.cpp.

References game_display::display_unit_hex(), game_display_, game_display::highlight_hex(), luaW_checklocation(), and map().

◆ intf_is_enemy()

int game_lua_kernel::intf_is_enemy ( lua_State *  L)
private

Returns whether the first side is an enemy of the second one.

  • Args 1,2: side numbers.
  • Ret 1: boolean.

Definition at line 817 of file game_lua_kernel.cpp.

References board(), luaW_toteam(), utf8::size(), t, and teams().

◆ intf_is_skipping_messages()

int game_lua_kernel::intf_is_skipping_messages ( lua_State *  L)
private

Return true if a replay is in progress but the player has chosen to skip it.

Definition at line 3388 of file game_lua_kernel.cpp.

References game_state::events_manager_, game_state_, play_controller::is_skipping_replay(), play_controller::is_skipping_story(), and play_controller_.

◆ intf_lock_view()

int game_lua_kernel::intf_lock_view ( lua_State *  L)
private

Sets whether gamemap scrolling is disabled for the user.

  • Arg 1: boolean, specifying the new locked/unlocked status.

Definition at line 853 of file game_lua_kernel.cpp.

References game_display_, luaW_toboolean(), and display::set_view_locked().

◆ intf_log()

int game_lua_kernel::intf_log ( lua_State *  L)
private

Logs a message Arg 1: (optional) Logger; "wml" for WML errors or deprecations Arg 2: Message Arg 3: Whether to print to chat (always true if arg 1 is "wml")

Definition at line 4799 of file game_lua_kernel.cpp.

References ERR_WML, game_state::events_manager_, game_state_, lg::log_to_chat(), luaW_toboolean(), and wfl::msg().

◆ intf_log_replay()

int game_lua_kernel::intf_log_replay ( lua_State *  L)
private

◆ intf_match_location()

int game_lua_kernel::intf_match_location ( lua_State *  L)
private

Matches a location against the given filter.

  • Arg 1: location.
  • Arg 2: WML table.
  • Arg 3: Optional reference unit (teleport_unit)
  • Ret 1: boolean.

Definition at line 3584 of file game_lua_kernel.cpp.

References game_state_, luaW_checklocation(), luaW_checkvconfig(), luaW_isunit(), luaW_tounit(), and vconfig::null().

◆ intf_match_side()

int game_lua_kernel::intf_match_side ( lua_State *  L)
private

Matches a side against the given filter.

  • Args 1: side number.
  • Arg 2: WML table.
  • Ret 1: boolean.

Definition at line 3612 of file game_lua_kernel.cpp.

References game_state_, luaW_checkvconfig(), luaW_toteam(), side_filter::match(), vconfig::null(), utf8::size(), t, and teams().

◆ intf_match_unit()

int game_lua_kernel::intf_match_unit ( lua_State *  L)
private

Matches a unit against the given filter.

  • Arg 1: full userdata.
  • Arg 2: table containing a filter
  • Arg 3: optional location OR optional "adjacent" unit
  • Ret 1: boolean.

Definition at line 529 of file game_lua_kernel.cpp.

References board(), unit::get_location(), game_board::get_team(), unit::id(), luaW_checkunit_ref(), luaW_checkvconfig(), luaW_tolocation(), luaW_tounit(), vconfig::null(), lua_unit::on_recall_list(), t, and WRN_LUA.

◆ intf_message()

int game_lua_kernel::intf_message ( lua_State *  L)
private

Displays a message in the chat window and in the logs.

  • Arg 1: optional message header.
  • Arg 2 (or 1): message.

Definition at line 1755 of file game_lua_kernel.cpp.

References h, LOG_LUA, lua_chat(), and luaW_checktstring().

◆ intf_modify_ai_wml()

int game_lua_kernel::intf_modify_ai_wml ( lua_State *  L)
private

◆ intf_move_floating_label()

int game_lua_kernel::intf_move_floating_label ( lua_State *  L)
private

◆ intf_override_shroud()

int game_lua_kernel::intf_override_shroud ( lua_State *  L)
private

Overrides the shroud entirely.

All locations are shrouded, except for the ones passed in as argument 2. Arg 1: Side number Arg 2: List of locations that should be unshrouded

Definition at line 773 of file game_lua_kernel.cpp.

References board(), game_display_, display::invalidate_all(), display::labels(), luaW_check_locationset(), luaW_checkteam(), luaW_type_error(), display::recalculate_minimap(), map_labels::recalculate_shroud(), and t.

◆ intf_play_sound()

int game_lua_kernel::intf_play_sound ( lua_State *  L)
private

Plays a sound, possibly repeated.

  • Arg 1: string.
  • Arg 2: optional integer.

Definition at line 3061 of file game_lua_kernel.cpp.

References play_controller::is_skipping_replay(), play_controller_, sound::play_sound(), and sound::SOUND_FX.

◆ intf_progress_achievement()

int game_lua_kernel::intf_progress_achievement ( lua_State *  L)
private

Progresses the provided achievement.

  • Arg 1: string - content_for.
  • Arg 2: string - achievement id.
  • Arg 3: int - the amount to progress the achievement.
  • Arg 4: int - the limit the achievement can progress by
  • Ret 1: int - the achievement's current progress after adding amount or -1 if not a progressable achievement (including if it's already achieved)
  • Ret 2: int - the achievement's max progress or -1 if not a progressable achievement

Definition at line 3201 of file game_lua_kernel.cpp.

References achievement::achieved_, achievement::current_progress_, ERR_LUA, game_config_manager::get(), achievement::id_, intf_set_achievement(), lua_push(), achievement::max_progress_, preferences::progress_achievement(), and achievement::sub_achievements_.

◆ intf_put_recall_unit()

int game_lua_kernel::intf_put_recall_unit ( lua_State *  L)
private

Puts a unit on a recall list.

  • Arg 1: WML table or unit.
  • Arg 2: (optional) side.

Definition at line 2637 of file game_lua_kernel.cpp.

References board(), unit::create(), unit_map::erase(), game_board::get_team(), luaW_checkconfig(), luaW_checkunit_ref(), luaW_isunit(), map_locked_, utf8::size(), t, teams(), units(), and resources::whiteboard.

◆ intf_put_unit()

int game_lua_kernel::intf_put_unit ( lua_State *  L)
private

Places a unit on the map.

  • Arg 1: (optional) location.
  • Arg 2: Unit (WML table or proxy), or nothing/nil to delete. OR
  • Arg 1: Unit (WML table or proxy)
  • Arg 2: (optional) location
  • Arg 3: (optional) boolean

Definition at line 2542 of file game_lua_kernel.cpp.

References unit::create(), unit_map::erase(), game_events::wml_event_pump::fire(), unit::get_location(), lua_unit::get_shared(), unit_map::insert(), luaW_checkconfig(), luaW_checkunit_ref(), luaW_isunit(), luaW_toboolean(), luaW_tolocation(), map(), map_locked_, lua_unit::on_map(), play_controller_, play_controller::pump(), lua_unit::put_map(), put_unit_helper(), map_location::set_wml_x(), map_location::set_wml_y(), units(), and map_location::valid().

◆ intf_redraw()

int game_lua_kernel::intf_redraw ( lua_State *  L)
private

◆ intf_remove_event()

int game_lua_kernel::intf_remove_event ( lua_State *  L)
private

Definition at line 4168 of file game_lua_kernel.cpp.

References game_state::events_manager_, and game_state_.

◆ intf_remove_floating_label()

int game_lua_kernel::intf_remove_floating_label ( lua_State *  L)
private

◆ intf_remove_label()

int game_lua_kernel::intf_remove_label ( lua_State *  L)
private

◆ intf_remove_tile_overlay()

int game_lua_kernel::intf_remove_tile_overlay ( lua_State *  L)
private

Removes an overlay from a tile.

  • Arg 1: location.
  • Arg 2: optional string.

Definition at line 3923 of file game_lua_kernel.cpp.

References game_display_, luaW_checklocation(), display::remove_overlay(), and display::remove_single_overlay().

◆ intf_remove_time_area()

int game_lua_kernel::intf_remove_time_area ( lua_State *  L)
private

Removing new time_areas dynamically with Standard Location Filters.

Definition at line 4587 of file game_lua_kernel.cpp.

References LOG_LUA, log_scope, tod_manager::remove_time_area(), and tod_man().

◆ intf_replace_schedule()

int game_lua_kernel::intf_replace_schedule ( lua_State *  l)
private

◆ intf_screen_fade()

int game_lua_kernel::intf_screen_fade ( lua_State *  L)
private

Definition at line 4195 of file game_lua_kernel.cpp.

References display::fade_to(), game_display_, and luaW_type_error().

◆ intf_scroll()

int game_lua_kernel::intf_scroll ( lua_State *  L)
private

Definition at line 4648 of file game_lua_kernel.cpp.

References game_display_, intf_delay(), lua_push(), and display::scroll().

◆ intf_scroll_to_tile()

int game_lua_kernel::intf_scroll_to_tile ( lua_State *  L)
private

Scrolls to given tile.

  • Arg 1: location.
  • Arg 2: boolean preventing scroll to fog.
  • Arg 3: boolean specifying whether to warp instantly.
  • Arg 4: boolean specifying whether to skip if already onscreen

Definition at line 3331 of file game_lua_kernel.cpp.

References game_display_, luaW_checklocation(), luaW_toboolean(), display::ONSCREEN, display::ONSCREEN_WARP, display::SCROLL, display::scroll_to_tile(), and display::WARP.

◆ intf_select_unit()

int game_lua_kernel::intf_select_unit ( lua_State *  L)
private

Selects and highlights the given location on the map.

  • Arg 1: location.
  • Args 2,3: booleans

Definition at line 3354 of file game_lua_kernel.cpp.

References gui2::event::implementation::fire_event(), play_controller::get_mouse_handler_base(), luaW_checklocation(), luaW_toboolean(), map(), map_location::null_location(), play_controller_, and events::mouse_handler::select_hex().

◆ intf_set_achievement()

int game_lua_kernel::intf_set_achievement ( lua_State *  L)
private

◆ intf_set_floating_label()

int game_lua_kernel::intf_set_floating_label ( lua_State *  L,
bool  spawn 
)
private

Arg 1: text - string Arg 2: options table.

  • size: font size
  • max_width: max width for word wrapping
  • color: font color
  • bgcolor: background color
  • bgalpha: background opacity
  • duration: display duration (integer or the string "unlimited")
  • fade_time: duration of fade-out
  • location: screen offset
  • valign: vertical alignment and anchoring - "top", "center", or "bottom"
  • halign: horizontal alignment and anchoring - "left", "center", or "right" Returns: label handle

Definition at line 2348 of file game_lua_kernel.cpp.

References font::add_floating_label(), ALPHA_OPAQUE, font::CENTER_ALIGN, color_t::from_hex_string(), game_display_, impl_floating_label_getmethod(), font::LABEL_COLOR, labelKey, font::LEFT_ALIGN, luaW_check_floating_label(), luaW_checklocation(), luaW_checktstring(), luaW_table_set(), luaW_tableget(), luaW_tostring(), display::map_outside_area(), preferences::options(), font::remove_floating_label(), font::RIGHT_ALIGN, font::floating_label::set_alignment(), font::floating_label::set_bg_color(), font::floating_label::set_clip_rect(), font::floating_label::set_color(), font::floating_label::set_font_size(), font::floating_label::set_lifetime(), font::floating_label::set_position(), utf8::size(), and font::SIZE_SMALL.

◆ intf_set_menu_item()

int game_lua_kernel::intf_set_menu_item ( lua_State *  L)
private

◆ intf_set_side_id()

int game_lua_kernel::intf_set_side_id ( lua_State *  L)
private

◆ intf_set_sub_achievement()

int game_lua_kernel::intf_set_sub_achievement ( lua_State *  L)
private

Marks a single sub-achievement as completed.

  • Arg 1: string - content_for.
  • Arg 2: string - achievement id.
  • Arg 3: string - sub-achievement id

Definition at line 3277 of file game_lua_kernel.cpp.

References sub_achievement::achieved_, achievement::achieved_, achievement::current_progress_, game_config_manager::get(), sub_achievement::id_, achievement::id_, intf_set_achievement(), lua_push(), achievement::max_progress_, preferences::set_sub_achievement(), and achievement::sub_achievements_.

◆ intf_set_variable()

int game_lua_kernel::intf_set_variable ( lua_State *  L)
private

Sets a WML variable.

  • Arg 1: string containing the variable name.
  • Arg 2: boolean/integer/string/table containing the value.

Definition at line 694 of file game_lua_kernel.cpp.

References game_data::clear_variable(), gamedata(), game_data::get_variable_access_write(), and luaW_checkvariable().

◆ intf_set_village_owner()

int game_lua_kernel::intf_set_village_owner ( lua_State *  L)
private

Sets the owner of a village.

  • Arg 1: map location.
  • Arg 2: integer for the side or empty to remove ownership.

Definition at line 1139 of file game_lua_kernel.cpp.

References board(), gamedata(), game_board::get_team(), team::get_village(), team::lose_village(), luaW_checklocation(), luaW_toboolean(), map(), and display_context::village_owner().

◆ intf_simulate_combat()

int game_lua_kernel::intf_simulate_combat ( lua_State *  L)
private

Simulates a combat between two units.

  • Arg 1: attacker userdata.
  • Arg 2: optional weapon index.
  • Arg 3: defender userdata.
  • Arg 4: optional weapon index.
  • Ret 1: attacker results.
  • Ret 2: defender results.
  • Ret 3: info about the attacker weapon.
  • Ret 4: info about the defender weapon.

Definition at line 3024 of file game_lua_kernel.cpp.

References battle_context::get_attacker_combatant(), battle_context::get_attacker_stats(), battle_context::get_defender_combatant(), battle_context::get_defender_stats(), luaW_checkunit(), luaW_pushsimdata(), luaW_pushsimweapon(), and units().

◆ intf_skip_messages()

int game_lua_kernel::intf_skip_messages ( lua_State *  L)
private

Set whether to skip messages Arg 1 (optional) - boolean.

Definition at line 3402 of file game_lua_kernel.cpp.

References game_state::events_manager_, game_state_, and luaW_toboolean().

◆ intf_teleport()

int game_lua_kernel::intf_teleport ( lua_State *  L)
private

◆ intf_toggle_fog()

int game_lua_kernel::intf_toggle_fog ( lua_State *  L,
const bool  clear 
)
private

Implements the lifting and resetting of fog via WML.

Keeping affect_normal_fog as false causes only the fog override to be affected. Otherwise, fog lifting will be implemented similar to normal sight (cannot be individually reset and ends at the end of the turn), and fog resetting will, in addition to removing overrides, extend the specified teams' normal fog to all hexes.

Arg 1: (optional) Side number, or list of side numbers Arg 2: List of locations; each is a two-element array or a table with x and y keys Arg 3: (optional) boolean

Definition at line 4834 of file game_lua_kernel.cpp.

References board(), draw::clear(), game_display_, game_board::get_team(), display::invalidate_all(), luaW_check_locationset(), luaW_toboolean(), luaW_toteam(), display::recalculate_minimap(), utf8::size(), t, and teams().

◆ intf_toggle_shroud()

int game_lua_kernel::intf_toggle_shroud ( lua_State *  L,
bool  place_shroud 
)
private

Toggle shroud on some locations Arg 1: Side number Arg 2: List of locations on which to place/remove shroud.

Definition at line 742 of file game_lua_kernel.cpp.

References board(), game_display_, display::invalidate_all(), display::labels(), luaW_check_locationset(), luaW_checkteam(), display::recalculate_minimap(), map_labels::recalculate_shroud(), and t.

◆ intf_unit_ability()

int game_lua_kernel::intf_unit_ability ( lua_State *  L)
private

Returns true if the unit has the given ability enabled.

  • Arg 1: unit userdata.
  • Arg 2: string.
  • Ret 1: boolean.

Definition at line 2907 of file game_lua_kernel.cpp.

References unit::get_ability_bool(), and luaW_checkunit().

◆ intf_view_locked()

int game_lua_kernel::intf_view_locked ( lua_State *  L)
private

Gets whether gamemap scrolling is disabled for the user.

  • Ret 1: boolean.

Definition at line 839 of file game_lua_kernel.cpp.

References game_display_, and display::view_locked().

◆ intf_zoom()

int game_lua_kernel::intf_zoom ( lua_State *  L)
private

◆ load_game()

void game_lua_kernel::load_game ( const config level)

Executes the game_events.on_load function and passes to it all the scenario tags not yet handled.

Definition at line 5463 of file game_lua_kernel.cpp.

References is_handled_file_tag(), game_config::images::level, luaW_getglobal(), luaW_pcall(), luaW_pushconfig(), and lua_kernel_base::mState.

◆ log_error()

void game_lua_kernel::log_error ( char const *  msg,
char const *  context = "Lua error" 
)
overridevirtual

Error reporting mechanisms, used by virtual methods protected_call and load_string.

Reimplemented from lua_kernel_base.

Definition at line 182 of file game_lua_kernel.cpp.

References lua_kernel_base::log_error(), lua_chat(), and wfl::msg().

Referenced by run_filter(), and save_game().

◆ lua_chat()

void game_lua_kernel::lua_chat ( const std::string &  caption,
const std::string &  msg 
)
private

◆ luaW_push_schedule()

void game_lua_kernel::luaW_push_schedule ( lua_State *  L,
int  area_index 
)
private

Definition at line 890 of file game_lua_kernel.cpp.

Referenced by impl_current_get(), and intf_get_time_area().

◆ map()

const gamemap & game_lua_kernel::map ( ) const

◆ mouse_button_callback()

bool game_lua_kernel::mouse_button_callback ( const map_location loc,
const std::string &  button,
const std::string &  event 
)

◆ mouse_over_hex_callback()

void game_lua_kernel::mouse_over_hex_callback ( const map_location loc)

◆ my_name()

virtual std::string game_lua_kernel::my_name ( )
inlineoverridevirtual

User-visible name of the lua kernel that they are talking to.

Reimplemented from lua_kernel_base.

Definition at line 212 of file game_lua_kernel.hpp.

Referenced by intf_get_sides().

◆ preload_finished()

void game_lua_kernel::preload_finished ( )
inline

Definition at line 275 of file game_lua_kernel.hpp.

References has_preloaded_.

◆ push_builtin_effect()

void game_lua_kernel::push_builtin_effect ( )

Registers a function for use as an effect handler.

Definition at line 5584 of file game_lua_kernel.cpp.

References lua_kernel_base::mState.

Referenced by game_lua_kernel().

◆ put_unit_helper()

void game_lua_kernel::put_unit_helper ( const map_location loc)
private

Definition at line 2524 of file game_lua_kernel.cpp.

References game_display_, display::invalidate(), and resources::whiteboard.

Referenced by intf_put_unit().

◆ run_event()

bool game_lua_kernel::run_event ( const game_events::queued_event ev)

Executes the game_events.on_event function.

Returns false if there was no lua handler for this event

Definition at line 5528 of file game_lua_kernel.cpp.

References luaW_getglobal(), luaW_pcall(), lua_kernel_base::mState, game_events::queued_event::name, and queued_events_.

Referenced by game_events::wml_event_pump::operator()().

◆ run_filter() [1/4]

bool game_lua_kernel::run_filter ( char const *  name,
const map_location l 
)

Runs a script from a location filter.

The script is an already compiled function given by its name.

Definition at line 5816 of file game_lua_kernel.cpp.

References lua_kernel_base::mState, run_filter(), map_location::wml_x(), and map_location::wml_y().

◆ run_filter() [2/4]

bool game_lua_kernel::run_filter ( char const *  name,
const team t 
)

Runs a script from a location filter.

The script is an already compiled function given by its name.

Definition at line 5827 of file game_lua_kernel.cpp.

References luaW_pushteam(), lua_kernel_base::mState, run_filter(), and t.

◆ run_filter() [3/4]

bool game_lua_kernel::run_filter ( char const *  name,
const unit u 
)

Runs a script from a unit filter.

The script is an already compiled function given by its name.

Definition at line 5838 of file game_lua_kernel.cpp.

References luaW_pushlocalunit(), and lua_kernel_base::mState.

Referenced by terrain_filter::match_internal(), side_filter::match_internal(), and run_filter().

◆ run_filter() [4/4]

bool game_lua_kernel::run_filter ( char const *  name,
int  nArgs 
)

Runs a script from a filter.

The script is an already compiled function given by its name.

Definition at line 5856 of file game_lua_kernel.cpp.

References b, log_error(), luaW_getglobal(), luaW_pcall(), luaW_toboolean(), lua_kernel_base::mState, game_config::path, utils::split(), and utils::STRIP_SPACES.

◆ run_wml_action()

bool game_lua_kernel::run_wml_action ( const std::string &  cmd,
const vconfig cfg,
const game_events::queued_event ev 
)

Runs a command from an event handler.

Returns
true if there is a handler for the command.
Note
cfg should be either volatile or long-lived since the Lua code may grab it for an arbitrary long time.

Definition at line 5674 of file game_lua_kernel.cpp.

References luaW_getglobal(), luaW_pcall(), luaW_pushvconfig(), lua_kernel_base::mState, and queued_events_.

◆ run_wml_conditional()

bool game_lua_kernel::run_wml_conditional ( const std::string &  cmd,
const vconfig cfg 
)

Evaluates a WML conidition.

Returns
Whether the condition passed.
Note
cfg should be either volatile or long-lived since the Lua code may grab it for an arbitrarily long time.

Definition at line 5697 of file game_lua_kernel.cpp.

References b, ERR_WML, lg::log_to_chat(), luaW_getglobal(), luaW_pcall(), luaW_pushvconfig(), luaW_toboolean(), and lua_kernel_base::mState.

◆ run_wml_event()

bool game_lua_kernel::run_wml_event ( int  ref,
const vconfig args,
const game_events::queued_event ev,
bool *  out = nullptr 
)

Run a WML stored in the Lua registry.

Parameters
refThe unique index into the EVENT_TABLE within the Lua registry
argsArguments to pass to the event function, as a config
evThe event data for the event being fired
outIf non-null, receives the result of the called function (provided it is a boolean value)
Returns
Whether the function was successfully called; could be false if ref was invalid or if the function raised an error

Definition at line 5790 of file game_lua_kernel.cpp.

References EVENT_TABLE, luaW_pcall(), luaW_pushvconfig(), luaW_toboolean(), lua_kernel_base::mState, ON_SCOPE_EXIT, and queued_events_.

Referenced by game_events::event_handler::handle_event(), and lua_event_filter::operator()().

◆ save_game()

void game_lua_kernel::save_game ( config cfg)

Executes the game_events.on_save function and adds to cfg the returned tags.

Also flushes the [lua] tags.

Definition at line 5490 of file game_lua_kernel.cpp.

References config::erase(), i, is_handled_file_tag(), log_error(), luaW_getglobal(), luaW_pcall(), luaW_toconfig(), lua_kernel_base::mState, config::ordered_begin(), config::ordered_end(), and config::splice_children().

◆ save_wml_event() [1/3]

int game_lua_kernel::save_wml_event ( )

Store a WML event in the Lua registry, as a function.

Uses a default function that interprets ActionWML.

Returns
A unique index into the EVENT_TABLE within the Lua registry

Definition at line 5732 of file game_lua_kernel.cpp.

References EVENT_TABLE, intf_run_event_wml(), lua_kernel_base::mState, and ON_SCOPE_EXIT.

Referenced by intf_add_event(), intf_add_event_simple(), intf_add_undo_actions(), lua_event_filter::lua_event_filter(), and game_events::event_handler::register_wml_event().

◆ save_wml_event() [2/3]

int game_lua_kernel::save_wml_event ( const std::string &  name,
const std::string &  id,
const std::string &  code 
)

Store a WML event in the Lua registry, as a function.

Compiles the function from the given code.

Parameters
nameThe event name, used to generate a chunk name for the compiled function
idThe event id, used to generate a chunk name for the compiled function
codeThe actual code of the function
Returns
A unique index into the EVENT_TABLE within the Lua registry

Definition at line 5744 of file game_lua_kernel.cpp.

References ERR_LUA, EVENT_TABLE, lua_kernel_base::load_string(), lua_kernel_base::mState, and ON_SCOPE_EXIT.

◆ save_wml_event() [3/3]

int game_lua_kernel::save_wml_event ( int  idx)

Store a WML event in the Lua registry, as a function.

Uses the function at the specified Lua stack index.

Parameters
idxThe Lua stack index of the function to store
Returns
A unique index into the EVENT_TABLE within the Lua registry

Definition at line 5769 of file game_lua_kernel.cpp.

References EVENT_TABLE, lua_kernel_base::mState, and ON_SCOPE_EXIT.

◆ select_hex_callback()

void game_lua_kernel::select_hex_callback ( const map_location loc)

◆ set_game_display()

void game_lua_kernel::set_game_display ( game_display gd)

Definition at line 5416 of file game_lua_kernel.cpp.

References game_display_.

◆ set_wml_action()

void game_lua_kernel::set_wml_action ( const std::string &  cmd,
game_events::wml_action::handler  h 
)

Registers a function for use as an action handler.

Definition at line 5622 of file game_lua_kernel.cpp.

References h, and lua_kernel_base::mState.

Referenced by game_lua_kernel().

◆ set_wml_condition()

void game_lua_kernel::set_wml_condition ( const std::string &  ,
bool(*)(const vconfig &)   
)

Registers a function for use as a conditional handler.

Definition at line 5654 of file game_lua_kernel.cpp.

References cfun_wml_condition(), h, and lua_kernel_base::mState.

Referenced by game_lua_kernel().

◆ synced_state()

std::string game_lua_kernel::synced_state ( )
private

◆ teams()

std::vector< team > & game_lua_kernel::teams ( )

◆ tod_man()

tod_manager & game_lua_kernel::tod_man ( )
private

◆ units()

unit_map & game_lua_kernel::units ( )
private

Friends And Related Function Documentation

◆ game_config_manager

friend class game_config_manager
friend

Definition at line 70 of file game_lua_kernel.hpp.

Member Data Documentation

◆ EVENT_TABLE

int game_lua_kernel::EVENT_TABLE
private

◆ game_display_

game_display* game_lua_kernel::game_display_
private

◆ game_state_

game_state& game_lua_kernel::game_state_
private

◆ has_preloaded_

bool game_lua_kernel::has_preloaded_ = false
private

Definition at line 60 of file game_lua_kernel.hpp.

Referenced by intf_add_event(), intf_add_event_simple(), and preload_finished().

◆ level_lua_

config game_lua_kernel::level_lua_
private

Definition at line 58 of file game_lua_kernel.hpp.

Referenced by initialize().

◆ map_locked_

int game_lua_kernel::map_locked_

A value != 0 means that the shouldn't remove any units from the map, usually because we are currently operating on a unit& and removing it might cause memory corruptions note that we don't check for the dtor of lua owned units because we assume that we operate on such a unit that the lua function that invoked the operation on that unit (like wesnoth.units.add_modification, wesnoth.units.matches ..) have a local copy of that lua_unit* userdata in its stack that prevents it from being collected.

Definition at line 207 of file game_lua_kernel.hpp.

Referenced by intf_erase_unit(), intf_extract_unit(), intf_put_recall_unit(), intf_put_unit(), map_locker::map_locker(), and map_locker::~map_locker().

◆ play_controller_

play_controller& game_lua_kernel::play_controller_
private

◆ preload_config

config game_lua_kernel::preload_config
staticprivate

Definition at line 68 of file game_lua_kernel.hpp.

Referenced by extract_preload_scripts(), and initialize().

◆ preload_scripts

std::vector< config > game_lua_kernel::preload_scripts
staticprivate

Definition at line 67 of file game_lua_kernel.hpp.

Referenced by extract_preload_scripts(), and initialize().

◆ queued_events_

std::stack<game_events::queued_event const * > game_lua_kernel::queued_events_
private

◆ reports_

reports& game_lua_kernel::reports_
private

Definition at line 51 of file game_lua_kernel.hpp.

Referenced by impl_theme_item(), impl_theme_items_get(), and impl_theme_items_set().


The documentation for this class was generated from the following files: