summaryrefslogtreecommitdiff
path: root/src/script
diff options
context:
space:
mode:
authorfrosch <frosch@openttd.org>2012-05-26 14:16:32 +0000
committerfrosch <frosch@openttd.org>2012-05-26 14:16:32 +0000
commit66a37e28a69411f4666158cce03c6fd29e9a15e1 (patch)
tree5735dafdf64c8ea7e57c1b9592f256ff37ccd687 /src/script
parent9ad9d72c4ae6fb28e7381bbd50ddeb2502b7d925 (diff)
downloadopenttd-66a37e28a69411f4666158cce03c6fd29e9a15e1.tar.xz
(svn r24289) -Add: [Script] Base class for script events involving a company and a town.
Diffstat (limited to 'src/script')
-rw-r--r--src/script/api/ai/ai_event_types.hpp.sq16
-rw-r--r--src/script/api/game/game_event_types.hpp.sq16
-rw-r--r--src/script/api/script_event_types.hpp42
-rw-r--r--src/script/api/template/template_event_types.hpp.sq9
4 files changed, 83 insertions, 0 deletions
diff --git a/src/script/api/ai/ai_event_types.hpp.sq b/src/script/api/ai/ai_event_types.hpp.sq
index bb46ed724..d40ab240a 100644
--- a/src/script/api/ai/ai_event_types.hpp.sq
+++ b/src/script/api/ai/ai_event_types.hpp.sq
@@ -361,3 +361,19 @@ void SQAIEventAircraftDestTooFar_Register(Squirrel *engine)
SQAIEventAircraftDestTooFar.PostRegister(engine);
}
+
+
+template <> const char *GetClassName<ScriptEventCompanyTown, ST_AI>() { return "AIEventCompanyTown"; }
+
+void SQAIEventCompanyTown_Register(Squirrel *engine)
+{
+ DefSQClass<ScriptEventCompanyTown, ST_AI> SQAIEventCompanyTown("AIEventCompanyTown");
+ SQAIEventCompanyTown.PreRegister(engine, "AIEvent");
+
+ SQAIEventCompanyTown.DefSQStaticMethod(engine, &ScriptEventCompanyTown::Convert, "Convert", 2, ".x");
+
+ SQAIEventCompanyTown.DefSQMethod(engine, &ScriptEventCompanyTown::GetCompanyID, "GetCompanyID", 1, "x");
+ SQAIEventCompanyTown.DefSQMethod(engine, &ScriptEventCompanyTown::GetTownID, "GetTownID", 1, "x");
+
+ SQAIEventCompanyTown.PostRegister(engine);
+}
diff --git a/src/script/api/game/game_event_types.hpp.sq b/src/script/api/game/game_event_types.hpp.sq
index 727e90bb1..6faacba44 100644
--- a/src/script/api/game/game_event_types.hpp.sq
+++ b/src/script/api/game/game_event_types.hpp.sq
@@ -266,3 +266,19 @@ void SQGSEventGoalQuestionAnswer_Register(Squirrel *engine)
SQGSEventGoalQuestionAnswer.PostRegister(engine);
}
+
+
+template <> const char *GetClassName<ScriptEventCompanyTown, ST_GS>() { return "GSEventCompanyTown"; }
+
+void SQGSEventCompanyTown_Register(Squirrel *engine)
+{
+ DefSQClass<ScriptEventCompanyTown, ST_GS> SQGSEventCompanyTown("GSEventCompanyTown");
+ SQGSEventCompanyTown.PreRegister(engine, "GSEvent");
+
+ SQGSEventCompanyTown.DefSQStaticMethod(engine, &ScriptEventCompanyTown::Convert, "Convert", 2, ".x");
+
+ SQGSEventCompanyTown.DefSQMethod(engine, &ScriptEventCompanyTown::GetCompanyID, "GetCompanyID", 1, "x");
+ SQGSEventCompanyTown.DefSQMethod(engine, &ScriptEventCompanyTown::GetTownID, "GetTownID", 1, "x");
+
+ SQGSEventCompanyTown.PostRegister(engine);
+}
diff --git a/src/script/api/script_event_types.hpp b/src/script/api/script_event_types.hpp
index d5a97bbdd..e416c6f04 100644
--- a/src/script/api/script_event_types.hpp
+++ b/src/script/api/script_event_types.hpp
@@ -980,5 +980,47 @@ private:
ScriptGoal::QuestionButton button; ///< The button he pressed.
};
+/**
+ * Base class for events involving a town and a company.
+ * @api ai game
+ */
+class ScriptEventCompanyTown : public ScriptEvent {
+public:
+ /**
+ * @param event The eventtype.
+ * @param company The company.
+ * @param town The town.
+ */
+ ScriptEventCompanyTown(ScriptEventType event, ScriptCompany::CompanyID company, TownID town) :
+ ScriptEvent(event),
+ company(company),
+ town(town)
+ {}
+
+ /**
+ * Convert an ScriptEvent to the real instance.
+ * @param instance The instance to convert.
+ * @return The converted instance.
+ */
+ static ScriptEventCompanyTown *Convert(ScriptEvent *instance) { return (ScriptEventCompanyTown *)instance; }
+
+ /**
+ * Get the CompanyID of the company.
+ * @return The CompanyID of the company involved into the event.
+ */
+ ScriptCompany::CompanyID GetCompanyID() { return this->company; }
+
+ /**
+ * Get the TownID of the town.
+ * @return The TownID of the town involved into the event.
+ */
+ TownID GetTownID() { return this->town; }
+
+private:
+ ScriptCompany::CompanyID company; ///< The company involved into the event.
+ TownID town; ///< The town involved into the event.
+};
+
+
#endif /* SCRIPT_EVENT_TYPES_HPP */
diff --git a/src/script/api/template/template_event_types.hpp.sq b/src/script/api/template/template_event_types.hpp.sq
index e03e7df3d..ae045a092 100644
--- a/src/script/api/template/template_event_types.hpp.sq
+++ b/src/script/api/template/template_event_types.hpp.sq
@@ -239,3 +239,12 @@ namespace SQConvert {
template <> inline const ScriptEventGoalQuestionAnswer &GetParam(ForceType<const ScriptEventGoalQuestionAnswer &>, HSQUIRRELVM vm, int index, SQAutoFreePointers *ptr) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return *(ScriptEventGoalQuestionAnswer *)instance; }
template <> inline int Return<ScriptEventGoalQuestionAnswer *>(HSQUIRRELVM vm, ScriptEventGoalQuestionAnswer *res) { if (res == NULL) { sq_pushnull(vm); return 1; } res->AddRef(); Squirrel::CreateClassInstanceVM(vm, "EventGoalQuestionAnswer", res, NULL, DefSQDestructorCallback<ScriptEventGoalQuestionAnswer>, true); return 1; }
} // namespace SQConvert
+
+namespace SQConvert {
+ /* Allow ScriptEventCompanyTown to be used as Squirrel parameter */
+ template <> inline ScriptEventCompanyTown *GetParam(ForceType<ScriptEventCompanyTown *>, HSQUIRRELVM vm, int index, SQAutoFreePointers *ptr) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return (ScriptEventCompanyTown *)instance; }
+ template <> inline ScriptEventCompanyTown &GetParam(ForceType<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 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; }
+} // namespace SQConvert