diff options
author | truebrain <truebrain@openttd.org> | 2011-11-13 20:43:48 +0000 |
---|---|---|
committer | truebrain <truebrain@openttd.org> | 2011-11-13 20:43:48 +0000 |
commit | b7a655bf4cafc68e14cade593e8b1aca7f04f7dd (patch) | |
tree | 1880bbb64896193511e72c23c9387af2bb19acae /src/ai/api/ai_object.cpp | |
parent | 407514a590dc06c8b80c5304b5e9227c8c844f91 (diff) | |
download | openttd-b7a655bf4cafc68e14cade593e8b1aca7f04f7dd.tar.xz |
(svn r23209) -Codechange: track the current active script instance directly, instead of assuming the current company points you to the right one.
Diffstat (limited to 'src/ai/api/ai_object.cpp')
-rw-r--r-- | src/ai/api/ai_object.cpp | 27 |
1 files changed, 23 insertions, 4 deletions
diff --git a/src/ai/api/ai_object.cpp b/src/ai/api/ai_object.cpp index 4c415524b..53f2f2b55 100644 --- a/src/ai/api/ai_object.cpp +++ b/src/ai/api/ai_object.cpp @@ -12,8 +12,6 @@ #include "../../stdafx.h" #include "../../script/squirrel.hpp" #include "../../command_func.h" -#include "../../company_base.h" -#include "../../company_func.h" #include "../../network/network.h" #include "../../tunnelbridge.h" @@ -27,9 +25,30 @@ */ static AIStorage *GetStorage() { - return AIInstance::GetStorage(); + return AIObject::GetActiveInstance()->GetStorage(); } + +/* static */ AIInstance *AIObject::ActiveInstance::active = NULL; + +AIObject::ActiveInstance::ActiveInstance(AIInstance *instance) +{ + this->last_active = AIObject::ActiveInstance::active; + AIObject::ActiveInstance::active = instance; +} + +AIObject::ActiveInstance::~ActiveInstance() +{ + AIObject::ActiveInstance::active = this->last_active; +} + +/* static */ AIInstance *AIObject::GetActiveInstance() +{ + assert(AIObject::ActiveInstance::active != NULL); + return AIObject::ActiveInstance::active; +} + + /* static */ void AIObject::SetDoCommandDelay(uint ticks) { assert(ticks > 0); @@ -179,7 +198,7 @@ static AIStorage *GetStorage() /* static */ bool AIObject::CanSuspend() { - Squirrel *squirrel = Company::Get(_current_company)->ai_instance->engine; + Squirrel *squirrel = AIObject::GetActiveInstance()->engine; return GetStorage()->allow_do_command && squirrel->CanSuspend(); } |