(svn r17345) -Fix [FS#2769]: one wasn't offered to take over bankrupt companies anymore; caused by the introduction NoAI, although NewAI had the same problem too.
This commit is contained in:
@@ -186,6 +186,7 @@ void AIInstance::RegisterAPI()
|
||||
SQAIEngineList_Register(this->engine);
|
||||
SQAIError_Register(this->engine);
|
||||
SQAIEvent_Register(this->engine);
|
||||
SQAIEventCompanyAskMerger_Register(this->engine);
|
||||
SQAIEventCompanyBankrupt_Register(this->engine);
|
||||
SQAIEventCompanyInTrouble_Register(this->engine);
|
||||
SQAIEventCompanyMerger_Register(this->engine);
|
||||
|
@@ -19,6 +19,7 @@
|
||||
* API additions:
|
||||
* \li AIBaseStation
|
||||
* \li AIBuoyList
|
||||
* \li AIEventCompanyAskMerger
|
||||
* \li AIRail::RemoveRailWaypointTileRect
|
||||
* \li AISubsidy::SubsidyParticipantType
|
||||
* \li AISubsidy::GetSourceType
|
||||
|
@@ -36,6 +36,7 @@ public:
|
||||
AI_ET_ENGINE_PREVIEW,
|
||||
AI_ET_COMPANY_NEW,
|
||||
AI_ET_COMPANY_IN_TROUBLE,
|
||||
AI_ET_COMPANY_ASK_MERGER,
|
||||
AI_ET_COMPANY_MERGER,
|
||||
AI_ET_COMPANY_BANKRUPT,
|
||||
AI_ET_VEHICLE_CRASHED,
|
||||
|
@@ -38,6 +38,7 @@ void SQAIEvent_Register(Squirrel *engine) {
|
||||
SQAIEvent.DefSQConst(engine, AIEvent::AI_ET_ENGINE_PREVIEW, "AI_ET_ENGINE_PREVIEW");
|
||||
SQAIEvent.DefSQConst(engine, AIEvent::AI_ET_COMPANY_NEW, "AI_ET_COMPANY_NEW");
|
||||
SQAIEvent.DefSQConst(engine, AIEvent::AI_ET_COMPANY_IN_TROUBLE, "AI_ET_COMPANY_IN_TROUBLE");
|
||||
SQAIEvent.DefSQConst(engine, AIEvent::AI_ET_COMPANY_ASK_MERGER, "AI_ET_COMPANY_ASK_MERGER");
|
||||
SQAIEvent.DefSQConst(engine, AIEvent::AI_ET_COMPANY_MERGER, "AI_ET_COMPANY_MERGER");
|
||||
SQAIEvent.DefSQConst(engine, AIEvent::AI_ET_COMPANY_BANKRUPT, "AI_ET_COMPANY_BANKRUPT");
|
||||
SQAIEvent.DefSQConst(engine, AIEvent::AI_ET_VEHICLE_CRASHED, "AI_ET_VEHICLE_CRASHED");
|
||||
|
@@ -92,3 +92,8 @@ bool AIEventEnginePreview::AcceptPreview()
|
||||
{
|
||||
return AIObject::DoCommand(0, this->engine, 0, CMD_WANT_ENGINE_PREVIEW);
|
||||
}
|
||||
|
||||
bool AIEventCompanyAskMerger::AcceptMerger()
|
||||
{
|
||||
return AIObject::DoCommand(0, this->owner, 0, CMD_BUY_COMPANY);
|
||||
}
|
||||
|
@@ -358,6 +358,54 @@ private:
|
||||
AICompany::CompanyID owner;
|
||||
};
|
||||
|
||||
/**
|
||||
* Event Company Ask Merger, indicating a company can be bought (cheaply) by you.
|
||||
*/
|
||||
class AIEventCompanyAskMerger : public AIEvent {
|
||||
public:
|
||||
static const char *GetClassName() { return "AIEventCompanyAskMerger"; }
|
||||
|
||||
/**
|
||||
* @param owner The company that can be bough.
|
||||
* @param value The value/costs of buying the company.
|
||||
*/
|
||||
AIEventCompanyAskMerger(Owner owner, int32 value) :
|
||||
AIEvent(AI_ET_COMPANY_MERGER),
|
||||
owner((AICompany::CompanyID)owner),
|
||||
value(value)
|
||||
{}
|
||||
|
||||
/**
|
||||
* Convert an AIEvent to the real instance.
|
||||
* @param instance The instance to convert.
|
||||
* @return The converted instance.
|
||||
*/
|
||||
static AIEventCompanyAskMerger *Convert(AIEvent *instance) { return (AIEventCompanyAskMerger *)instance; }
|
||||
|
||||
/**
|
||||
* Get the CompanyID of the company that can be bought.
|
||||
* @return The CompanyID of the company that can be bought.
|
||||
* @note If the company is bought this will become invalid.
|
||||
*/
|
||||
AICompany::CompanyID GetCompanyID() { return this->owner; }
|
||||
|
||||
/**
|
||||
* Get the value of the new company.
|
||||
* @return The value of the new company.
|
||||
*/
|
||||
int32 GetValue() { return this->value; }
|
||||
|
||||
/**
|
||||
* Take over the company for this merger.
|
||||
* @return true if the merger was a success.
|
||||
*/
|
||||
bool AcceptMerger();
|
||||
|
||||
private:
|
||||
AICompany::CompanyID owner;
|
||||
int32 value;
|
||||
};
|
||||
|
||||
/**
|
||||
* Event Company Merger, indicating a company has been bought by another
|
||||
* company.
|
||||
|
@@ -191,6 +191,28 @@ void SQAIEventCompanyInTrouble_Register(Squirrel *engine) {
|
||||
SQAIEventCompanyInTrouble.PostRegister(engine);
|
||||
}
|
||||
|
||||
namespace SQConvert {
|
||||
/* Allow AIEventCompanyAskMerger to be used as Squirrel parameter */
|
||||
template <> AIEventCompanyAskMerger *GetParam(ForceType<AIEventCompanyAskMerger *>, HSQUIRRELVM vm, int index, SQAutoFreePointers *ptr) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return (AIEventCompanyAskMerger *)instance; }
|
||||
template <> AIEventCompanyAskMerger &GetParam(ForceType<AIEventCompanyAskMerger &>, HSQUIRRELVM vm, int index, SQAutoFreePointers *ptr) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return *(AIEventCompanyAskMerger *)instance; }
|
||||
template <> const AIEventCompanyAskMerger *GetParam(ForceType<const AIEventCompanyAskMerger *>, HSQUIRRELVM vm, int index, SQAutoFreePointers *ptr) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return (AIEventCompanyAskMerger *)instance; }
|
||||
template <> const AIEventCompanyAskMerger &GetParam(ForceType<const AIEventCompanyAskMerger &>, HSQUIRRELVM vm, int index, SQAutoFreePointers *ptr) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return *(AIEventCompanyAskMerger *)instance; }
|
||||
template <> int Return<AIEventCompanyAskMerger *>(HSQUIRRELVM vm, AIEventCompanyAskMerger *res) { if (res == NULL) { sq_pushnull(vm); return 1; } res->AddRef(); Squirrel::CreateClassInstanceVM(vm, "AIEventCompanyAskMerger", res, NULL, DefSQDestructorCallback<AIEventCompanyAskMerger>); return 1; }
|
||||
}; // namespace SQConvert
|
||||
|
||||
void SQAIEventCompanyAskMerger_Register(Squirrel *engine) {
|
||||
DefSQClass <AIEventCompanyAskMerger> SQAIEventCompanyAskMerger("AIEventCompanyAskMerger");
|
||||
SQAIEventCompanyAskMerger.PreRegister(engine, "AIEvent");
|
||||
|
||||
SQAIEventCompanyAskMerger.DefSQStaticMethod(engine, &AIEventCompanyAskMerger::Convert, "Convert", 2, ".x");
|
||||
|
||||
SQAIEventCompanyAskMerger.DefSQMethod(engine, &AIEventCompanyAskMerger::GetCompanyID, "GetCompanyID", 1, "x");
|
||||
SQAIEventCompanyAskMerger.DefSQMethod(engine, &AIEventCompanyAskMerger::GetValue, "GetValue", 1, "x");
|
||||
SQAIEventCompanyAskMerger.DefSQMethod(engine, &AIEventCompanyAskMerger::AcceptMerger, "AcceptMerger", 1, "x");
|
||||
|
||||
SQAIEventCompanyAskMerger.PostRegister(engine);
|
||||
}
|
||||
|
||||
namespace SQConvert {
|
||||
/* Allow AIEventCompanyMerger to be used as Squirrel parameter */
|
||||
template <> AIEventCompanyMerger *GetParam(ForceType<AIEventCompanyMerger *>, HSQUIRRELVM vm, int index, SQAutoFreePointers *ptr) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return (AIEventCompanyMerger *)instance; }
|
||||
|
Reference in New Issue
Block a user