diff --git a/code/midtown/mmai/aiGoal.h b/code/midtown/mmai/aiGoal.h index 123fb033..695f068f 100644 --- a/code/midtown/mmai/aiGoal.h +++ b/code/midtown/mmai/aiGoal.h @@ -40,7 +40,7 @@ class aiGoal virtual b32 Context() = 0; - virtual i32 Priority() = 0; + virtual b32 Priority() = 0; // ?Update@aiGoal@@UAEXXZ | inline ARTS_EXPORT virtual void Update() diff --git a/code/midtown/mmai/aiGoalBackup.cpp b/code/midtown/mmai/aiGoalBackup.cpp index aa20d873..d2b24882 100644 --- a/code/midtown/mmai/aiGoalBackup.cpp +++ b/code/midtown/mmai/aiGoalBackup.cpp @@ -41,9 +41,9 @@ b32 aiGoalBackup::Context() return *BackingUp; } -i32 aiGoalBackup::Priority() +b32 aiGoalBackup::Priority() { - return 1; + return true; } void aiGoalBackup::Reset() diff --git a/code/midtown/mmai/aiGoalBackup.h b/code/midtown/mmai/aiGoalBackup.h index 3ce65859..5d0eb26f 100644 --- a/code/midtown/mmai/aiGoalBackup.h +++ b/code/midtown/mmai/aiGoalBackup.h @@ -50,7 +50,7 @@ class aiGoalBackup final : public aiGoal ARTS_EXPORT void Init() override; // ?Priority@aiGoalBackup@@UAEHXZ - ARTS_EXPORT i32 Priority() override; + ARTS_EXPORT b32 Priority() override; // ?Reset@aiGoalBackup@@UAEXXZ ARTS_EXPORT void Reset() override; diff --git a/code/midtown/mmai/aiGoalStop.cpp b/code/midtown/mmai/aiGoalStop.cpp index 4e2b4407..b92d4017 100644 --- a/code/midtown/mmai/aiGoalStop.cpp +++ b/code/midtown/mmai/aiGoalStop.cpp @@ -20,5 +20,37 @@ define_dummy_symbol(mmai_aiGoalStop); #include "aiGoalStop.h" +#include "mmcar/car.h" + +aiGoalStop::aiGoalStop(mmCar* car, i16* stop_id) + : Car(car) + , StopId(stop_id) +{} + +b32 aiGoalStop::Context() +{ + if (*StopId) + return true; + + UpdateCount = 0; + return false; +} + +b32 aiGoalStop::Priority() +{ + return true; +} + void aiGoalStop::Reset() {} + +void aiGoalStop::Update() +{ + ++UpdateCount; + + Car->Sim.Steering = 0.0f; + Car->Sim.Engine.Throttle = 0.0f; + Car->Sim.Brakes = 1.0f; + + Car->Sim.ICS.LinearMomentum *= 0.95f; +} diff --git a/code/midtown/mmai/aiGoalStop.h b/code/midtown/mmai/aiGoalStop.h index 3037bdb0..19be4e0c 100644 --- a/code/midtown/mmai/aiGoalStop.h +++ b/code/midtown/mmai/aiGoalStop.h @@ -37,27 +37,28 @@ class aiGoalStop final : public aiGoal { public: // ??0aiGoalStop@@QAE@PAVmmCar@@PAF@Z - ARTS_IMPORT aiGoalStop(mmCar* arg1, b16* arg2); + ARTS_EXPORT aiGoalStop(mmCar* car, i16* stop_id); // ??1aiGoalStop@@QAE@XZ - ARTS_IMPORT ~aiGoalStop() = default; + ARTS_EXPORT ~aiGoalStop() = default; // ?Context@aiGoalStop@@UAEHXZ - ARTS_IMPORT b32 Context() override; + ARTS_EXPORT b32 Context() override; // ?Init@aiGoalStop@@UAEXXZ ARTS_IMPORT void Init() override; // ?Priority@aiGoalStop@@UAEHXZ - ARTS_IMPORT i32 Priority() override; + ARTS_EXPORT b32 Priority() override; // ?Reset@aiGoalStop@@UAEXXZ ARTS_EXPORT void Reset() override; // ?Update@aiGoalStop@@UAEXXZ - ARTS_IMPORT void Update() override; + ARTS_EXPORT void Update() override; - u8 gap8[0x8]; + mmCar* Car; + i16* StopId; }; check_size(aiGoalStop, 0x10);