# HG changeset patch # User truebrain # Date 1204208924 0 # Node ID d65cc2bcb0de10ac64bc2a3788bc34ad0e6eb684 # Parent d7f0e62cedf3553ea9525be41ab89da2fe7e0faf (svn r12312) [NoAI] -Fix: AIVehicle_vRunningCost didn't exist diff -r d7f0e62cedf3 -r d65cc2bcb0de bin/ai/regression/regression.nut --- 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()) { diff -r d7f0e62cedf3 -r d65cc2bcb0de bin/ai/regression/regression.txt --- 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 diff -r d7f0e62cedf3 -r d65cc2bcb0de src/ai/ai_squirrel.cpp --- 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); diff -r d7f0e62cedf3 -r d65cc2bcb0de src/ai/api/ai_vehicle.cpp --- 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" diff -r d7f0e62cedf3 -r d65cc2bcb0de src/ai/api/ai_vehiclelist_valuator.cpp --- 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); diff -r d7f0e62cedf3 -r d65cc2bcb0de src/ai/api/ai_vehiclelist_valuator.hpp --- 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. diff -r d7f0e62cedf3 -r d65cc2bcb0de src/ai/api/ai_vehiclelist_valuator.hpp.sq --- 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, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return (AIVehicleList_vRunningCost *)instance; } + template <> AIVehicleList_vRunningCost &GetParam(ForceType, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return *(AIVehicleList_vRunningCost *)instance; } + template <> const AIVehicleList_vRunningCost *GetParam(ForceType, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return (AIVehicleList_vRunningCost *)instance; } + template <> const AIVehicleList_vRunningCost &GetParam(ForceType, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return *(AIVehicleList_vRunningCost *)instance; } + template <> int Return(HSQUIRRELVM vm, AIVehicleList_vRunningCost *res) { if (res == NULL) { sq_pushnull(vm); return 1; } res->AddRef(); Squirrel::CreateClassInstanceVM(vm, "AIVehicleList_vRunningCost", res, NULL, DefSQDestructorCallback); return 1; } +}; // namespace SQConvert + +void SQAIVehicleList_vRunningCost_Register(Squirrel *engine) { + DefSQClass SQAIVehicleList_vRunningCost("AIVehicleList_vRunningCost"); + SQAIVehicleList_vRunningCost.PreRegister(engine); + SQAIVehicleList_vRunningCost.AddConstructor(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, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return (AIVehicleList_vProfitThisYear *)instance; } template <> AIVehicleList_vProfitThisYear &GetParam(ForceType, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return *(AIVehicleList_vProfitThisYear *)instance; }