1
0
Fork 0

(svn r24290) -Add: [Script] ScriptEventExclusiveTransportRights.

release/1.3
frosch 2012-05-26 14:16:38 +00:00
parent 66a37e28a6
commit 8dc553a039
12 changed files with 68 additions and 0 deletions

View File

@ -134,6 +134,7 @@ void AIInstance::RegisterAPI()
SQAIEventDisasterZeppelinerCrashed_Register(this->engine); SQAIEventDisasterZeppelinerCrashed_Register(this->engine);
SQAIEventEngineAvailable_Register(this->engine); SQAIEventEngineAvailable_Register(this->engine);
SQAIEventEnginePreview_Register(this->engine); SQAIEventEnginePreview_Register(this->engine);
SQAIEventExclusiveTransportRights_Register(this->engine);
SQAIEventIndustryClose_Register(this->engine); SQAIEventIndustryClose_Register(this->engine);
SQAIEventIndustryOpen_Register(this->engine); SQAIEventIndustryOpen_Register(this->engine);
SQAIEventStationFirstVehicle_Register(this->engine); SQAIEventStationFirstVehicle_Register(this->engine);

View File

@ -128,6 +128,7 @@ void GameInstance::RegisterAPI()
SQGSEventCompanyNew_Register(this->engine); SQGSEventCompanyNew_Register(this->engine);
SQGSEventCompanyTown_Register(this->engine); SQGSEventCompanyTown_Register(this->engine);
SQGSEventController_Register(this->engine); SQGSEventController_Register(this->engine);
SQGSEventExclusiveTransportRights_Register(this->engine);
SQGSEventGoalQuestionAnswer_Register(this->engine); SQGSEventGoalQuestionAnswer_Register(this->engine);
SQGSEventIndustryClose_Register(this->engine); SQGSEventIndustryClose_Register(this->engine);
SQGSEventIndustryOpen_Register(this->engine); SQGSEventIndustryOpen_Register(this->engine);

View File

@ -48,6 +48,7 @@ void SQAIEvent_Register(Squirrel *engine)
SQAIEvent.DefSQConst(engine, ScriptEvent::ET_ADMIN_PORT, "ET_ADMIN_PORT"); SQAIEvent.DefSQConst(engine, ScriptEvent::ET_ADMIN_PORT, "ET_ADMIN_PORT");
SQAIEvent.DefSQConst(engine, ScriptEvent::ET_WINDOW_WIDGET_CLICK, "ET_WINDOW_WIDGET_CLICK"); SQAIEvent.DefSQConst(engine, ScriptEvent::ET_WINDOW_WIDGET_CLICK, "ET_WINDOW_WIDGET_CLICK");
SQAIEvent.DefSQConst(engine, ScriptEvent::ET_GOAL_QUESTION_ANSWER, "ET_GOAL_QUESTION_ANSWER"); SQAIEvent.DefSQConst(engine, ScriptEvent::ET_GOAL_QUESTION_ANSWER, "ET_GOAL_QUESTION_ANSWER");
SQAIEvent.DefSQConst(engine, ScriptEvent::ET_EXCLUSIVE_TRANSPORT_RIGHTS, "ET_EXCLUSIVE_TRANSPORT_RIGHTS");
SQAIEvent.DefSQMethod(engine, &ScriptEvent::GetEventType, "GetEventType", 1, "x"); SQAIEvent.DefSQMethod(engine, &ScriptEvent::GetEventType, "GetEventType", 1, "x");

View File

@ -377,3 +377,17 @@ void SQAIEventCompanyTown_Register(Squirrel *engine)
SQAIEventCompanyTown.PostRegister(engine); SQAIEventCompanyTown.PostRegister(engine);
} }
template <> const char *GetClassName<ScriptEventExclusiveTransportRights, ST_AI>() { return "AIEventExclusiveTransportRights"; }
void SQAIEventExclusiveTransportRights_Register(Squirrel *engine)
{
DefSQClass<ScriptEventExclusiveTransportRights, ST_AI> SQAIEventExclusiveTransportRights("AIEventExclusiveTransportRights");
SQAIEventExclusiveTransportRights.PreRegister(engine, "AIEventCompanyTown");
SQAIEventExclusiveTransportRights.AddConstructor<void (ScriptEventExclusiveTransportRights::*)(ScriptCompany::CompanyID company, TownID town), 3>(engine, "xii");
SQAIEventExclusiveTransportRights.DefSQStaticMethod(engine, &ScriptEventExclusiveTransportRights::Convert, "Convert", 2, ".x");
SQAIEventExclusiveTransportRights.PostRegister(engine);
}

View File

