Bug #493 ยป 0060-Lua-Don-t-expose-internal-tech-cost-and-leakage-ids.patch
| common/scriptcore/api_game_methods.c | ||
|---|---|---|
|
return game.control.name;
|
||
|
}
|
||
|
/**********************************************************************//**
|
||
|
Return name of the current tech cost style
|
||
|
**************************************************************************/
|
||
|
const char *api_methods_tech_cost_style(lua_State *L)
|
||
|
{
|
||
|
return tech_cost_style_name(game.info.tech_cost_style);
|
||
|
}
|
||
|
/**********************************************************************//**
|
||
|
Return name of the current tech leakage style
|
||
|
**************************************************************************/
|
||
|
const char *api_methods_tech_leakage_style(lua_State *L)
|
||
|
{
|
||
|
return tech_leakage_style_name(game.info.tech_leakage);
|
||
|
}
|
||
|
/**********************************************************************//**
|
||
|
Return TRUE if pbuilding is a wonder.
|
||
|
**************************************************************************/
|
||
| common/scriptcore/api_game_methods.h | ||
|---|---|---|
|
const char *api_methods_game_rulesetdir(lua_State *L);
|
||
|
const char *api_methods_game_ruleset_name(lua_State *L);
|
||
|
const char *api_methods_tech_cost_style(lua_State *L);
|
||
|
const char *api_methods_tech_leakage_style(lua_State *L);
|
||
|
/* Building Type */
|
||
|
bool api_methods_building_type_is_wonder(lua_State *L,
|
||
|
Building_Type *pbuilding);
|
||
| common/scriptcore/api_game_specenum.c | ||
|---|---|---|
|
Define the __index function for each exported specenum type.
|
||
|
**************************************************************************/
|
||
|
API_SPECENUM_DEFINE_INDEX(event_type, "E_")
|
||
|
API_SPECENUM_DEFINE_INDEX_REV(tech_cost_style);
|
||
|
API_SPECENUM_DEFINE_INDEX_REV(tech_leakage_style);
|
||
|
/**********************************************************************//**
|
||
|
Load the specenum modules into Lua state L.
|
||
| ... | ... | |
|
int api_game_specenum_open(lua_State *L)
|
||
|
{
|
||
|
API_SPECENUM_CREATE_TABLE(L, event_type, "E");
|
||
|
API_SPECENUM_CREATE_TABLE_REV(L, tech_cost_style, "TECH_COST");
|
||
|
API_SPECENUM_CREATE_TABLE_REV(L, tech_leakage_style, "TECH_LEAKAGE");
|
||
|
return 0;
|
||
|
}
|
||
| common/scriptcore/tolua_game.pkg | ||
|---|---|---|
|
const bool tech_parasite_allow_holes;
|
||
|
const bool tech_loss_allow_holes;
|
||
|
const int sciencebox;
|
||
|
const char tech_cost_style @ tech_cost_style_id;
|
||
|
const char tech_leakage @ tech_leakage_style_id;
|
||
|
};
|
||
|
/* Module Game */
|
||
| ... | ... | |
|
const char *api_methods_game_ruleset_name
|
||
|
@ ruleset_name (lua_State *L);
|
||
|
const char *api_methods_tech_cost_style
|
||
|
@ tech_cost_style (lua_State *L);
|
||
|
const char *api_methods_tech_leakage_style
|
||
|
@ tech_leakage_style (lua_State *L);
|
||
|
}
|
||
|
module Counter {
|
||
| ... | ... | |
|
}
|
||
|
$[
|
||
|
-- Getting enums from game.info as rule names
|
||
|
-- The tables are defined and filled in api_game_specenum.c
|
||
|
local tcs, tls = TECH_COST, TECH_LEAKAGE
|
||
|
-- Remove the tables from _G, likely no more use for them
|
||
|
TECH_COST, TECH_LEAKAGE = nil, nil
|
||
|
Game_Info.properties = {
|
||
|
tech_cost_style = function(self)
|
||
|
return tcs[self.tech_cost_style_id];
|
||
|
end,
|
||
|
tech_leakage_style = function(self)
|
||
|
return tls[self.tech_leakage_style_id];
|
||
|
end
|
||
|
}
|
||
|
-- ***************************************************************************
|
||
|
-- Player and Tile: cities_iterate and units_iterate methods
|
||