mirror of
https://github.com/OpenTTD/OpenTTD.git
synced 2025-06-18 19:19:29 +01:00
Codechange: Remove manual memory management of AIScannerInfo::info_dummy (#14338)
Co-authored-by: Henry Wilson <henry@henryandlizzy.uk>
This commit is contained in:
parent
ea410cfe85
commit
56bc391763
@ -108,7 +108,7 @@ template <> SQInteger PushClassName<AIInfo, ScriptType::AI>(HSQUIRRELVM vm) { sq
|
||||
/* Remove the link to the real instance, else it might get deleted by RegisterAI() */
|
||||
sq_setinstanceup(vm, 2, nullptr);
|
||||
/* Register the AI to the base system */
|
||||
static_cast<AIScannerInfo *>(info->GetScanner())->SetDummyAI(info);
|
||||
static_cast<AIScannerInfo *>(info->GetScanner())->SetDummyAI(std::unique_ptr<AIInfo>(info));
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -22,11 +22,8 @@
|
||||
#include "../safeguards.h"
|
||||
|
||||
|
||||
AIScannerInfo::AIScannerInfo() :
|
||||
ScriptScanner(),
|
||||
info_dummy(nullptr)
|
||||
{
|
||||
}
|
||||
AIScannerInfo::AIScannerInfo() = default;
|
||||
AIScannerInfo::~AIScannerInfo() = default;
|
||||
|
||||
void AIScannerInfo::Initialize()
|
||||
{
|
||||
@ -39,14 +36,9 @@ void AIScannerInfo::Initialize()
|
||||
Script_CreateDummyInfo(this->engine->GetVM(), "AI", "ai");
|
||||
}
|
||||
|
||||
void AIScannerInfo::SetDummyAI(class AIInfo *info)
|
||||
void AIScannerInfo::SetDummyAI(std::unique_ptr<class AIInfo> &&info)
|
||||
{
|
||||
this->info_dummy = info;
|
||||
}
|
||||
|
||||
AIScannerInfo::~AIScannerInfo()
|
||||
{
|
||||
delete this->info_dummy;
|
||||
this->info_dummy = std::move(info);
|
||||
}
|
||||
|
||||
std::string AIScannerInfo::GetScriptName(ScriptInfo &info)
|
||||
@ -63,7 +55,7 @@ AIInfo *AIScannerInfo::SelectRandomAI() const
|
||||
{
|
||||
if (_game_mode == GM_MENU) {
|
||||
Debug(script, 0, "The intro game should not use AI, loading 'dummy' AI.");
|
||||
return this->info_dummy;
|
||||
return this->info_dummy.get();
|
||||
}
|
||||
|
||||
/* Filter for AIs suitable as Random AI. */
|
||||
@ -72,7 +64,7 @@ AIInfo *AIScannerInfo::SelectRandomAI() const
|
||||
uint num_random_ais = std::ranges::distance(random_ais);
|
||||
if (num_random_ais == 0) {
|
||||
Debug(script, 0, "No suitable AI found, loading 'dummy' AI.");
|
||||
return this->info_dummy;
|
||||
return this->info_dummy.get();
|
||||
}
|
||||
|
||||
/* Pick a random AI */
|
||||
|
@ -37,7 +37,7 @@ public:
|
||||
/**
|
||||
* Set the Dummy AI.
|
||||
*/
|
||||
void SetDummyAI(class AIInfo *info);
|
||||
void SetDummyAI(std::unique_ptr<class AIInfo> &&info);
|
||||
|
||||
protected:
|
||||
std::string GetScriptName(ScriptInfo &info) override;
|
||||
@ -47,7 +47,7 @@ protected:
|
||||
void RegisterAPI(class Squirrel &engine) override;
|
||||
|
||||
private:
|
||||
AIInfo *info_dummy; ///< The dummy AI.
|
||||
std::unique_ptr<AIInfo> info_dummy; ///< The dummy AI.
|
||||
};
|
||||
|
||||
class AIScannerLibrary : public ScriptScanner {
|
||||
|
Loading…
Reference in New Issue
Block a user