Script: Allow changing ops limit and memory limit settings in game

This commit is contained in:
Jonathan G Rennison
2020-09-14 18:04:19 +01:00
parent 15fc3f5ba3
commit 45386efcd0
6 changed files with 82 additions and 2 deletions

View File

@@ -710,6 +710,16 @@ SQInteger ScriptInstance::GetOpsTillSuspend()
return this->engine->GetOpsTillSuspend();
}
void ScriptInstance::LimitOpsTillSuspend(SQInteger suspend)
{
SQInteger current = this->GetOpsTillSuspend();
if (suspend < current) {
/* Reduce script ops. */
HSQUIRRELVM vm = this->engine->GetVM();
Squirrel::DecreaseOps(vm, current - suspend);
}
}
bool ScriptInstance::DoCommandCallback(const CommandCost &result, TileIndex tile, uint32 p1, uint32 p2, uint32 cmd)
{
ScriptObject::ActiveInstance active(this);
@@ -746,6 +756,11 @@ size_t ScriptInstance::GetAllocatedMemory() const
return this->engine->GetAllocatedMemory();
}
void ScriptInstance::SetMemoryAllocationLimit(size_t limit) const
{
if (this->engine != nullptr) this->engine->SetMemoryAllocationLimit(limit);
}
void ScriptInstance::ReleaseSQObject(HSQOBJECT *obj)
{
if (!this->in_shutdown) this->engine->ReleaseObject(obj);