@ -20,6 +20,7 @@
* 1.3.0 is not yet released. The following changes are not set in stone yet. * 1.3.0 is not yet released. The following changes are not set in stone yet.
* *
* API additions: * API additions:
* \li AIEventExclusiveTransportRights
* \li AIStation::IsAirportClosed * \li AIStation::IsAirportClosed
* \li AIStation::OpenCloseAirport * \li AIStation::OpenCloseAirport
* *

View File

@ -48,6 +48,7 @@ void SQGSEvent_Register(Squirrel *engine)
SQGSEvent.DefSQConst(engine, ScriptEvent::ET_ADMIN_PORT, "ET_ADMIN_PORT"); SQGSEvent.DefSQConst(engine, ScriptEvent::ET_ADMIN_PORT, "ET_ADMIN_PORT");
SQGSEvent.DefSQConst(engine, ScriptEvent::ET_WINDOW_WIDGET_CLICK, "ET_WINDOW_WIDGET_CLICK"); SQGSEvent.DefSQConst(engine, ScriptEvent::ET_WINDOW_WIDGET_CLICK, "ET_WINDOW_WIDGET_CLICK");
SQGSEvent.DefSQConst(engine, ScriptEvent::ET_GOAL_QUESTION_ANSWER, "ET_GOAL_QUESTION_ANSWER"); SQGSEvent.DefSQConst(engine, ScriptEvent::ET_GOAL_QUESTION_ANSWER, "ET_GOAL_QUESTION_ANSWER");
SQGSEvent.DefSQConst(engine, ScriptEvent::ET_EXCLUSIVE_TRANSPORT_RIGHTS, "ET_EXCLUSIVE_TRANSPORT_RIGHTS");
SQGSEvent.DefSQMethod(engine, &ScriptEvent::GetEventType, "GetEventType", 1, "x"); SQGSEvent.DefSQMethod(engine, &ScriptEvent::GetEventType, "GetEventType", 1, "x");

View File

@ -282,3 +282,17 @@ void SQGSEventCompanyTown_Register(Squirrel *engine)
SQGSEventCompanyTown.PostRegister(engine); SQGSEventCompanyTown.PostRegister(engine);
} }
template <> const char *GetClassName<ScriptEventExclusiveTransportRights, ST_GS>() { return "GSEventExclusiveTransportRights"; }
void SQGSEventExclusiveTransportRights_Register(Squirrel *engine)
{
DefSQClass<ScriptEventExclusiveTransportRights, ST_GS> SQGSEventExclusiveTransportRights("GSEventExclusiveTransportRights");
SQGSEventExclusiveTransportRights.PreRegister(engine, "GSEventCompanyTown");
SQGSEventExclusiveTransportRights.AddConstructor<void (ScriptEventExclusiveTransportRights::*)(ScriptCompany::CompanyID company, TownID town), 3>(engine, "xii");
SQGSEventExclusiveTransportRights.DefSQStaticMethod(engine, &ScriptEventExclusiveTransportRights::Convert, "Convert", 2, ".x");
SQGSEventExclusiveTransportRights.PostRegister(engine);
}

View File

@ -20,6 +20,7 @@
* 1.3.0 is not yet released. The following changes are not set in stone yet. * 1.3.0 is not yet released. The following changes are not set in stone yet.
* *
* API additions: * API additions:
* \li GSEventExclusiveTransportRights
* \li GSNews::NT_ACCIDENT, GSNews::NT_COMPANY_INFO, GSNews::NT_ADVICE, GSNews::NT_ACCEPTANCE * \li GSNews::NT_ACCIDENT, GSNews::NT_COMPANY_INFO, GSNews::NT_ADVICE, GSNews::NT_ACCEPTANCE
* \li GSStation::IsAirportClosed * \li GSStation::IsAirportClosed
* \li GSStation::OpenCloseAirport * \li GSStation::OpenCloseAirport

View File

@ -53,6 +53,7 @@ public:
ET_ADMIN_PORT, ET_ADMIN_PORT,
ET_WINDOW_WIDGET_CLICK, ET_WINDOW_WIDGET_CLICK,
ET_GOAL_QUESTION_ANSWER, ET_GOAL_QUESTION_ANSWER,
ET_EXCLUSIVE_TRANSPORT_RIGHTS,
}; };
/** /**

View File

@ -1021,6 +1021,28 @@ private:
TownID town; ///< The town involved into the event. TownID town; ///< The town involved into the event.
}; };
/**
* Event Exclusive Transport Rights, indicating that company bought
* exclusive transport rights in a town.
* @api ai game
*/
class ScriptEventExclusiveTransportRights : public ScriptEventCompanyTown {
public:
/**
* @param company The company.
* @param town The town.
*/
ScriptEventExclusiveTransportRights(ScriptCompany::CompanyID company, TownID town) :
ScriptEventCompanyTown(ET_EXCLUSIVE_TRANSPORT_RIGHTS, company, town)
{}
/**
* Convert an ScriptEvent to the real instance.
* @param instance The instance to convert.
* @return The converted instance.
*/
static ScriptEventExclusiveTransportRights *Convert(ScriptEventCompanyTown *instance) { return (ScriptEventExclusiveTransportRights *)instance; }
};
#endif /* SCRIPT_EVENT_TYPES_HPP */ #endif /* SCRIPT_EVENT_TYPES_HPP */

