Skip to content

Commit

Permalink
Add ConsoleScriptStrictness to set the strict level for console mode …
Browse files Browse the repository at this point in the history
…and /script
  • Loading branch information
Fulgen301 committed Oct 17, 2023
1 parent 0412b8e commit 0647d73
Show file tree
Hide file tree
Showing 7 changed files with 24 additions and 10 deletions.
8 changes: 8 additions & 0 deletions src/C4Config.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -110,6 +110,14 @@ void C4ConfigGeneral::CompileFunc(StdCompiler *pComp)
void C4ConfigDeveloper::CompileFunc(StdCompiler *pComp)
{
pComp->Value(mkNamingAdapt(AutoFileReload, "AutoFileReload", true, false, true));

auto strictness = std::to_underlying(ConsoleScriptStrictness);
pComp->Value(mkNamingAdapt(strictness, "ConsoleScriptStrictness", std::to_underlying(C4AulScriptStrict::STRICT3)));

if (pComp->isCompiler())
{
ConsoleScriptStrictness = static_cast<C4AulScriptStrict>(std::clamp(strictness, std::to_underlying(C4AulScriptStrict::NONSTRICT), std::to_underlying(C4AulScriptStrict::MAXSTRICT)));
}
}

void C4ConfigGraphics::CompileFunc(StdCompiler *pComp)
Expand Down
3 changes: 3 additions & 0 deletions src/C4Config.h
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@
#include "StdConfig.h"

#ifdef C4ENGINE
#include "C4AulScriptStrict.h"
#include "StdWindow.h"
#endif

Expand Down Expand Up @@ -98,6 +99,8 @@ class C4ConfigDeveloper
{
public:
bool AutoFileReload;
C4AulScriptStrict ConsoleScriptStrictness;

void CompileFunc(StdCompiler *pComp);
};

Expand Down
2 changes: 1 addition & 1 deletion src/C4Console.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -608,7 +608,7 @@ bool C4Console::In(const char *szText)
// editing enabled?
if (!EditCursor.EditingOK()) return false;
// pass through network queue
Game.Control.DoInput(CID_Script, new C4ControlScript(szText, C4ControlScript::SCOPE_Console), CDT_Decide);
Game.Control.DoInput(CID_Script, new C4ControlScript(szText, C4ControlScript::SCOPE_Console, Config.Developer.ConsoleScriptStrictness), CDT_Decide);
return true;
}

Expand Down
8 changes: 4 additions & 4 deletions src/C4Control.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -287,7 +287,7 @@ void C4ControlScript::Execute() const
else
// default: Fallback to global context
pScript = &Game.ScriptEngine;
C4Value rVal(pScript->DirectExec(pObj, szScript, "console script"));
C4Value rVal(pScript->DirectExec(pObj, szScript, "console script", false, Strict));
// show messages
// print script
if (pObj)
Expand Down Expand Up @@ -850,9 +850,9 @@ void C4ControlJoinPlayer::CompileFunc(StdCompiler *pComp)
// *** C4ControlEMMoveObject

C4ControlEMMoveObject::C4ControlEMMoveObject(C4ControlEMObjectAction eAction, int32_t tx, int32_t ty, C4Object *pTargetObj,
int32_t iObjectNum, int32_t *pObjects, const char *szScript)
int32_t iObjectNum, int32_t *pObjects, const char *szScript, const C4AulScriptStrict strict)
: eAction(eAction), tx(tx), ty(ty), iTargetObj(Game.Objects.ObjectNumber(pTargetObj)),
iObjectNum(iObjectNum), pObjects(pObjects), Script(szScript, true) {}
iObjectNum(iObjectNum), Strict{strict}, pObjects(pObjects), Script(szScript, true) {}

