summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--bin/ai/regression/regression.nut10
-rw-r--r--bin/ai/regression/regression.txt6
-rw-r--r--projects/openttd_vs80.vcproj8
-rw-r--r--projects/openttd_vs90.vcproj8
-rw-r--r--source.list2
-rw-r--r--src/ai/ai_instance.cpp2
-rw-r--r--src/ai/api/ai_buoylist.cpp14
-rw-r--r--src/ai/api/ai_buoylist.hpp21
-rw-r--r--src/ai/api/ai_buoylist.hpp.sq21
9 files changed, 92 insertions, 0 deletions
diff --git a/bin/ai/regression/regression.nut b/bin/ai/regression/regression.nut
index 7ec415639..1f8316043 100644
--- a/bin/ai/regression/regression.nut
+++ b/bin/ai/regression/regression.nut
@@ -804,6 +804,16 @@ function Regression::Marine()
print(" IsCanalTile(): " + AIMarine.IsCanalTile(32127));
print(" GetBankBalance(): " + AICompany.GetBankBalance(AICompany.COMPANY_SELF));
+ local list = AIBuoyList();
+ print("");
+ print("--AIBuoyList--");
+ print(" Count(): " + list.Count());
+ print(" Location ListDump:");
+ for (local i = list.Begin(); list.HasNext(); i = list.Next()) {
+ print(" " + i);
+ }
+ print("");
+
print(" RemoveWaterDepot(): " + AIMarine.RemoveWaterDepot(28479));
print(" RemoveDock(): " + AIMarine.RemoveDock(29253));
print(" RemoveBuoy(): " + AIMarine.RemoveBuoy(28481));
diff --git a/bin/ai/regression/regression.txt b/bin/ai/regression/regression.txt
index 0e162c0e0..f6edc7ec9 100644
--- a/bin/ai/regression/regression.txt
+++ b/bin/ai/regression/regression.txt
@@ -7088,6 +7088,12 @@
IsLockTile(): true
IsCanalTile(): true
GetBankBalance(): 805063
+
+--AIBuoyList--
+ Count(): 1
+ Location ListDump:
+ 28481
+
RemoveWaterDepot(): true
RemoveDock(): true
RemoveBuoy(): true
diff --git a/projects/openttd_vs80.vcproj b/projects/openttd_vs80.vcproj
index 016f26028..a3f3437cf 100644
--- a/projects/openttd_vs80.vcproj
+++ b/projects/openttd_vs80.vcproj
@@ -2588,6 +2588,10 @@
>
</File>
<File
+ RelativePath=".\..\src\ai\api\ai_buoylist.hpp"
+ >
+ </File>
+ <File
RelativePath=".\..\src\ai\api\ai_cargo.hpp"
>
</File>
@@ -2796,6 +2800,10 @@
>
</File>
<File
+ RelativePath=".\..\src\ai\api\ai_buoylist.cpp"
+ >
+ </File>
+ <File
RelativePath=".\..\src\ai\api\ai_cargo.cpp"
>
</File>
diff --git a/projects/openttd_vs90.vcproj b/projects/openttd_vs90.vcproj
index 3ca3c8363..9d4e20aaa 100644
--- a/projects/openttd_vs90.vcproj
+++ b/projects/openttd_vs90.vcproj
@@ -2585,6 +2585,10 @@
>
</File>
<File
+ RelativePath=".\..\src\ai\api\ai_buoylist.hpp"
+ >
+ </File>
+ <File
RelativePath=".\..\src\ai\api\ai_cargo.hpp"
>
</File>
@@ -2793,6 +2797,10 @@
>
</File>
<File
+ RelativePath=".\..\src\ai\api\ai_buoylist.cpp"
+ >
+ </File>
+ <File
RelativePath=".\..\src\ai\api\ai_cargo.cpp"
>
</File>
diff --git a/source.list b/source.list
index bb05a91da..7237c5f9d 100644
--- a/source.list
+++ b/source.list
@@ -602,6 +602,7 @@ ai/api/ai_airport.hpp
ai/api/ai_base.hpp
ai/api/ai_bridge.hpp
ai/api/ai_bridgelist.hpp
+ai/api/ai_buoylist.hpp
ai/api/ai_cargo.hpp
ai/api/ai_cargolist.hpp
ai/api/ai_company.hpp
@@ -655,6 +656,7 @@ ai/api/ai_airport.cpp
ai/api/ai_base.cpp
ai/api/ai_bridge.cpp
ai/api/ai_bridgelist.cpp
+ai/api/ai_buoylist.cpp
ai/api/ai_cargo.cpp
ai/api/ai_cargolist.cpp
ai/api/ai_company.cpp
diff --git a/src/ai/ai_instance.cpp b/src/ai/ai_instance.cpp
index 8c70cf177..8dff24f78 100644
--- a/src/ai/ai_instance.cpp
+++ b/src/ai/ai_instance.cpp
@@ -32,6 +32,7 @@
#include "api/ai_base.hpp.sq"
#include "api/ai_bridge.hpp.sq"
#include "api/ai_bridgelist.hpp.sq"
+#include "api/ai_buoylist.hpp.sq"
#include "api/ai_cargo.hpp.sq"
#include "api/ai_cargolist.hpp.sq"
#include "api/ai_company.hpp.sq"
@@ -163,6 +164,7 @@ void AIInstance::RegisterAPI()
SQAIBridge_Register(this->engine);
SQAIBridgeList_Register(this->engine);
SQAIBridgeList_Length_Register(this->engine);
+ SQAIBuoyList_Register(this->engine);
SQAICargo_Register(this->engine);
SQAICargoList_Register(this->engine);
SQAICargoList_IndustryAccepting_Register(this->engine);
diff --git a/src/ai/api/ai_buoylist.cpp b/src/ai/api/ai_buoylist.cpp
new file mode 100644
index 000000000..0ba66fb39
--- /dev/null
+++ b/src/ai/api/ai_buoylist.cpp
@@ -0,0 +1,14 @@
+/* $Id$ */
+
+/** @file ai_buoylist.cpp Implementation of AIBuoyList and friends. */
+
+#include "ai_buoylist.hpp"
+#include "../../station_base.h"
+
+AIBuoyList::AIBuoyList()
+{
+ Station *st;
+ FOR_ALL_STATIONS(st) {
+ if (st->IsBuoy()) this->AddItem(st->xy);
+ }
+}
diff --git a/src/ai/api/ai_buoylist.hpp b/src/ai/api/ai_buoylist.hpp
new file mode 100644
index 000000000..b18a3e34f
--- /dev/null
+++ b/src/ai/api/ai_buoylist.hpp
@@ -0,0 +1,21 @@
+/* $Id$ */
+
+/** @file ai_buoylist.hpp List all the buoys. */
+
+#ifndef AI_BUOYLIST_HPP
+#define AI_BUOYLIST_HPP
+
+#include "ai_abstractlist.hpp"
+
+/**
+ * Creates a list of buoys.
+ * @ingroup AIList
+ */
+class AIBuoyList : public AIAbstractList {
+public:
+ static const char *GetClassName() { return "AIBuoyList"; }
+ AIBuoyList();
+};
+
+
+#endif /* AI_BUOYLIST_HPP */
diff --git a/src/ai/api/ai_buoylist.hpp.sq b/src/ai/api/ai_buoylist.hpp.sq
new file mode 100644
index 000000000..b5eb92973
--- /dev/null
+++ b/src/ai/api/ai_buoylist.hpp.sq
@@ -0,0 +1,21 @@
+/* $Id$ */
+/* THIS FILE IS AUTO-GENERATED; PLEASE DO NOT ALTER MANUALLY */
+
+#include "ai_buoylist.hpp"
+
+namespace SQConvert {
+ /* Allow AIBuoyList to be used as Squirrel parameter */
+ template <> AIBuoyList *GetParam(ForceType<AIBuoyList *>, HSQUIRRELVM vm, int index, SQAutoFreePointers *ptr) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return (AIBuoyList *)instance; }
+ template <> AIBuoyList &GetParam(ForceType<AIBuoyList &>, HSQUIRRELVM vm, int index, SQAutoFreePointers *ptr) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return *(AIBuoyList *)instance; }
+ template <> const AIBuoyList *GetParam(ForceType<const AIBuoyList *>, HSQUIRRELVM vm, int index, SQAutoFreePointers *ptr) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return (AIBuoyList *)instance; }
+ template <> const AIBuoyList &GetParam(ForceType<const AIBuoyList &>, HSQUIRRELVM vm, int index, SQAutoFreePointers *ptr) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return *(AIBuoyList *)instance; }
+ template <> int Return<AIBuoyList *>(HSQUIRRELVM vm, AIBuoyList *res) { if (res == NULL) { sq_pushnull(vm); return 1; } res->AddRef(); Squirrel::CreateClassInstanceVM(vm, "AIBuoyList", res, NULL, DefSQDestructorCallback<AIBuoyList>); return 1; }
+}; // namespace SQConvert
+
+void SQAIBuoyList_Register(Squirrel *engine) {
+ DefSQClass <AIBuoyList> SQAIBuoyList("AIBuoyList");
+ SQAIBuoyList.PreRegister(engine, "AIAbstractList");
+ SQAIBuoyList.AddConstructor<void (AIBuoyList::*)(), 1>(engine, "x");
+
+ SQAIBuoyList.PostRegister(engine);
+}