View File

@ -248,3 +248,12 @@ namespace SQConvert {
template <> inline const ScriptEventCompanyTown &GetParam(ForceType<const ScriptEventCompanyTown &>, HSQUIRRELVM vm, int index, SQAutoFreePointers *ptr) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return *(ScriptEventCompanyTown *)instance; } template <> inline const ScriptEventCompanyTown &GetParam(ForceType<const ScriptEventCompanyTown &>, HSQUIRRELVM vm, int index, SQAutoFreePointers *ptr) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return *(ScriptEventCompanyTown *)instance; }
template <> inline int Return<ScriptEventCompanyTown *>(HSQUIRRELVM vm, ScriptEventCompanyTown *res) { if (res == NULL) { sq_pushnull(vm); return 1; } res->AddRef(); Squirrel::CreateClassInstanceVM(vm, "EventCompanyTown", res, NULL, DefSQDestructorCallback<ScriptEventCompanyTown>, true); return 1; } template <> inline int Return<ScriptEventCompanyTown *>(HSQUIRRELVM vm, ScriptEventCompanyTown *res) { if (res == NULL) { sq_pushnull(vm); return 1; } res->AddRef(); Squirrel::CreateClassInstanceVM(vm, "EventCompanyTown", res, NULL, DefSQDestructorCallback<ScriptEventCompanyTown>, true); return 1; }
} // namespace SQConvert } // namespace SQConvert
namespace SQConvert {
/* Allow ScriptEventExclusiveTransportRights to be used as Squirrel parameter */
template <> inline ScriptEventExclusiveTransportRights *GetParam(ForceType<ScriptEventExclusiveTransportRights *>, HSQUIRRELVM vm, int index, SQAutoFreePointers *ptr) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return (ScriptEventExclusiveTransportRights *)instance; }
template <> inline ScriptEventExclusiveTransportRights &GetParam(ForceType<ScriptEventExclusiveTransportRights &>, HSQUIRRELVM vm, int index, SQAutoFreePointers *ptr) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return *(ScriptEventExclusiveTransportRights *)instance; }
template <> inline const ScriptEventExclusiveTransportRights *GetParam(ForceType<const ScriptEventExclusiveTransportRights *>, HSQUIRRELVM vm, int index, SQAutoFreePointers *ptr) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return (ScriptEventExclusiveTransportRights *)instance; }
template <> inline const ScriptEventExclusiveTransportRights &GetParam(ForceType<const ScriptEventExclusiveTransportRights &>, HSQUIRRELVM vm, int index, SQAutoFreePointers *ptr) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return *(ScriptEventExclusiveTransportRights *)instance; }
template <> inline int Return<ScriptEventExclusiveTransportRights *>(HSQUIRRELVM vm, ScriptEventExclusiveTransportRights *res) { if (res == NULL) { sq_pushnull(vm); return 1; } res->AddRef(); Squirrel::CreateClassInstanceVM(vm, "EventExclusiveTransportRights", res, NULL, DefSQDestructorCallback<ScriptEventExclusiveTransportRights>, true); return 1; }
} // namespace SQConvert

View File

@ -2833,6 +2833,8 @@ static CommandCost TownActionBuyRights(Town *t, DoCommandFlag flags)
SetDParam(2, t->index); SetDParam(2, t->index);
SetDParamStr(3, cni->company_name); SetDParamStr(3, cni->company_name);
AddNewsItem(STR_MESSAGE_NEWS_FORMAT, NT_GENERAL, NF_COMPANY, NR_TOWN, t->index, NR_NONE, UINT32_MAX, cni); AddNewsItem(STR_MESSAGE_NEWS_FORMAT, NT_GENERAL, NF_COMPANY, NR_TOWN, t->index, NR_NONE, UINT32_MAX, cni);
AI::BroadcastNewEvent(new ScriptEventExclusiveTransportRights((ScriptCompany::CompanyID)(Owner)_current_company, t->index));
Game::NewEvent(new ScriptEventExclusiveTransportRights((ScriptCompany::CompanyID)(Owner)_current_company, t->index));
} }
return CommandCost(); return CommandCost();
} }