10 #include "../api_class.h" 11 #include "../api_function.h" 12 #include "../../player/simplay.h" 13 #include "../../player/finance.h" 16 #include "../../simline.h" 17 #include "../../tool/simmenu.h" 18 #include "../../world/simworld.h" 21 using namespace script_api;
23 vector_tpl<sint64>
const& get_player_stat(player_t *player, sint32 INDEX, sint32 TTYPE,
bool monthly)
25 static vector_tpl<sint64> v;
28 if (TTYPE<0 || TTYPE>=TT_MAX) {
29 if (INDEX<0 || INDEX>ATC_MAX) {
34 if (INDEX<0 || INDEX>ATV_MAX) {
40 finance_t *finance = player->get_finance();
42 finance->calc_finance_history();
43 uint16 maxi = monthly ? MAX_PLAYER_HISTORY_MONTHS : MAX_PLAYER_HISTORY_YEARS;
44 for(uint16 i = 0; i < maxi; i++) {
45 sint64 m = atv ? ( monthly ? finance->get_history_veh_month((transport_type)TTYPE, i, INDEX) : finance->get_history_veh_year((transport_type)TTYPE, i, INDEX) )
46 : ( monthly ? finance->get_history_com_month(i, INDEX) : finance->get_history_com_year(i, INDEX) );
48 if (INDEX != ATV_TRANSPORTED_PASSENGER && INDEX != ATV_TRANSPORTED_MAIL && INDEX != ATV_TRANSPORTED_GOOD && INDEX !=ATV_TRANSPORTED) {
53 if (INDEX != ATC_ALL_CONVOIS) {
65 namespace script_api {
66 declare_specialized_param(finance_t*, param<player_t*>::typemask(), param<player_t*>::squirrel_type());
68 finance_t* param<finance_t*>::get(HSQUIRRELVM vm, SQInteger index)
70 player_t *player = param<player_t*>::get(vm, index);
71 return player ? player->get_finance() : NULL;
75 namespace script_api {
76 declare_specialized_param(transport_type,
"i",
"integer");
78 transport_type param<transport_type>::get(HSQUIRRELVM vm, SQInteger index)
80 return (transport_type) min(param<uint16>::get(vm, index), TT_MAX-1);
85 SQInteger player_export_line_list(HSQUIRRELVM vm)
87 if (player_t* player = param<player_t*>::get(vm, 1)) {
88 push_instance(vm,
"line_list_x");
89 set_slot(vm,
"player_id", player->get_player_nr());
95 call_tool_init player_create_line(player_t *player, waytype_t wt)
97 simline_t::linetype lt = simline_t::waytype_to_linetype(wt);
98 if (lt == simline_t::MAX_LINE_TYPE) {
99 return "Invalid waytype provided";
103 buf.printf(
"c,0,%i,0,0|%i|", lt, lt);
104 return call_tool_init(TOOL_CHANGE_LINE | SIMPLE_TOOL, buf, 0, player);
107 call_tool_init player_book_account(player_t *player, sint32 delta)
111 buf.printf(
"$,%i,%i", player->get_player_nr(), delta);
112 return call_tool_init(TOOL_CHANGE_PLAYER | SIMPLE_TOOL, buf, 0, welt->get_public_player());
115 SQInteger player_get_my_player(HSQUIRRELVM vm)
117 return script_api::param<player_t*>::push(vm, get_my_player(vm) );
120 call_tool_init player_set_name(player_t *player,
const char* name)
122 return script_api::command_rename(player,
'p', player->get_player_nr(), name);
125 void export_player(HSQUIRRELVM vm,
bool scenario)
131 begin_class(vm,
"player_x",
"extend_get,ingame_object");
144 export_is_valid<player_t*>(vm);
153 STATIC register_function(vm, &player_get_my_player,
"self", 0,
"",
true);
159 register_method(vm, &player_t::get_headquarter_level,
"get_headquarter_level");
164 register_method(vm, &player_t::get_headquarter_pos,
"get_headquarter_pos");
169 register_method(vm, &player_t::get_name,
"get_name");
175 register_method(vm, &player_set_name,
"set_name",
true);
180 register_method_fv(vm, &get_player_stat,
"get_construction", freevariable<sint32,sint32,bool>(ATV_CONSTRUCTION_COST, TT_ALL,
true),
true);
185 register_method_fv(vm, &get_player_stat,
"get_vehicle_maint", freevariable<sint32,sint32,bool>(ATV_RUNNING_COST, TT_ALL,
true),
true);
190 register_method_fv(vm, &get_player_stat,
"get_new_vehicles", freevariable<sint32,sint32,bool>(ATV_NEW_VEHICLE, TT_ALL,
true),
true);
195 register_method_fv(vm, &get_player_stat,
"get_income", freevariable<sint32,sint32,bool>(ATV_REVENUE_TRANSPORT, TT_ALL,
true),
true);
200 register_method_fv(vm, &get_player_stat,
"get_maintenance", freevariable<sint32,sint32,bool>(ATV_INFRASTRUCTURE_MAINTENANCE, TT_ALL,
true),
true);
205 register_method_fv(vm, &get_player_stat,
"get_assets", freevariable<sint32,sint32,bool>(ATV_NON_FINANCIAL_ASSETS, TT_ALL,
true),
true);
210 register_method_fv(vm, &get_player_stat,
"get_cash", freevariable<sint32,sint32,bool>(ATC_CASH, -1,
true),
true);
215 register_method_fv(vm, &get_player_stat,
"get_net_wealth", freevariable<sint32,sint32,bool>(ATC_NETWEALTH, -1,
true),
true);
220 register_method_fv(vm, &get_player_stat,
"get_profit", freevariable<sint32,sint32,bool>(ATV_PROFIT, TT_ALL,
true),
true);
225 register_method_fv(vm, &get_player_stat,
"get_operating_profit", freevariable<sint32,sint32,bool>(ATV_OPERATING_PROFIT, TT_ALL,
true),
true);
230 register_method_fv(vm, &get_player_stat,
"get_margin", freevariable<sint32,sint32,bool>(ATV_PROFIT_MARGIN, -1,
true),
true);
235 register_method_fv(vm, &get_player_stat,
"get_transported", freevariable<sint32,sint32,bool>(ATV_TRANSPORTED, TT_ALL,
true),
true);
240 register_method_fv(vm, &get_player_stat,
"get_powerline", freevariable<sint32,sint32,bool>(ATV_REVENUE, TT_POWERLINE,
true),
true);
245 register_method_fv(vm, &get_player_stat,
"get_transported_pax", freevariable<sint32,sint32,bool>(ATV_TRANSPORTED_PASSENGER, TT_ALL,
true),
true);
250 register_method_fv(vm, &get_player_stat,
"get_transported_mail", freevariable<sint32,sint32,bool>(ATV_TRANSPORTED_MAIL, TT_ALL,
true),
true);
255 register_method_fv(vm, &get_player_stat,
"get_transported_goods", freevariable<sint32,sint32,bool>(ATV_TRANSPORTED_GOOD, TT_ALL,
true),
true);
260 register_method_fv(vm, &get_player_stat,
"get_convoys", freevariable<sint32,sint32,bool>(ATC_ALL_CONVOIS, -1,
true),
true);
265 register_method_fv(vm, &get_player_stat,
"get_way_tolls", freevariable<sint32,sint32,bool>(ATV_WAY_TOLL, TT_ALL,
true),
true);
273 register_method(vm, player_book_account,
"book_cash",
true);
278 register_method(vm, &player_t::get_account_balance_as_double,
"get_current_cash");
282 register_method(vm, &finance_t::get_netwealth,
"get_current_net_wealth");
286 register_method_fv(vm, &finance_t::get_maintenance_with_bits,
"get_current_maintenance", freevariable<uint8>(TT_ALL));
298 register_function(vm, &player_export_line_list,
"get_line_list", 1, param<player_t*>::typemask());
305 register_method(vm, &player_create_line,
"create_line",
true);
309 register_method(vm, &player_t::get_ai_id,
"get_type");