Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00012 #ifndef SCRIPT_EVENT_TYPES_HPP
00013 #define SCRIPT_EVENT_TYPES_HPP
00014
00015 #include "script_event.hpp"
00016 #include "script_company.hpp"
00017
00023 class ScriptEventVehicleCrashed : public ScriptEvent {
00024 public:
00028 enum CrashReason {
00029 CRASH_TRAIN,
00030 CRASH_RV_LEVEL_CROSSING,
00031 CRASH_RV_UFO,
00032 CRASH_PLANE_LANDING,
00033 CRASH_AIRCRAFT_NO_AIRPORT,
00034 CRASH_FLOODED,
00035 };
00036
00042 ScriptEventVehicleCrashed(VehicleID vehicle, TileIndex crash_site, CrashReason crash_reason) :
00043 ScriptEvent(ET_VEHICLE_CRASHED),
00044 crash_site(crash_site),
00045 vehicle(vehicle),
00046 crash_reason(crash_reason)
00047 {}
00048
00054 static ScriptEventVehicleCrashed *Convert(ScriptEvent *instance) { return (ScriptEventVehicleCrashed *)instance; }
00055
00060 VehicleID GetVehicleID() { return this->vehicle; }
00061
00066 TileIndex GetCrashSite() { return this->crash_site; }
00067
00072 CrashReason GetCrashReason() { return this->crash_reason; }
00073
00074 private:
00075 TileIndex crash_site;
00076 VehicleID vehicle;
00077 CrashReason crash_reason;
00078 };
00079
00084 class ScriptEventSubsidyOffer : public ScriptEvent {
00085 public:
00089 ScriptEventSubsidyOffer(SubsidyID subsidy_id) :
00090 ScriptEvent(ET_SUBSIDY_OFFER),
00091 subsidy_id(subsidy_id)
00092 {}
00093
00099 static ScriptEventSubsidyOffer *Convert(ScriptEvent *instance) { return (ScriptEventSubsidyOffer *)instance; }
00100
00105 SubsidyID GetSubsidyID() { return this->subsidy_id; }
00106
00107 private:
00108 SubsidyID subsidy_id;
00109 };
00110
00115 class ScriptEventSubsidyOfferExpired : public ScriptEvent {
00116 public:
00120 ScriptEventSubsidyOfferExpired(SubsidyID subsidy_id) :
00121 ScriptEvent(ET_SUBSIDY_OFFER_EXPIRED),
00122 subsidy_id(subsidy_id)
00123 {}
00124
00130 static ScriptEventSubsidyOfferExpired *Convert(ScriptEvent *instance) { return (ScriptEventSubsidyOfferExpired *)instance; }
00131
00136 SubsidyID GetSubsidyID() { return this->subsidy_id; }
00137
00138 private:
00139 SubsidyID subsidy_id;
00140 };
00141
00146 class ScriptEventSubsidyAwarded : public ScriptEvent {
00147 public:
00151 ScriptEventSubsidyAwarded(SubsidyID subsidy_id) :
00152 ScriptEvent(ET_SUBSIDY_AWARDED),
00153 subsidy_id(subsidy_id)
00154 {}
00155
00161 static ScriptEventSubsidyAwarded *Convert(ScriptEvent *instance) { return (ScriptEventSubsidyAwarded *)instance; }
00162
00167 SubsidyID GetSubsidyID() { return this->subsidy_id; }
00168
00169 private:
00170 SubsidyID subsidy_id;
00171 };
00172
00177 class ScriptEventSubsidyExpired : public ScriptEvent {
00178 public:
00182 ScriptEventSubsidyExpired(SubsidyID subsidy_id) :
00183 ScriptEvent(ET_SUBSIDY_EXPIRED),
00184 subsidy_id(subsidy_id)
00185 {}
00186
00192 static ScriptEventSubsidyExpired *Convert(ScriptEvent *instance) { return (ScriptEventSubsidyExpired *)instance; }
00193
00198 SubsidyID GetSubsidyID() { return this->subsidy_id; }
00199
00200 private:
00201 SubsidyID subsidy_id;
00202 };
00203
00210 class ScriptEventEnginePreview : public ScriptEvent {
00211 public:
00215 ScriptEventEnginePreview(EngineID engine) :
00216 ScriptEvent(ET_ENGINE_PREVIEW),
00217 engine(engine)
00218 {}
00219
00225 static ScriptEventEnginePreview *Convert(ScriptEvent *instance) { return (ScriptEventEnginePreview *)instance; }
00226
00231 char *GetName();
00232
00238 CargoID GetCargoType();
00239
00245 int32 GetCapacity();
00246
00254 int32 GetMaxSpeed();
00255
00260 Money GetPrice();
00261
00267 Money GetRunningCost();
00268
00273 #ifdef DOXYGEN_API
00274 ScriptVehicle::VehicleType GetVehicleType();
00275 #else
00276 int32 GetVehicleType();
00277 #endif
00278
00283 bool AcceptPreview();
00284
00285 private:
00286 EngineID engine;
00287
00292 bool IsEngineValid() const;
00293 };
00294
00299 class ScriptEventCompanyNew : public ScriptEvent {
00300 public:
00304 ScriptEventCompanyNew(Owner owner) :
00305 ScriptEvent(ET_COMPANY_NEW),
00306 owner((ScriptCompany::CompanyID)owner)
00307 {}
00308
00314 static ScriptEventCompanyNew *Convert(ScriptEvent *instance) { return (ScriptEventCompanyNew *)instance; }
00315
00320 ScriptCompany::CompanyID GetCompanyID() { return this->owner; }
00321
00322 private:
00323 ScriptCompany::CompanyID owner;
00324 };
00325
00331 class ScriptEventCompanyInTrouble : public ScriptEvent {
00332 public:
00336 ScriptEventCompanyInTrouble(Owner owner) :
00337 ScriptEvent(ET_COMPANY_IN_TROUBLE),
00338 owner((ScriptCompany::CompanyID)owner)
00339 {}
00340
00346 static ScriptEventCompanyInTrouble *Convert(ScriptEvent *instance) { return (ScriptEventCompanyInTrouble *)instance; }
00347
00352 ScriptCompany::CompanyID GetCompanyID() { return this->owner; }
00353
00354 private:
00355 ScriptCompany::CompanyID owner;
00356 };
00357
00362 class ScriptEventCompanyAskMerger : public ScriptEvent {
00363 public:
00368 ScriptEventCompanyAskMerger(Owner owner, int32 value) :
00369 ScriptEvent(ET_COMPANY_ASK_MERGER),
00370 owner((ScriptCompany::CompanyID)owner),
00371 value(value)
00372 {}
00373
00379 static ScriptEventCompanyAskMerger *Convert(ScriptEvent *instance) { return (ScriptEventCompanyAskMerger *)instance; }
00380
00386 ScriptCompany::CompanyID GetCompanyID() { return this->owner; }
00387
00392 int32 GetValue() { return this->value; }
00393
00398 bool AcceptMerger();
00399
00400 private:
00401 ScriptCompany::CompanyID owner;
00402 int32 value;
00403 };
00404
00410 class ScriptEventCompanyMerger : public ScriptEvent {
00411 public:
00416 ScriptEventCompanyMerger(Owner old_owner, Owner new_owner) :
00417 ScriptEvent(ET_COMPANY_MERGER),
00418 old_owner((ScriptCompany::CompanyID)old_owner),
00419 new_owner((ScriptCompany::CompanyID)new_owner)
00420 {}
00421
00427 static ScriptEventCompanyMerger *Convert(ScriptEvent *instance) { return (ScriptEventCompanyMerger *)instance; }
00428
00436 ScriptCompany::CompanyID GetOldCompanyID() { return this->old_owner; }
00437
00442 ScriptCompany::CompanyID GetNewCompanyID() { return this->new_owner; }
00443
00444 private:
00445 ScriptCompany::CompanyID old_owner;
00446 ScriptCompany::CompanyID new_owner;
00447 };
00448
00453 class ScriptEventCompanyBankrupt : public ScriptEvent {
00454 public:
00458 ScriptEventCompanyBankrupt(Owner owner) :
00459 ScriptEvent(ET_COMPANY_BANKRUPT),
00460 owner((ScriptCompany::CompanyID)owner)
00461 {}
00462
00468 static ScriptEventCompanyBankrupt *Convert(ScriptEvent *instance) { return (ScriptEventCompanyBankrupt *)instance; }
00469
00474 ScriptCompany::CompanyID GetCompanyID() { return this->owner; }
00475
00476 private:
00477 ScriptCompany::CompanyID owner;
00478 };
00479
00484 class ScriptEventVehicleLost : public ScriptEvent {
00485 public:
00489 ScriptEventVehicleLost(VehicleID vehicle_id) :
00490 ScriptEvent(ET_VEHICLE_LOST),
00491 vehicle_id(vehicle_id)
00492 {}
00493
00499 static ScriptEventVehicleLost *Convert(ScriptEvent *instance) { return (ScriptEventVehicleLost *)instance; }
00500
00505 VehicleID GetVehicleID() { return this->vehicle_id; }
00506
00507 private:
00508 VehicleID vehicle_id;
00509 };
00510
00515 class ScriptEventVehicleWaitingInDepot : public ScriptEvent {
00516 public:
00520 ScriptEventVehicleWaitingInDepot(VehicleID vehicle_id) :
00521 ScriptEvent(ET_VEHICLE_WAITING_IN_DEPOT),
00522 vehicle_id(vehicle_id)
00523 {}
00524
00530 static ScriptEventVehicleWaitingInDepot *Convert(ScriptEvent *instance) { return (ScriptEventVehicleWaitingInDepot *)instance; }
00531
00536 VehicleID GetVehicleID() { return this->vehicle_id; }
00537
00538 private:
00539 VehicleID vehicle_id;
00540 };
00541
00546 class ScriptEventVehicleUnprofitable : public ScriptEvent {
00547 public:
00551 ScriptEventVehicleUnprofitable(VehicleID vehicle_id) :
00552 ScriptEvent(ET_VEHICLE_UNPROFITABLE),
00553 vehicle_id(vehicle_id)
00554 {}
00555
00561 static ScriptEventVehicleUnprofitable *Convert(ScriptEvent *instance) { return (ScriptEventVehicleUnprofitable *)instance; }
00562
00567 VehicleID GetVehicleID() { return this->vehicle_id; }
00568
00569 private:
00570 VehicleID vehicle_id;
00571 };
00572
00577 class ScriptEventIndustryOpen : public ScriptEvent {
00578 public:
00582 ScriptEventIndustryOpen(IndustryID industry_id) :
00583 ScriptEvent(ET_INDUSTRY_OPEN),
00584 industry_id(industry_id)
00585 {}
00586
00592 static ScriptEventIndustryOpen *Convert(ScriptEvent *instance) { return (ScriptEventIndustryOpen *)instance; }
00593
00598 IndustryID GetIndustryID() { return this->industry_id; }
00599
00600 private:
00601 IndustryID industry_id;
00602 };
00603
00608 class ScriptEventIndustryClose : public ScriptEvent {
00609 public:
00613 ScriptEventIndustryClose(IndustryID industry_id) :
00614 ScriptEvent(ET_INDUSTRY_CLOSE),
00615 industry_id(industry_id)
00616 {}
00617
00623 static ScriptEventIndustryClose *Convert(ScriptEvent *instance) { return (ScriptEventIndustryClose *)instance; }
00624
00629 IndustryID GetIndustryID() { return this->industry_id; }
00630
00631 private:
00632 IndustryID industry_id;
00633 };
00634
00639 class ScriptEventEngineAvailable : public ScriptEvent {
00640 public:
00644 ScriptEventEngineAvailable(EngineID engine) :
00645 ScriptEvent(ET_ENGINE_AVAILABLE),
00646 engine(engine)
00647 {}
00648
00654 static ScriptEventEngineAvailable *Convert(ScriptEvent *instance) { return (ScriptEventEngineAvailable *)instance; }
00655
00660 EngineID GetEngineID() { return this->engine; }
00661
00662 private:
00663 EngineID engine;
00664 };
00665
00670 class ScriptEventStationFirstVehicle : public ScriptEvent {
00671 public:
00676 ScriptEventStationFirstVehicle(StationID station, VehicleID vehicle) :
00677 ScriptEvent(ET_STATION_FIRST_VEHICLE),
00678 station(station),
00679 vehicle(vehicle)
00680 {}
00681
00687 static ScriptEventStationFirstVehicle *Convert(ScriptEvent *instance) { return (ScriptEventStationFirstVehicle *)instance; }
00688
00693 StationID GetStationID() { return this->station; }
00694
00699 VehicleID GetVehicleID() { return this->vehicle; }
00700
00701 private:
00702 StationID station;
00703 VehicleID vehicle;
00704 };
00705
00710 class ScriptEventDisasterZeppelinerCrashed : public ScriptEvent {
00711 public:
00715 ScriptEventDisasterZeppelinerCrashed(StationID station) :
00716 ScriptEvent(ET_DISASTER_ZEPPELINER_CRASHED),
00717 station(station)
00718 {}
00719
00725 static ScriptEventDisasterZeppelinerCrashed *Convert(ScriptEvent *instance) { return (ScriptEventDisasterZeppelinerCrashed *)instance; }
00726
00731 StationID GetStationID() { return this->station; }
00732
00733 private:
00734 StationID station;
00735 };
00736
00741 class ScriptEventDisasterZeppelinerCleared : public ScriptEvent {
00742 public:
00746 ScriptEventDisasterZeppelinerCleared(StationID station) :
00747 ScriptEvent(ET_DISASTER_ZEPPELINER_CLEARED),
00748 station(station)
00749 {}
00750
00756 static ScriptEventDisasterZeppelinerCleared *Convert(ScriptEvent *instance) { return (ScriptEventDisasterZeppelinerCleared *)instance; }
00757
00762 StationID GetStationID() { return this->station; }
00763
00764 private:
00765 StationID station;
00766 };
00767
00772 class ScriptEventTownFounded : public ScriptEvent {
00773 public:
00777 ScriptEventTownFounded(TownID town) :
00778 ScriptEvent(ET_TOWN_FOUNDED),
00779 town(town)
00780 {}
00781
00787 static ScriptEventTownFounded *Convert(ScriptEvent *instance) { return (ScriptEventTownFounded *)instance; }
00788
00793 TownID GetTownID() { return this->town; }
00794
00795 private:
00796 TownID town;
00797 };
00798
00805 class ScriptEventAircraftDestTooFar : public ScriptEvent {
00806 public:
00810 ScriptEventAircraftDestTooFar(VehicleID vehicle_id) :
00811 ScriptEvent(ET_AIRCRAFT_DEST_TOO_FAR),
00812 vehicle_id(vehicle_id)
00813 {}
00814
00820 static ScriptEventAircraftDestTooFar *Convert(ScriptEvent *instance) { return (ScriptEventAircraftDestTooFar *)instance; }
00821
00826 VehicleID GetVehicleID() { return this->vehicle_id; }
00827
00828 private:
00829 VehicleID vehicle_id;
00830 };
00831
00832 #endif