Index: bin/ai/regression/regression.nut =================================================================== --- bin/ai/regression/regression.nut (revision 11288) +++ bin/ai/regression/regression.nut (working copy) @@ -825,8 +825,14 @@ bank = company.GetBankBalance(AICompany.MY_COMPANY); print(" SellVehicle(12): " + vehicle.SellVehicle(12)); + print(" IsInDepot(): " + vehicle.IsInDepot(11)); + print(" IsStoppedInDepot(): " + vehicle.IsStoppedInDepot(11)); print(" StartStopVehicle(): " + vehicle.StartStopVehicle(11)); + print(" IsInDepot(): " + vehicle.IsInDepot(11)); + print(" IsStoppedInDepot(): " + vehicle.IsStoppedInDepot(11)); print(" SendVehicleToDepot(): " + vehicle.SendVehicleToDepot(11)); + print(" IsInDepot(): " + vehicle.IsInDepot(11)); + print(" IsStoppedInDepot(): " + vehicle.IsStoppedInDepot(11)); bank_after = company.GetBankBalance(AICompany.MY_COMPANY); @@ -849,13 +855,21 @@ print(" GetProfitThisYear(): " + vehicle.GetProfitThisYear(11)); print(" GetProfitLastYear(): " + vehicle.GetProfitLastYear(11)); print(" GetVehicleType(): " + vehicle.GetVehicleType(11)); + print(" IsInDepot(): " + vehicle.IsInDepot(11)); + print(" IsStoppedInDepot(): " + vehicle.IsStoppedInDepot(11)); print(" BuildVehicle(): " + vehicle.BuildVehicle(32119, 219)); print(" IsValidVehicle(13): " + vehicle.IsValidVehicle(13)); + print(" IsInDepot(13): " + vehicle.IsInDepot(13)); + print(" IsStoppedInDepot(13): " + vehicle.IsStoppedInDepot(13)); print(" IsValidVehicle(14): " + vehicle.IsValidVehicle(14)); + print(" IsInDepot(14): " + vehicle.IsInDepot(14)); + print(" IsStoppedInDepot(14): " + vehicle.IsStoppedInDepot(14)); print(" BuildVehicle(): " + vehicle.BuildVehicle(28479, 204)); print(" IsValidVehicle(15): " + vehicle.IsValidVehicle(15)); + print(" IsInDepot(15): " + vehicle.IsInDepot(15)); + print(" IsStoppedInDepot(15): " + vehicle.IsStoppedInDepot(15)); local list = AIVehicleList(); Index: bin/ai/regression/regression.txt =================================================================== --- bin/ai/regression/regression.txt (revision 11288) +++ bin/ai/regression/regression.txt (working copy) @@ -2532,8 +2532,14 @@ Should be: 11970 ResetCosts(): (null : 0x00000000) SellVehicle(12): true + IsInDepot(): true + IsStoppedInDepot(): true StartStopVehicle(): true + IsInDepot(): false + IsStoppedInDepot(): false SendVehicleToDepot(): true + IsInDepot(): false + IsStoppedInDepot(): false --Accounting-- GetCosts(): -5985 Should be: -5985 @@ -2551,11 +2557,19 @@ GetProfitThisYear(): -1 GetProfitLastYear(): 0 GetVehicleType(): 1 + IsInDepot(): false + IsStoppedInDepot(): false BuildVehicle(): 13 IsValidVehicle(13): true + IsInDepot(13): true + IsStoppedInDepot(13): true IsValidVehicle(14): false + IsInDepot(14): false + IsStoppedInDepot(14): false BuildVehicle(): 15 IsValidVehicle(15): true + IsInDepot(15): true + IsStoppedInDepot(15): true --VehicleList-- Count(): 4 Index: src/ai/api/ai_vehicle.cpp =================================================================== --- src/ai/api/ai_vehicle.cpp (revision 11288) +++ src/ai/api/ai_vehicle.cpp (working copy) @@ -172,6 +172,18 @@ } } +bool AIVehicle::IsInDepot(VehicleID vehicle_id) +{ + if (!this->IsValidVehicle(vehicle_id)) return false; + return ::GetVehicle(vehicle_id)->IsInDepot(); +} + +bool AIVehicle::IsStoppedInDepot(VehicleID vehicle_id) +{ + if (!this->IsValidVehicle(vehicle_id)) return false; + return ::GetVehicle(vehicle_id)->IsStoppedInDepot(); +} + bool AIVehicle::StartStopVehicle(VehicleID vehicle_id) { if (!this->IsValidVehicle(vehicle_id)) return false; Index: src/ai/api/ai_vehicle.hpp =================================================================== --- src/ai/api/ai_vehicle.hpp (revision 11288) +++ src/ai/api/ai_vehicle.hpp (working copy) @@ -147,6 +147,22 @@ bool SendVehicleToDepot(VehicleID vehicle_id); /** + * Check if a vehicle is in a depot. + * @param vehicle_id the vehicle to check. + * @pre isValidVehicle(vehicle_id). + * @return true if and only if the vehicle is in a depot. + */ + bool IsInDepot(VehicleID vehicle_id); + + /** + * Check if a vehicle is in a depot and stopped. + * @param vehicle_id the vehicle to check. + * @pre isValidVehicle(vehicle_id). + * @return true if and only if the vehicle is in a depot and stopped. + */ + bool IsStoppedInDepot(VehicleID vehicle_id); + + /** * Starts or stops the given vehicle depending on the current state. * @param vehicle_id the vehicle to start/stop. * @pre IsValidVehicle(vehicle_id). Index: src/ai/api/ai_vehicle.hpp.sq =================================================================== --- src/ai/api/ai_vehicle.hpp.sq (revision 11288) +++ src/ai/api/ai_vehicle.hpp.sq (working copy) @@ -46,6 +46,8 @@ SQAIVehicle.DefSQMethod(engine, &AIVehicle::RefitVehicle, "RefitVehicle", 3, "xii"); SQAIVehicle.DefSQMethod(engine, &AIVehicle::SellVehicle, "SellVehicle", 2, "xi"); SQAIVehicle.DefSQMethod(engine, &AIVehicle::SendVehicleToDepot, "SendVehicleToDepot", 2, "xi"); + SQAIVehicle.DefSQMethod(engine, &AIVehicle::IsInDepot, "IsInDepot", 2, "xi"); + SQAIVehicle.DefSQMethod(engine, &AIVehicle::IsStoppedInDepot, "IsStoppedInDepot", 2, "xi"); SQAIVehicle.DefSQMethod(engine, &AIVehicle::StartStopVehicle, "StartStopVehicle", 2, "xi"); SQAIVehicle.DefSQMethod(engine, &AIVehicle::SkipToVehicleOrder, "SkipToVehicleOrder", 3, "xii"); SQAIVehicle.DefSQMethod(engine, &AIVehicle::SetName, "SetName", 3, "xis");