(svn r23209) -Codechange: track the current active script instance directly, instead of assuming the current company points you to the right one.

This commit is contained in:
truebrain
2011-11-13 20:43:48 +00:00
parent 407514a590
commit b7a655bf4c
9 changed files with 138 additions and 52 deletions

View File

@@ -52,7 +52,8 @@
c->ai_info = info;
assert(c->ai_instance == NULL);
c->ai_instance = new AIInstance(info);
c->ai_instance = new AIInstance();
c->ai_instance->Initialize(info);
cur_company.Restore();
@@ -214,7 +215,7 @@
/* Queue the event */
Backup<CompanyByte> cur_company(_current_company, company, FILE_LINE);
AIEventController::InsertEvent(event);
Company::Get(_current_company)->ai_instance->InsertEvent(event);
cur_company.Restore();
event->Release();
@@ -248,15 +249,7 @@
*/
void CcAI(const CommandCost &result, TileIndex tile, uint32 p1, uint32 p2)
{
AIObject::SetLastCommandRes(result.Succeeded());
if (result.Failed()) {
AIObject::SetLastError(AIError::StringToError(result.GetErrorMessage()));
} else {
AIObject::IncreaseDoCommandCosts(result.GetCost());
AIObject::SetLastCost(result.GetCost());
}
Company::Get(_current_company)->ai_instance->DoCommandCallback(result, tile, p1, p2);
Company::Get(_current_company)->ai_instance->Continue();
}
@@ -327,7 +320,7 @@ void CcAI(const CommandCost &result, TileIndex tile, uint32 p1, uint32 p2)
/* static */ bool AI::ImportLibrary(const char *library, const char *class_name, int version, HSQUIRRELVM vm)
{
return AI::ai_scanner->ImportLibrary(library, class_name, version, vm, Company::Get(_current_company)->ai_instance->GetController());
return AI::ai_scanner->ImportLibrary(library, class_name, version, vm, AIObject::GetActiveInstance()->GetController());
}
/* static */ void AI::Rescan()