10 #include "../stdafx.h" 13 #include "../script/squirrel_class.hpp" 15 #include "../script/script_storage.hpp" 16 #include "../ai/ai_gui.hpp" 25 #include "../script/api/game/game_accounting.hpp.sq" 26 #include "../script/api/game/game_admin.hpp.sq" 27 #include "../script/api/game/game_airport.hpp.sq" 28 #include "../script/api/game/game_base.hpp.sq" 29 #include "../script/api/game/game_basestation.hpp.sq" 30 #include "../script/api/game/game_bridge.hpp.sq" 31 #include "../script/api/game/game_bridgelist.hpp.sq" 32 #include "../script/api/game/game_cargo.hpp.sq" 33 #include "../script/api/game/game_cargolist.hpp.sq" 34 #include "../script/api/game/game_cargomonitor.hpp.sq" 35 #include "../script/api/game/game_client.hpp.sq" 36 #include "../script/api/game/game_clientlist.hpp.sq" 37 #include "../script/api/game/game_company.hpp.sq" 38 #include "../script/api/game/game_companymode.hpp.sq" 39 #include "../script/api/game/game_controller.hpp.sq" 40 #include "../script/api/game/game_date.hpp.sq" 41 #include "../script/api/game/game_depotlist.hpp.sq" 42 #include "../script/api/game/game_engine.hpp.sq" 43 #include "../script/api/game/game_enginelist.hpp.sq" 44 #include "../script/api/game/game_error.hpp.sq" 45 #include "../script/api/game/game_event.hpp.sq" 46 #include "../script/api/game/game_event_types.hpp.sq" 47 #include "../script/api/game/game_execmode.hpp.sq" 48 #include "../script/api/game/game_game.hpp.sq" 49 #include "../script/api/game/game_gamesettings.hpp.sq" 50 #include "../script/api/game/game_goal.hpp.sq" 51 #include "../script/api/game/game_industry.hpp.sq" 52 #include "../script/api/game/game_industrylist.hpp.sq" 53 #include "../script/api/game/game_industrytype.hpp.sq" 54 #include "../script/api/game/game_industrytypelist.hpp.sq" 55 #include "../script/api/game/game_infrastructure.hpp.sq" 56 #include "../script/api/game/game_list.hpp.sq" 57 #include "../script/api/game/game_log.hpp.sq" 58 #include "../script/api/game/game_map.hpp.sq" 59 #include "../script/api/game/game_marine.hpp.sq" 60 #include "../script/api/game/game_news.hpp.sq" 61 #include "../script/api/game/game_order.hpp.sq" 62 #include "../script/api/game/game_rail.hpp.sq" 63 #include "../script/api/game/game_railtypelist.hpp.sq" 64 #include "../script/api/game/game_road.hpp.sq" 65 #include "../script/api/game/game_roadtypelist.hpp.sq" 66 #include "../script/api/game/game_sign.hpp.sq" 67 #include "../script/api/game/game_signlist.hpp.sq" 68 #include "../script/api/game/game_station.hpp.sq" 69 #include "../script/api/game/game_stationlist.hpp.sq" 70 #include "../script/api/game/game_story_page.hpp.sq" 71 #include "../script/api/game/game_storypageelementlist.hpp.sq" 72 #include "../script/api/game/game_storypagelist.hpp.sq" 73 #include "../script/api/game/game_subsidy.hpp.sq" 74 #include "../script/api/game/game_subsidylist.hpp.sq" 75 #include "../script/api/game/game_testmode.hpp.sq" 76 #include "../script/api/game/game_text.hpp.sq" 77 #include "../script/api/game/game_tile.hpp.sq" 78 #include "../script/api/game/game_tilelist.hpp.sq" 79 #include "../script/api/game/game_town.hpp.sq" 80 #include "../script/api/game/game_townlist.hpp.sq" 81 #include "../script/api/game/game_tunnel.hpp.sq" 82 #include "../script/api/game/game_vehicle.hpp.sq" 83 #include "../script/api/game/game_vehiclelist.hpp.sq" 84 #include "../script/api/game/game_viewport.hpp.sq" 85 #include "../script/api/game/game_waypoint.hpp.sq" 86 #include "../script/api/game/game_waypointlist.hpp.sq" 87 #include "../script/api/game/game_window.hpp.sq" 89 #include "../safeguards.h" 92 GameInstance::GameInstance() :
101 SQGSController_Register(this->
engine);
111 SQGSList_Register(this->
engine);
112 SQGSAccounting_Register(this->
engine);
113 SQGSAdmin_Register(this->
engine);
114 SQGSAirport_Register(this->
engine);
115 SQGSBase_Register(this->
engine);
116 SQGSBaseStation_Register(this->
engine);
117 SQGSBridge_Register(this->
engine);
118 SQGSBridgeList_Register(this->
engine);
119 SQGSBridgeList_Length_Register(this->
engine);
120 SQGSCargo_Register(this->
engine);
121 SQGSCargoList_Register(this->
engine);
122 SQGSCargoList_IndustryAccepting_Register(this->
engine);
123 SQGSCargoList_IndustryProducing_Register(this->
engine);
124 SQGSCargoList_StationAccepting_Register(this->
engine);
125 SQGSCargoMonitor_Register(this->
engine);
126 SQGSClient_Register(this->
engine);
127 SQGSClientList_Register(this->
engine);
128 SQGSClientList_Company_Register(this->
engine);
129 SQGSCompany_Register(this->
engine);
130 SQGSCompanyMode_Register(this->
engine);
131 SQGSDate_Register(this->
engine);
132 SQGSDepotList_Register(this->
engine);
133 SQGSEngine_Register(this->
engine);
134 SQGSEngineList_Register(this->
engine);
135 SQGSError_Register(this->
engine);
136 SQGSEvent_Register(this->
engine);
137 SQGSEventAdminPort_Register(this->
engine);
138 SQGSEventCompanyBankrupt_Register(this->
engine);
139 SQGSEventCompanyInTrouble_Register(this->
engine);
140 SQGSEventCompanyMerger_Register(this->
engine);
141 SQGSEventCompanyNew_Register(this->
engine);
142 SQGSEventCompanyTown_Register(this->
engine);
143 SQGSEventController_Register(this->
engine);
144 SQGSEventExclusiveTransportRights_Register(this->
engine);
145 SQGSEventGoalQuestionAnswer_Register(this->
engine);
146 SQGSEventIndustryClose_Register(this->
engine);
147 SQGSEventIndustryOpen_Register(this->
engine);
148 SQGSEventRoadReconstruction_Register(this->
engine);
149 SQGSEventStationFirstVehicle_Register(this->
engine);
150 SQGSEventSubsidyAwarded_Register(this->
engine);
151 SQGSEventSubsidyExpired_Register(this->
engine);
152 SQGSEventSubsidyOffer_Register(this->
engine);
153 SQGSEventSubsidyOfferExpired_Register(this->
engine);
154 SQGSEventTownFounded_Register(this->
engine);
155 SQGSEventVehicleCrashed_Register(this->
engine);
156 SQGSEventWindowWidgetClick_Register(this->
engine);
157 SQGSExecMode_Register(this->
engine);
158 SQGSGame_Register(this->
engine);
159 SQGSGameSettings_Register(this->
engine);
160 SQGSGoal_Register(this->
engine);
161 SQGSIndustry_Register(this->
engine);
162 SQGSIndustryList_Register(this->
engine);
163 SQGSIndustryList_CargoAccepting_Register(this->
engine);
164 SQGSIndustryList_CargoProducing_Register(this->
engine);
165 SQGSIndustryType_Register(this->
engine);
166 SQGSIndustryTypeList_Register(this->
engine);
167 SQGSInfrastructure_Register(this->
engine);
168 SQGSLog_Register(this->
engine);
169 SQGSMap_Register(this->
engine);
170 SQGSMarine_Register(this->
engine);
171 SQGSNews_Register(this->
engine);
172 SQGSOrder_Register(this->
engine);
173 SQGSRail_Register(this->
engine);
174 SQGSRailTypeList_Register(this->
engine);
175 SQGSRoad_Register(this->
engine);
176 SQGSRoadTypeList_Register(this->
engine);
177 SQGSSign_Register(this->
engine);
178 SQGSSignList_Register(this->
engine);
179 SQGSStation_Register(this->
engine);
180 SQGSStationList_Register(this->
engine);
181 SQGSStationList_Cargo_Register(this->
engine);
182 SQGSStationList_CargoPlanned_Register(this->
engine);
183 SQGSStationList_CargoPlannedByFrom_Register(this->
engine);
184 SQGSStationList_CargoPlannedByVia_Register(this->
engine);
185 SQGSStationList_CargoPlannedFromByVia_Register(this->
engine);
186 SQGSStationList_CargoPlannedViaByFrom_Register(this->
engine);
187 SQGSStationList_CargoWaiting_Register(this->
engine);
188 SQGSStationList_CargoWaitingByFrom_Register(this->
engine);
189 SQGSStationList_CargoWaitingByVia_Register(this->
engine);
190 SQGSStationList_CargoWaitingFromByVia_Register(this->
engine);
191 SQGSStationList_CargoWaitingViaByFrom_Register(this->
engine);
192 SQGSStationList_Vehicle_Register(this->
engine);
193 SQGSStoryPage_Register(this->
engine);
194 SQGSStoryPageElementList_Register(this->
engine);
195 SQGSStoryPageList_Register(this->
engine);
196 SQGSSubsidy_Register(this->
engine);
197 SQGSSubsidyList_Register(this->
engine);
198 SQGSTestMode_Register(this->
engine);
199 SQGSText_Register(this->
engine);
200 SQGSTile_Register(this->
engine);
201 SQGSTileList_Register(this->
engine);
202 SQGSTileList_IndustryAccepting_Register(this->
engine);
203 SQGSTileList_IndustryProducing_Register(this->
engine);
204 SQGSTileList_StationType_Register(this->
engine);
205 SQGSTown_Register(this->
engine);
206 SQGSTownEffectList_Register(this->
engine);
207 SQGSTownList_Register(this->
engine);
208 SQGSTunnel_Register(this->
engine);
209 SQGSVehicle_Register(this->
engine);
210 SQGSVehicleList_Register(this->
engine);
211 SQGSVehicleList_Depot_Register(this->
engine);
212 SQGSVehicleList_SharedOrders_Register(this->
engine);
213 SQGSVehicleList_Station_Register(this->
engine);
214 SQGSViewport_Register(this->
engine);
215 SQGSWaypoint_Register(this->
engine);
216 SQGSWaypointList_Register(this->
engine);
217 SQGSWaypointList_Vehicle_Register(this->
engine);
218 SQGSWindow_Register(this->
engine);
222 if (!this->LoadCompatibilityScripts(this->versionAPI,
GAME_DIR)) this->Died();
242 if (info !=
nullptr) {
245 if (info->
GetURL() !=
nullptr) {
246 ScriptLog::Info(
"Please report the error to the following URL:");
247 ScriptLog::Info(info->
GetURL());
void Died() override
Tell the script it died.
int version
Version of the script.
GameConfig stores the configuration settings of every Game.
void RegisterGameTranslation(Squirrel *engine)
Register the current translation to the Squirrel engine.
Base functions regarding game texts.
void ShowErrorMessage(StringID summary_msg, StringID detailed_msg, WarningLevel wl, int x=0, int y=0, const GRFFile *textref_stack_grffile=nullptr, uint textref_stack_size=0, const uint32 *textref_stack=nullptr)
Display an error message in a window.
Subdirectory for all game scripts.
void Continue()
A script in multiplayer waits for the server to handle his DoCommand.
static GameConfig * GetConfig(ScriptSettingSource source=SSS_DEFAULT)
Get the config of a company.
Common return value for all commands.
int GetSetting(const char *name) override
Get the value of a setting of the current instance.
All static information from an Game like name, version, etc.
const char * GetMainScript() const
Get the filename of the main.nut script.
void CommandCallback(const CommandCost &result, TileIndex tile, uint32 p1, uint32 p2, uint32 cmd)
Define a callback function for the client, after the command is finished.
void CcGame(const CommandCost &result, TileIndex tile, uint32 p1, uint32 p2, uint32 cmd)
DoCommand callback function for all commands executed by Game Scripts.
All static information from an Script like name, version, etc.
The GameInstance tracks games.
Runtime information about a script like a pointer to the squirrel vm and the current state...
static class GameLibrary * FindLibrary(const char *library, int version)
Wrapper function for GameScanner::FindLibrary.
const char * GetAPIVersion() const
Get the API version this Game is written for.
const char * GetURL() const
Get the website for this script.
static class GameInfo * GetInfo()
Get the current GameInfo.
Window * ShowAIDebugWindow(CompanyID show_company)
Open the AI debug window and select the given company.
const char * name
Full name of the script.
void RegisterAPI() override
Register all API functions to the VM.
GameInfo keeps track of all information of an Game, like Author, Description, ... ...
static class GameInstance * GetGameInstance()
Get the current GameScript instance.
uint32 TileIndex
The index/ID of a Tile.
ScriptInfo * FindLibrary(const char *library, int version) override
Find a library.
virtual void RegisterAPI()
Register all API functions to the VM.
void Initialize(const char *main_script, const char *instance_name, CompanyID company)
Initialize the script and prepare it for its first run.
Base functions for all Games.
class Squirrel * engine
Engine used to register for Squirrel.
static const StringID INVALID_STRING_ID
Constant representing an invalid string (16bit in case it is used in savegames)
CommandCallback * GetDoCommandCallback() override
Get the callback handling DoCommands in case of networking.
virtual int GetSetting(const char *name) const
Get the value of a setting for this config.
virtual void Died()
Tell the script it died.
void Initialize(class GameInfo *info)
Initialize the script and prepare it for its first run.
const char * GetInstanceName() const
Get the name of the instance of the script to create.
The object is owned by a superuser / goal script.