12 #include "../stdafx.h" 16 #include "../script/squirrel_class.hpp" 22 #include "../script/script_storage.hpp" 27 #include "../script/api/template/template_text.hpp.sq" 31 #include "../script/api/ai/ai_accounting.hpp.sq" 32 #include "../script/api/ai/ai_airport.hpp.sq" 33 #include "../script/api/ai/ai_base.hpp.sq" 34 #include "../script/api/ai/ai_basestation.hpp.sq" 35 #include "../script/api/ai/ai_bridge.hpp.sq" 36 #include "../script/api/ai/ai_bridgelist.hpp.sq" 37 #include "../script/api/ai/ai_cargo.hpp.sq" 38 #include "../script/api/ai/ai_cargolist.hpp.sq" 39 #include "../script/api/ai/ai_company.hpp.sq" 40 #include "../script/api/ai/ai_controller.hpp.sq" 41 #include "../script/api/ai/ai_date.hpp.sq" 42 #include "../script/api/ai/ai_depotlist.hpp.sq" 43 #include "../script/api/ai/ai_engine.hpp.sq" 44 #include "../script/api/ai/ai_enginelist.hpp.sq" 45 #include "../script/api/ai/ai_error.hpp.sq" 46 #include "../script/api/ai/ai_event.hpp.sq" 47 #include "../script/api/ai/ai_event_types.hpp.sq" 48 #include "../script/api/ai/ai_execmode.hpp.sq" 49 #include "../script/api/ai/ai_gamesettings.hpp.sq" 50 #include "../script/api/ai/ai_group.hpp.sq" 51 #include "../script/api/ai/ai_grouplist.hpp.sq" 52 #include "../script/api/ai/ai_industry.hpp.sq" 53 #include "../script/api/ai/ai_industrylist.hpp.sq" 54 #include "../script/api/ai/ai_industrytype.hpp.sq" 55 #include "../script/api/ai/ai_industrytypelist.hpp.sq" 56 #include "../script/api/ai/ai_infrastructure.hpp.sq" 57 #include "../script/api/ai/ai_list.hpp.sq" 58 #include "../script/api/ai/ai_log.hpp.sq" 59 #include "../script/api/ai/ai_map.hpp.sq" 60 #include "../script/api/ai/ai_marine.hpp.sq" 61 #include "../script/api/ai/ai_order.hpp.sq" 62 #include "../script/api/ai/ai_rail.hpp.sq" 63 #include "../script/api/ai/ai_railtypelist.hpp.sq" 64 #include "../script/api/ai/ai_road.hpp.sq" 65 #include "../script/api/ai/ai_sign.hpp.sq" 66 #include "../script/api/ai/ai_signlist.hpp.sq" 67 #include "../script/api/ai/ai_station.hpp.sq" 68 #include "../script/api/ai/ai_stationlist.hpp.sq" 69 #include "../script/api/ai/ai_subsidy.hpp.sq" 70 #include "../script/api/ai/ai_subsidylist.hpp.sq" 71 #include "../script/api/ai/ai_testmode.hpp.sq" 72 #include "../script/api/ai/ai_tile.hpp.sq" 73 #include "../script/api/ai/ai_tilelist.hpp.sq" 74 #include "../script/api/ai/ai_town.hpp.sq" 75 #include "../script/api/ai/ai_townlist.hpp.sq" 76 #include "../script/api/ai/ai_tunnel.hpp.sq" 77 #include "../script/api/ai/ai_vehicle.hpp.sq" 78 #include "../script/api/ai/ai_vehiclelist.hpp.sq" 79 #include "../script/api/ai/ai_waypoint.hpp.sq" 80 #include "../script/api/ai/ai_waypointlist.hpp.sq" 82 #include "../company_base.h" 83 #include "../company_func.h" 85 #include "../safeguards.h" 87 AIInstance::AIInstance() :
96 SQAIController_Register(this->
engine);
106 SQAIList_Register(this->
engine);
107 SQAIAccounting_Register(this->
engine);
108 SQAIAirport_Register(this->
engine);
109 SQAIBase_Register(this->
engine);
110 SQAIBaseStation_Register(this->
engine);
111 SQAIBridge_Register(this->
engine);
112 SQAIBridgeList_Register(this->
engine);
113 SQAIBridgeList_Length_Register(this->
engine);
114 SQAICargo_Register(this->
engine);
115 SQAICargoList_Register(this->
engine);
116 SQAICargoList_IndustryAccepting_Register(this->
engine);
117 SQAICargoList_IndustryProducing_Register(this->
engine);
118 SQAICargoList_StationAccepting_Register(this->
engine);
119 SQAICompany_Register(this->
engine);
120 SQAIDate_Register(this->
engine);
121 SQAIDepotList_Register(this->
engine);
122 SQAIEngine_Register(this->
engine);
123 SQAIEngineList_Register(this->
engine);
124 SQAIError_Register(this->
engine);
125 SQAIEvent_Register(this->
engine);
126 SQAIEventAircraftDestTooFar_Register(this->
engine);
127 SQAIEventCompanyAskMerger_Register(this->
engine);
128 SQAIEventCompanyBankrupt_Register(this->
engine);
129 SQAIEventCompanyInTrouble_Register(this->
engine);
130 SQAIEventCompanyMerger_Register(this->
engine);
131 SQAIEventCompanyNew_Register(this->
engine);
132 SQAIEventCompanyTown_Register(this->
engine);
133 SQAIEventController_Register(this->
engine);
134 SQAIEventDisasterZeppelinerCleared_Register(this->
engine);
135 SQAIEventDisasterZeppelinerCrashed_Register(this->
engine);
136 SQAIEventEngineAvailable_Register(this->
engine);
137 SQAIEventEnginePreview_Register(this->
engine);
138 SQAIEventExclusiveTransportRights_Register(this->
engine);
139 SQAIEventIndustryClose_Register(this->
engine);
140 SQAIEventIndustryOpen_Register(this->
engine);
141 SQAIEventRoadReconstruction_Register(this->
engine);
142 SQAIEventStationFirstVehicle_Register(this->
engine);
143 SQAIEventSubsidyAwarded_Register(this->
engine);
144 SQAIEventSubsidyExpired_Register(this->
engine);
145 SQAIEventSubsidyOffer_Register(this->
engine);
146 SQAIEventSubsidyOfferExpired_Register(this->
engine);
147 SQAIEventTownFounded_Register(this->
engine);
148 SQAIEventVehicleCrashed_Register(this->
engine);
149 SQAIEventVehicleLost_Register(this->
engine);
150 SQAIEventVehicleUnprofitable_Register(this->
engine);
151 SQAIEventVehicleWaitingInDepot_Register(this->
engine);
152 SQAIExecMode_Register(this->
engine);
153 SQAIGameSettings_Register(this->
engine);
154 SQAIGroup_Register(this->
engine);
155 SQAIGroupList_Register(this->
engine);
156 SQAIIndustry_Register(this->
engine);
157 SQAIIndustryList_Register(this->
engine);
158 SQAIIndustryList_CargoAccepting_Register(this->
engine);
159 SQAIIndustryList_CargoProducing_Register(this->
engine);
160 SQAIIndustryType_Register(this->
engine);
161 SQAIIndustryTypeList_Register(this->
engine);
162 SQAIInfrastructure_Register(this->
engine);
163 SQAILog_Register(this->
engine);
164 SQAIMap_Register(this->
engine);
165 SQAIMarine_Register(this->
engine);
166 SQAIOrder_Register(this->
engine);
167 SQAIRail_Register(this->
engine);
168 SQAIRailTypeList_Register(this->
engine);
169 SQAIRoad_Register(this->
engine);
170 SQAISign_Register(this->
engine);
171 SQAISignList_Register(this->
engine);
172 SQAIStation_Register(this->
engine);
173 SQAIStationList_Register(this->
engine);
174 SQAIStationList_Cargo_Register(this->
engine);
175 SQAIStationList_CargoPlanned_Register(this->
engine);
176 SQAIStationList_CargoPlannedByFrom_Register(this->
engine);
177 SQAIStationList_CargoPlannedByVia_Register(this->
engine);
178 SQAIStationList_CargoPlannedFromByVia_Register(this->
engine);
179 SQAIStationList_CargoPlannedViaByFrom_Register(this->
engine);
180 SQAIStationList_CargoWaiting_Register(this->
engine);
181 SQAIStationList_CargoWaitingByFrom_Register(this->
engine);
182 SQAIStationList_CargoWaitingByVia_Register(this->
engine);
183 SQAIStationList_CargoWaitingFromByVia_Register(this->
engine);
184 SQAIStationList_CargoWaitingViaByFrom_Register(this->
engine);
185 SQAIStationList_Vehicle_Register(this->
engine);
186 SQAISubsidy_Register(this->
engine);
187 SQAISubsidyList_Register(this->
engine);
188 SQAITestMode_Register(this->
engine);
189 SQAITile_Register(this->
engine);
190 SQAITileList_Register(this->
engine);
191 SQAITileList_IndustryAccepting_Register(this->
engine);
192 SQAITileList_IndustryProducing_Register(this->
engine);
193 SQAITileList_StationType_Register(this->
engine);
194 SQAITown_Register(this->
engine);
195 SQAITownEffectList_Register(this->
engine);
196 SQAITownList_Register(this->
engine);
197 SQAITunnel_Register(this->
engine);
198 SQAIVehicle_Register(this->
engine);
199 SQAIVehicleList_Register(this->
engine);
200 SQAIVehicleList_DefaultGroup_Register(this->
engine);
201 SQAIVehicleList_Depot_Register(this->
engine);
202 SQAIVehicleList_Group_Register(this->
engine);
203 SQAIVehicleList_SharedOrders_Register(this->
engine);
204 SQAIVehicleList_Station_Register(this->
engine);
205 SQAIWaypoint_Register(this->
engine);
206 SQAIWaypointList_Register(this->
engine);
207 SQAIWaypointList_Vehicle_Register(this->
engine);
209 if (!this->LoadCompatibilityScripts(this->versionAPI,
AI_DIR)) this->Died();
222 if (info->
GetURL() != NULL) {
223 ScriptLog::Info(
"Please report the error to the following URL:");
224 ScriptLog::Info(info->
GetURL());
261 if (c == NULL || c->ai_instance == NULL)
return;
static Titem * GetIfValid(size_t index)
Returns Titem with given index.
int version
Version of the script.
Window for configuring the AIs
void RegisterAPI()
Register all API functions to the VM.
void Died()
Tell the script it died.
void LoadDummyScript()
Load the dummy script.
int GetSetting(const char *name)
Get the value of a setting of the current instance.
void Continue()
A script in multiplayer waits for the server to handle his DoCommand.
The AIInstance tracks an AI.
Common return value for all commands.
const char * GetAPIVersion() const
Get the API version this AI is written for.
const char * GetMainScript() const
Get the filename of the main.nut script.
void CcAI(const CommandCost &result, TileIndex tile, uint32 p1, uint32 p2)
DoCommand callback function for all commands executed by AIs.
void ShowErrorMessage(StringID summary_msg, StringID detailed_msg, WarningLevel wl, int x=0, int y=0, const GRFFile *textref_stack_grffile=NULL, uint textref_stack_size=0, const uint32 *textref_stack=NULL)
Display an error message in a window.
CommandCallback * GetDoCommandCallback()
Get the callback handling DoCommands in case of networking.
int GetSetting(const char *name) const
Get the value of a setting for this config.
All static information from an Script like name, version, etc.
static AIConfig * GetConfig(CompanyID company, ScriptSettingSource source=SSS_DEFAULT)
Get the config of a company.
void Script_CreateDummy(HSQUIRRELVM vm, StringID string, const char *type)
Run the dummy AI and let it generate an error message.
Runtime information about a script like a pointer to the squirrel vm and the current state...
void Initialize(class AIInfo *info)
Initialize the AI and prepare it for its first run.
const char * GetURL() const
Get the website for this script.
uint32 StringID
Numeric value that represents a string, independent of the selected language.
Window * ShowAIDebugWindow(CompanyID show_company)
Open the AI debug window and select the given company.
HSQUIRRELVM GetVM()
Get the squirrel VM.
const char * name
Full name of the script.
All static information from an AI like name, version, etc.
CompanyByte _current_company
Company currently doing an action.
uint32 TileIndex
The index/ID of a Tile.
void DoCommandCallback(const CommandCost &result, TileIndex tile, uint32 p1, uint32 p2)
DoCommand callback function for all commands executed by scripts.
Subdirectory for all AI files.
static class AILibrary * FindLibrary(const char *library, int version)
Wrapper function for AIScanner::FindLibrary.
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.
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)
void CommandCallback(const CommandCost &result, TileIndex tile, uint32 p1, uint32 p2)
Define a callback function for the client, after the command is finished.
virtual void Died()
Tell the script it died.
Base functions for all AIs.
ScriptInfo * FindLibrary(const char *library, int version)
Find a library.
const char * GetInstanceName() const
Get the name of the instance of the script to create.
AIConfig stores the configuration settings of every AI.
AIInfo keeps track of all information of an AI, like Author, Description, ...
Get the Script config from the current game.