(svn r12312) [NoAI] -Fix: AIVehicle_vRunningCost didn't exist noai
authortruebrain
Thu, 28 Feb 2008 14:28:44 +0000
branchnoai
changeset 9806 d65cc2bcb0de
parent 9805 d7f0e62cedf3
child 9807 5b3be41b3ce6
(svn r12312) [NoAI] -Fix: AIVehicle_vRunningCost didn't exist
bin/ai/regression/regression.nut
bin/ai/regression/regression.txt
src/ai/ai_squirrel.cpp
src/ai/api/ai_vehicle.cpp
src/ai/api/ai_vehiclelist_valuator.cpp
src/ai/api/ai_vehiclelist_valuator.hpp
src/ai/api/ai_vehiclelist_valuator.hpp.sq
--- a/bin/ai/regression/regression.nut	Thu Feb 28 13:49:41 2008 +0000
+++ b/bin/ai/regression/regression.nut	Thu Feb 28 14:28:44 2008 +0000
@@ -1070,6 +1070,11 @@
 	for (local i = list.Begin(); list.HasNext(); i = list.Next()) {
 		print("    " + i + " => " + list.GetValue(i));
 	}
+	list.Valuate(AIVehicleList_vRunningCost());
+	print("  RunningCost ListDump:");
+	for (local i = list.Begin(); list.HasNext(); i = list.Next()) {
+		print("    " + i + " => " + list.GetValue(i));
+	}
 	list.Valuate(AIVehicleList_vProfitThisYear());
 	print("  ProfitThisYear ListDump:");
 	for (local i = list.Begin(); list.HasNext(); i = list.Next()) {
--- a/bin/ai/regression/regression.txt	Thu Feb 28 13:49:41 2008 +0000
+++ b/bin/ai/regression/regression.txt	Thu Feb 28 14:28:44 2008 +0000
@@ -5769,6 +5769,11 @@
     13 => 10980
     12 => 5490
     11 => 5489
+  RunningCost ListDump:
+    13 => 2756
+    15 => 2296
+    12 => 421
+    11 => 421
   ProfitThisYear ListDump:
     15 => 0
     13 => 0
--- a/src/ai/ai_squirrel.cpp	Thu Feb 28 13:49:41 2008 +0000
+++ b/src/ai/ai_squirrel.cpp	Thu Feb 28 14:28:44 2008 +0000
@@ -311,6 +311,7 @@
 	SQAIVehicleList_vMaxAge_Register(this->engine);
 	SQAIVehicleList_vProfitLastYear_Register(this->engine);
 	SQAIVehicleList_vProfitThisYear_Register(this->engine);
+	SQAIVehicleList_vRunningCost_Register(this->engine);
 	SQAIVehicleList_vUnitNumber_Register(this->engine);
 	SQAIVehicleList_vVehicleType_Register(this->engine);
 
--- a/src/ai/api/ai_vehicle.cpp	Thu Feb 28 13:49:41 2008 +0000
+++ b/src/ai/api/ai_vehicle.cpp	Thu Feb 28 14:28:44 2008 +0000
@@ -6,7 +6,6 @@
 #include "ai_engine.hpp"
 #include "ai_cargo.hpp"
 #include "ai_order.hpp"
-#include "../../command_func.h"
 #include "../../depot.h"
 #include "../../engine.h"
 #include "../../player_func.h"
--- a/src/ai/api/ai_vehiclelist_valuator.cpp	Thu Feb 28 13:49:41 2008 +0000
+++ b/src/ai/api/ai_vehiclelist_valuator.cpp	Thu Feb 28 14:28:44 2008 +0000
@@ -31,6 +31,11 @@
 	return AIVehicle::GetAgeLeft(vehicle);
 }
 
