--- 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; }