mirror of
https://github.com/OpenTTD/OpenTTD
synced 2026-01-26 13:44:16 +01:00
Codechange: Pass ScriptInstance by reference.
This commit is contained in:
committed by
Peter Nelson
parent
13fcc0900e
commit
72ca962b84
@@ -49,7 +49,7 @@ void ScriptAsyncMode::FinalRelease()
|
||||
{
|
||||
if (this->GetDoCommandAsyncModeInstance() != this) {
|
||||
/* Ignore this error if the script is not alive. */
|
||||
if (ScriptObject::GetActiveInstance()->IsAlive()) {
|
||||
if (ScriptObject::GetActiveInstance().IsAlive()) {
|
||||
throw Script_FatalError("Asyncmode object was removed while it was not the latest *Mode object created.");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -43,7 +43,7 @@
|
||||
* Helper function to connect a just built bridge to nearby roads.
|
||||
* @param instance The script instance we have to built the road for.
|
||||
*/
|
||||
static void _DoCommandReturnBuildBridge2(class ScriptInstance *instance)
|
||||
static void _DoCommandReturnBuildBridge2(class ScriptInstance &instance)
|
||||
{
|
||||
if (!ScriptBridge::_BuildBridgeRoad2()) {
|
||||
ScriptInstance::DoCommandReturn(instance);
|
||||
@@ -59,7 +59,7 @@ static void _DoCommandReturnBuildBridge2(class ScriptInstance *instance)
|
||||
* Helper function to connect a just built bridge to nearby roads.
|
||||
* @param instance The script instance we have to built the road for.
|
||||
*/
|
||||
static void _DoCommandReturnBuildBridge1(class ScriptInstance *instance)
|
||||
static void _DoCommandReturnBuildBridge1(class ScriptInstance &instance)
|
||||
{
|
||||
if (!ScriptBridge::_BuildBridgeRoad1()) {
|
||||
ScriptInstance::DoCommandReturn(instance);
|
||||
|
||||
@@ -49,7 +49,7 @@
|
||||
{
|
||||
if (_network_dedicated || !_settings_client.gui.ai_developer_tools) return;
|
||||
|
||||
ScriptObject::GetActiveInstance()->Pause();
|
||||
ScriptObject::GetActiveInstance().Pause();
|
||||
|
||||
ScriptLog::Log(ScriptLogTypes::LOG_SQ_ERROR, fmt::format("Break: {}", message));
|
||||
|
||||
@@ -76,17 +76,17 @@ ScriptController::ScriptController(::CompanyID company) :
|
||||
|
||||
/* static */ uint ScriptController::GetTick()
|
||||
{
|
||||
return ScriptObject::GetActiveInstance()->GetController()->ticks;
|
||||
return ScriptObject::GetActiveInstance().GetController()->ticks;
|
||||
}
|
||||
|
||||
/* static */ int ScriptController::GetOpsTillSuspend()
|
||||
{
|
||||
return ScriptObject::GetActiveInstance()->GetOpsTillSuspend();
|
||||
return ScriptObject::GetActiveInstance().GetOpsTillSuspend();
|
||||
}
|
||||
|
||||
/* static */ int ScriptController::GetSetting(const std::string &name)
|
||||
{
|
||||
return ScriptObject::GetActiveInstance()->GetSetting(name);
|
||||
return ScriptObject::GetActiveInstance().GetSetting(name);
|
||||
}
|
||||
|
||||
/* static */ uint ScriptController::GetVersion()
|
||||
@@ -96,11 +96,11 @@ ScriptController::ScriptController(::CompanyID company) :
|
||||
|
||||
/* static */ HSQOBJECT ScriptController::Import(const std::string &library, const std::string &class_name, int version)
|
||||
{
|
||||
ScriptController *controller = ScriptObject::GetActiveInstance()->GetController();
|
||||
Squirrel *engine = ScriptObject::GetActiveInstance()->engine;
|
||||
ScriptController *controller = ScriptObject::GetActiveInstance().GetController();
|
||||
Squirrel *engine = ScriptObject::GetActiveInstance().engine;
|
||||
HSQUIRRELVM vm = engine->GetVM();
|
||||
|
||||
ScriptInfo *lib = ScriptObject::GetActiveInstance()->FindLibrary(library, version);
|
||||
ScriptInfo *lib = ScriptObject::GetActiveInstance().FindLibrary(library, version);
|
||||
if (lib == nullptr) {
|
||||
throw sq_throwerror(vm, fmt::format("couldn't find library '{}' with version {}", library, version));
|
||||
}
|
||||
|
||||
@@ -32,7 +32,7 @@ void ScriptExecMode::FinalRelease()
|
||||
{
|
||||
if (this->GetDoCommandModeInstance() != this) {
|
||||
/* Ignore this error if the script is not alive. */
|
||||
if (ScriptObject::GetActiveInstance()->IsAlive()) {
|
||||
if (ScriptObject::GetActiveInstance().IsAlive()) {
|
||||
throw Script_FatalError("ScriptExecMode object was removed while it was not the latest *Mode object created.");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -46,16 +46,16 @@ void SimpleCountedObject::Release()
|
||||
*/
|
||||
static ScriptStorage *GetStorage()
|
||||
{
|
||||
return ScriptObject::GetActiveInstance()->GetStorage();
|
||||
return ScriptObject::GetActiveInstance().GetStorage();
|
||||
}
|
||||
|
||||
|
||||
/* static */ ScriptInstance *ScriptObject::ActiveInstance::active = nullptr;
|
||||
|
||||
ScriptObject::ActiveInstance::ActiveInstance(ScriptInstance *instance) : alc_scope(instance->engine)
|
||||
ScriptObject::ActiveInstance::ActiveInstance(ScriptInstance &instance) : alc_scope(instance.engine)
|
||||
{
|
||||
this->last_active = ScriptObject::ActiveInstance::active;
|
||||
ScriptObject::ActiveInstance::active = instance;
|
||||
ScriptObject::ActiveInstance::active = &instance;
|
||||
}
|
||||
|
||||
ScriptObject::ActiveInstance::~ActiveInstance()
|
||||
@@ -63,10 +63,10 @@ ScriptObject::ActiveInstance::~ActiveInstance()
|
||||
ScriptObject::ActiveInstance::active = this->last_active;
|
||||
}
|
||||
|
||||
/* static */ ScriptInstance *ScriptObject::GetActiveInstance()
|
||||
/* static */ ScriptInstance &ScriptObject::GetActiveInstance()
|
||||
{
|
||||
assert(ScriptObject::ActiveInstance::active != nullptr);
|
||||
return ScriptObject::ActiveInstance::active;
|
||||
return *ScriptObject::ActiveInstance::active;
|
||||
}
|
||||
|
||||
|
||||
@@ -235,7 +235,7 @@ ScriptObject::ActiveInstance::~ActiveInstance()
|
||||
|
||||
/* static */ bool ScriptObject::CanSuspend()
|
||||
{
|
||||
Squirrel *squirrel = ScriptObject::GetActiveInstance()->engine;
|
||||
Squirrel *squirrel = ScriptObject::GetActiveInstance().engine;
|
||||
return GetStorage()->allow_do_command && squirrel->CanSuspend();
|
||||
}
|
||||
|
||||
@@ -262,7 +262,7 @@ ScriptObject::ActiveInstance::~ActiveInstance()
|
||||
|
||||
/* static */ CommandCallbackData *ScriptObject::GetDoCommandCallback()
|
||||
{
|
||||
return ScriptObject::GetActiveInstance()->GetDoCommandCallback();
|
||||
return ScriptObject::GetActiveInstance().GetDoCommandCallback();
|
||||
}
|
||||
|
||||
std::tuple<bool, bool, bool, bool> ScriptObject::DoCommandPrep()
|
||||
@@ -315,7 +315,7 @@ bool ScriptObject::DoCommandProcessResult(const CommandCost &res, Script_Suspend
|
||||
IncreaseDoCommandCosts(res.GetCost());
|
||||
if (!_generating_world) {
|
||||
/* Charge a nominal fee for asynchronously executed commands */
|
||||
Squirrel *engine = ScriptObject::GetActiveInstance()->engine;
|
||||
Squirrel *engine = ScriptObject::GetActiveInstance().engine;
|
||||
Squirrel::DecreaseOps(engine->GetVM(), 100);
|
||||
}
|
||||
if (callback != nullptr) {
|
||||
|
||||
@@ -75,7 +75,7 @@ protected:
|
||||
class ActiveInstance {
|
||||
friend class ScriptObject;
|
||||
public:
|
||||
ActiveInstance(ScriptInstance *instance);
|
||||
ActiveInstance(ScriptInstance &instance);
|
||||
~ActiveInstance();
|
||||
private:
|
||||
ScriptInstance *last_active; ///< The active instance before we go instantiated.
|
||||
@@ -117,7 +117,7 @@ public:
|
||||
* Get the currently active instance.
|
||||
* @return The instance.
|
||||
*/
|
||||
static class ScriptInstance *GetActiveInstance();
|
||||
static class ScriptInstance &GetActiveInstance();
|
||||
|
||||
/**
|
||||
* Get a reference of the randomizer that brings this script random values.
|
||||
|
||||
@@ -579,7 +579,7 @@ static ScriptOrder::OrderPosition RealOrderPositionToScriptOrderPosition(Vehicle
|
||||
* between the wanted and the current order.
|
||||
* @param instance The script instance we are doing the callback for.
|
||||
*/
|
||||
static void _DoCommandReturnSetOrderFlags(class ScriptInstance *instance)
|
||||
static void _DoCommandReturnSetOrderFlags(class ScriptInstance &instance)
|
||||
{
|
||||
ScriptObject::SetLastCommandRes(ScriptOrder::_SetOrderFlags());
|
||||
ScriptInstance::DoCommandReturn(instance);
|
||||
|
||||
@@ -26,9 +26,9 @@ static bool operator==(const ScriptPriorityQueue::PriorityItem &lhs, const HSQOB
|
||||
ScriptPriorityQueue::~ScriptPriorityQueue()
|
||||
{
|
||||
/* Release reference to stored objects. */
|
||||
auto inst = ScriptObject::GetActiveInstance();
|
||||
if (!inst->InShutdown()) {
|
||||
for (auto &i : this->queue) inst->ReleaseSQObject(const_cast<HSQOBJECT *>(&i.second));
|
||||
auto &inst = ScriptObject::GetActiveInstance();
|
||||
if (!inst.InShutdown()) {
|
||||
for (auto &i : this->queue) inst.ReleaseSQObject(const_cast<HSQOBJECT *>(&i.second));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -32,7 +32,7 @@ void ScriptTestMode::FinalRelease()
|
||||
{
|
||||
if (this->GetDoCommandModeInstance() != this) {
|
||||
/* Ignore this error if the script is not alive. */
|
||||
if (ScriptObject::GetActiveInstance()->IsAlive()) {
|
||||
if (ScriptObject::GetActiveInstance().IsAlive()) {
|
||||
throw Script_FatalError("Testmode object was removed while it was not the latest *Mode object created.");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -51,7 +51,7 @@
|
||||
* Helper function to connect a just built tunnel to nearby roads.
|
||||
* @param instance The script instance we have to built the road for.
|
||||
*/
|
||||
static void _DoCommandReturnBuildTunnel2(class ScriptInstance *instance)
|
||||
static void _DoCommandReturnBuildTunnel2(class ScriptInstance &instance)
|
||||
{
|
||||
if (!ScriptTunnel::_BuildTunnelRoad2()) {
|
||||
ScriptInstance::DoCommandReturn(instance);
|
||||
@@ -67,7 +67,7 @@ static void _DoCommandReturnBuildTunnel2(class ScriptInstance *instance)
|
||||
* Helper function to connect a just built tunnel to nearby roads.
|
||||
* @param instance The script instance we have to built the road for.
|
||||
*/
|
||||
static void _DoCommandReturnBuildTunnel1(class ScriptInstance *instance)
|
||||
static void _DoCommandReturnBuildTunnel1(class ScriptInstance &instance)
|
||||
{
|
||||
if (!ScriptTunnel::_BuildTunnelRoad1()) {
|
||||
ScriptInstance::DoCommandReturn(instance);
|
||||
|
||||
Reference in New Issue
Block a user