+int32 AIVehicleList_vRunningCost::Valuate(int32 vehicle) const
+{
+	return AIVehicle::GetRunningCost(vehicle);
+}
+
 int32 AIVehicleList_vProfitThisYear::Valuate(int32 vehicle) const
 {
 	return AIVehicle::GetProfitThisYear(vehicle);
--- a/src/ai/api/ai_vehiclelist_valuator.hpp	Thu Feb 28 13:49:41 2008 +0000
+++ b/src/ai/api/ai_vehiclelist_valuator.hpp	Thu Feb 28 14:28:44 2008 +0000
@@ -98,6 +98,22 @@
 };
 
 /**
+ * Get the running costs for the entries in an AIVehicleList instance.
+ * @note Resulting items are of the type int32 (cost is per year).
+ * @note Can only operate on an AIVehicleList instance.
+ * @ingroup AIVehicleList
+ */
+class AIVehicleList_vRunningCost : public AIAbstractList::Valuator {
+public:
+	static const char *GetClassName() { return "AIVehicleList_vRunningCost"; }
+
+private:
+	const char *GetListName() const { return "AIVehicleList"; }
+	int32 Valuate(int32 vehicle_id) const;
+};
+
+
+/**
  * Get the profit of this year for entries in an AIVehicleList instance.
  * @note Resulting items are of the type int32 (age in days).
  * @note Can only operate on an AIVehicleList instance.
--- a/src/ai/api/ai_vehiclelist_valuator.hpp.sq	Thu Feb 28 13:49:41 2008 +0000
+++ b/src/ai/api/ai_vehiclelist_valuator.hpp.sq	Thu Feb 28 14:28:44 2008 +0000
@@ -115,6 +115,25 @@
 }
 
 namespace SQConvert {
+	/* Allow AIVehicleList_vRunningCost to be used as Squirrel parameter */
+	template <> AIVehicleList_vRunningCost *GetParam(ForceType<AIVehicleList_vRunningCost *>, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return  (AIVehicleList_vRunningCost *)instance; }
+	template <> AIVehicleList_vRunningCost &GetParam(ForceType<AIVehicleList_vRunningCost &>, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return *(AIVehicleList_vRunningCost *)instance; }
+	template <> const AIVehicleList_vRunningCost *GetParam(ForceType<const AIVehicleList_vRunningCost *>, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return  (AIVehicleList_vRunningCost *)instance; }
+	template <> const AIVehicleList_vRunningCost &GetParam(ForceType<const AIVehicleList_vRunningCost &>, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return *(AIVehicleList_vRunningCost *)instance; }
+	template <> int Return<AIVehicleList_vRunningCost *>(HSQUIRRELVM vm, AIVehicleList_vRunningCost *res) { if (res == NULL) { sq_pushnull(vm); return 1; } res->AddRef(); Squirrel::CreateClassInstanceVM(vm, "AIVehicleList_vRunningCost", res, NULL, DefSQDestructorCallback<AIVehicleList_vRunningCost>); return 1; }
+}; // namespace SQConvert
+
+void SQAIVehicleList_vRunningCost_Register(Squirrel *engine) {
+	DefSQClass <AIVehicleList_vRunningCost> SQAIVehicleList_vRunningCost("AIVehicleList_vRunningCost");
+	SQAIVehicleList_vRunningCost.PreRegister(engine);
+	SQAIVehicleList_vRunningCost.AddConstructor<void (AIVehicleList_vRunningCost::*)(), 1>(engine, "x");
+
+	SQAIVehicleList_vRunningCost.DefSQStaticMethod(engine, &AIVehicleList_vRunningCost::GetClassName, "GetClassName", 1, "x");
+
+	SQAIVehicleList_vRunningCost.PostRegister(engine);
+}
+
+namespace SQConvert {
 	/* Allow AIVehicleList_vProfitThisYear to be used as Squirrel parameter */
 	template <> AIVehicleList_vProfitThisYear *GetParam(ForceType<AIVehicleList_vProfitThisYear *>, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return  (AIVehicleList_vProfitThisYear *)instance; }
 	template <> AIVehicleList_vProfitThisYear &GetParam(ForceType<AIVehicleList_vProfitThisYear &>, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return *(AIVehicleList_vProfitThisYear *)instance; }