11 #include "../api_class.h" 12 #include "../api_function.h" 13 #include "../../world/simcity.h" 14 #include "../../tool/simmenu.h" 15 #include "../../world/simworld.h" 16 #include "../../dataobj/scenario.h" 18 using namespace script_api;
21 vector_tpl<sint64>
const& get_city_stat(stadt_t* city,
bool monthly, sint32 INDEX)
23 static vector_tpl<sint64> v;
25 if (city && 0<=INDEX && INDEX<MAX_CITY_HISTORY) {
26 uint16 maxi = monthly ? MAX_CITY_HISTORY_MONTHS :MAX_CITY_HISTORY_YEARS;
27 for(uint16 i = 0; i < maxi; i++) {
29 v.append( city->get_finance_history_month(i, INDEX) );
32 v.append( city->get_finance_history_year(i, INDEX) );
40 SQInteger world_get_next_city(HSQUIRRELVM vm)
42 return generic_get_next(vm, welt->get_cities().get_count());
45 namespace script_api {
46 declare_fake_param(city_list_t,
"city_list_x");
49 stadt_t* world_get_city_by_index(city_list_t, uint32 index)
51 return index < welt->get_cities().get_count() ? welt->get_cities()[index] : NULL;
54 call_tool_init set_citygrowth(stadt_t *city,
bool allow)
57 buf.printf(
"g%hi,%hi,%hi", city->get_pos().x, city->get_pos().y, (short)allow );
58 return call_tool_init(TOOL_CHANGE_CITY | SIMPLE_TOOL, (
const char*)buf, 0, welt->get_public_player());
61 call_tool_init city_set_name(stadt_t* city,
const char* name)
63 return command_rename(welt->get_public_player(),
't', welt->get_cities().index_of(city), name);
67 call_tool_work city_change_size(stadt_t *city, sint32 delta)
70 buf.printf(
"%i", delta);
71 grund_t *gr = welt->lookup_kartenboden(city->get_pos());
73 return call_tool_work(TOOL_CHANGE_CITY_SIZE | GENERAL_TOOL, (
const char*)buf, 0, welt->get_public_player(), gr->get_pos());
76 return "Invalid coordinate.";
81 void export_city(HSQUIRRELVM vm)
94 begin_class(vm,
"city_list_x", 0);
98 register_function(vm, world_get_next_city,
"_nexti", 2,
"x o|i");
102 register_method(vm, &world_get_city_by_index,
"_get",
true);
108 begin_class(vm,
"city_x",
"coord,extend_get,ingame_object");
122 export_is_valid<stadt_t*>(vm);
127 register_method(vm, &stadt_t::get_name,
"get_name");
132 register_method(vm, &city_set_name,
"set_name",
true);
137 register_method_fv(vm, &get_city_stat,
"get_citizens", freevariable<bool,sint32>(
true, HIST_CITIZENS),
true);
142 register_method_fv(vm, &get_city_stat,
"get_growth", freevariable<bool,sint32>(
true, HIST_GROWTH),
true );
147 register_method_fv(vm, &get_city_stat,
"get_buildings", freevariable<bool,sint32>(
true, HIST_BUILDING),
true );
152 register_method_fv(vm, &get_city_stat,
"get_citycars", freevariable<bool,sint32>(
true, HIST_CITYCARS),
true );
157 register_method_fv(vm, &get_city_stat,
"get_transported_pax", freevariable<bool,sint32>(
true, HIST_PAS_TRANSPORTED),
true );
162 register_method_fv(vm, &get_city_stat,
"get_generated_pax", freevariable<bool,sint32>(
true, HIST_PAS_GENERATED),
true );
167 register_method_fv(vm, &get_city_stat,
"get_transported_mail", freevariable<bool,sint32>(
true, HIST_MAIL_TRANSPORTED),
true );
172 register_method_fv(vm, &get_city_stat,
"get_generated_mail", freevariable<bool,sint32>(
true, HIST_MAIL_GENERATED),
true );
177 register_method_fv(vm, &get_city_stat,
"get_year_citizens", freevariable<bool,sint32>(
false, HIST_CITIZENS),
true );
182 register_method_fv(vm, &get_city_stat,
"get_year_growth", freevariable<bool,sint32>(
false, HIST_GROWTH),
true );
187 register_method_fv(vm, &get_city_stat,
"get_year_buildings", freevariable<bool,sint32>(
false, HIST_BUILDING),
true );
192 register_method_fv(vm, &get_city_stat,
"get_year_citycars", freevariable<bool,sint32>(
false, HIST_CITYCARS),
true );
197 register_method_fv(vm, &get_city_stat,
"get_year_transported_pax", freevariable<bool,sint32>(
false, HIST_PAS_TRANSPORTED),
true );
202 register_method_fv(vm, &get_city_stat,
"get_year_generated_pax", freevariable<bool,sint32>(
false, HIST_PAS_GENERATED),
true );
207 register_method_fv(vm, &get_city_stat,
"get_year_transported_mail", freevariable<bool,sint32>(
false, HIST_MAIL_TRANSPORTED),
true );
212 register_method_fv(vm, &get_city_stat,
"get_year_generated_mail", freevariable<bool,sint32>(
false, HIST_MAIL_GENERATED),
true );
218 register_method(vm, &stadt_t::get_citygrowth,
"get_citygrowth_enabled");
224 register_method(vm, &stadt_t::get_pos,
"get_pos");
234 register_method(vm, &stadt_t::get_linksoben,
"get_pos_nw");
244 register_method(vm, &stadt_t::get_rechtsunten,
"get_pos_se");
251 register_method(vm, city_change_size,
"change_size",
true);
257 register_method(vm, &set_citygrowth,
"set_citygrowth_enabled",
true);