C4ControlEMMoveObject::~C4ControlEMMoveObject()
{
Expand Down Expand Up @@ -918,7 +918,7 @@ void C4ControlEMMoveObject::Execute() const
{
if (!pObjects) return;
// execute script ...
C4ControlScript ScriptCtrl(Script.getData(), C4ControlScript::SCOPE_Global);
C4ControlScript ScriptCtrl(Script.getData(), C4ControlScript::SCOPE_Global, Strict);
ScriptCtrl.SetByClient(iByClient);
// ... for each object in selection
for (int i = 0; i < iObjectNum; ++i)
Expand Down
9 changes: 6 additions & 3 deletions src/C4Control.h
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@

#pragma once

#include "C4AulScriptStrict.h"
#include "C4ForwardDeclarations.h"
#include "C4Id.h"
#include "C4PacketBase.h"
Expand Down Expand Up @@ -133,11 +134,12 @@ class C4ControlScript : public C4ControlPacket // sync

C4ControlScript()
: iTargetObj(-1) {}
C4ControlScript(const char *szScript, int32_t iTargetObj = SCOPE_Global)
: iTargetObj(iTargetObj), Script(szScript, true) {}
C4ControlScript(const char *szScript, int32_t iTargetObj = SCOPE_Global, C4AulScriptStrict strict = C4AulScriptStrict::MAXSTRICT)
: iTargetObj(iTargetObj), Strict{strict}, Script(szScript, true) {}

protected:
int32_t iTargetObj;
C4AulScriptStrict Strict;
StdStrBuf Script;

public:
Expand Down Expand Up @@ -341,14 +343,15 @@ class C4ControlEMMoveObject : public C4ControlPacket // sync
public:
C4ControlEMMoveObject() : pObjects(nullptr) {}
C4ControlEMMoveObject(C4ControlEMObjectAction eAction, int32_t tx, int32_t ty, C4Object *pTargetObj,
int32_t iObjectNum = 0, int32_t *pObjects = nullptr, const char *szScript = nullptr);
int32_t iObjectNum = 0, int32_t *pObjects = nullptr, const char *szScript = nullptr, C4AulScriptStrict strict = C4AulScriptStrict::MAXSTRICT);
~C4ControlEMMoveObject();

protected:
C4ControlEMObjectAction eAction; // action to be performed
int32_t tx, ty; // target position
int32_t iTargetObj; // enumerated ptr to target object
int32_t iObjectNum; // number of objects moved
C4AulScriptStrict Strict; // strictness for the script to execute
int32_t *pObjects; // pointer on array of objects moved
StdStrBuf Script; // script to execute

Expand Down
2 changes: 1 addition & 1 deletion src/C4EditCursor.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -733,7 +733,7 @@ void C4EditCursor::EMMoveObject(C4ControlEMObjectAction eAction, int32_t tx, int
}

// execute control
EMControl(CID_EMMoveObj, new C4ControlEMMoveObject(eAction, tx, ty, pTargetObj, iObjCnt, pObjIDs, szScript));
EMControl(CID_EMMoveObj, new C4ControlEMMoveObject(eAction, tx, ty, pTargetObj, iObjCnt, pObjIDs, szScript, Config.Developer.ConsoleScriptStrictness));
}

void C4EditCursor::EMControl(C4PacketType eCtrlType, C4ControlPacket *pCtrl)
Expand Down
2 changes: 1 addition & 1 deletion src/C4MessageInput.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -469,7 +469,7 @@ bool C4MessageInput::ProcessCommand(const char *szCommand)
if (!Game.DebugMode) return false;
if (Game.Network.isEnabled() && !Game.Network.isHost()) return false;

Game.Control.DoInput(CID_Script, new C4ControlScript(pCmdPar, C4ControlScript::SCOPE_Console), CDT_Decide);
Game.Control.DoInput(CID_Script, new C4ControlScript(pCmdPar, C4ControlScript::SCOPE_Console, Config.Developer.ConsoleScriptStrictness), CDT_Decide);
return true;
}
// set runtimte properties
Expand Down

0 comments on commit 0647d73

Please sign in to comment.