Move Game.ScriptEngine to ::ScriptEngine

stable-5.2
Günther Brammer 2009-06-05 17:21:11 +02:00
parent 33eb6079ab
commit 0cbfee4e4a
15 changed files with 39 additions and 37 deletions

View File

@ -580,4 +580,5 @@ class C4AulScriptEngine : public C4AulScript
friend class C4AulParseState; friend class C4AulParseState;
}; };
extern C4AulScriptEngine ScriptEngine;
#endif #endif

View File

@ -107,7 +107,6 @@ class C4Game
C4ComponentHost Title; C4ComponentHost Title;
C4ComponentHost Names; C4ComponentHost Names;
C4ComponentHost GameText; C4ComponentHost GameText;
C4AulScriptEngine ScriptEngine;
C4GameScriptHost Script; C4GameScriptHost Script;
C4LangStringTable MainSysLangStringTable, ScenarioLangStringTable, ScenarioSysLangStringTable; C4LangStringTable MainSysLangStringTable, ScenarioLangStringTable, ScenarioSysLangStringTable;
C4MassMoverSet MassMover; C4MassMoverSet MassMover;

View File

@ -613,3 +613,5 @@ void C4AulFuncMap::Remove(C4AulFunc * func)
*pFunc = (*pFunc)->MapNext; *pFunc = (*pFunc)->MapNext;
--FuncCnt; --FuncCnt;
} }
C4AulScriptEngine ScriptEngine;

View File

@ -375,10 +375,10 @@ C4Value C4AulExec::Exec(C4AulBCC *pCPos, bool fPassErrors)
break; break;
case AB_GLOBALN_R: case AB_GLOBALN_R:
PushValueRef(*Game.ScriptEngine.GlobalNamed.GetItem(pCPos->Par.i)); PushValueRef(*::ScriptEngine.GlobalNamed.GetItem(pCPos->Par.i));
break; break;
case AB_GLOBALN_V: case AB_GLOBALN_V:
PushValue(*Game.ScriptEngine.GlobalNamed.GetItem(pCPos->Par.i)); PushValue(*::ScriptEngine.GlobalNamed.GetItem(pCPos->Par.i));
break; break;
// prefix // prefix
case AB_Inc1: // ++ case AB_Inc1: // ++

View File

@ -211,7 +211,7 @@ void C4AulScript::Warn(const char *pMsg, const char *pIdtf)
// display it // display it
warning.show(); warning.show();
// count warnings // count warnings
++Game.ScriptEngine.warnCnt; ++::ScriptEngine.warnCnt;
} }
void C4AulParseState::Warn(const char *pMsg, const char *pIdtf) void C4AulParseState::Warn(const char *pMsg, const char *pIdtf)
@ -220,7 +220,7 @@ void C4AulParseState::Warn(const char *pMsg, const char *pIdtf)
if (Fn && !Fn->Owner->Def && Fn->Owner->Appends) return; if (Fn && !Fn->Owner->Def && Fn->Owner->Appends) return;
// script doesn't own function -> skip // script doesn't own function -> skip
// (exception: global functions) // (exception: global functions)
//if(pFunc) if(pFunc->pOrgScript != pScript && pScript != (C4AulScript *)&Game.ScriptEngine) return; //if(pFunc) if(pFunc->pOrgScript != pScript && pScript != (C4AulScript *)&::ScriptEngine) return;
// display error // display error
C4AulParseError warning(this, pMsg, pIdtf, TRUE); C4AulParseError warning(this, pMsg, pIdtf, TRUE);
@ -229,7 +229,7 @@ void C4AulParseState::Warn(const char *pMsg, const char *pIdtf)
if (Fn && Fn->pOrgScript != a) if (Fn && Fn->pOrgScript != a)
DebugLogF(" (as #appendto/#include to %s)", Fn->Owner->ScriptName.getData()); DebugLogF(" (as #appendto/#include to %s)", Fn->Owner->ScriptName.getData());
// count warnings // count warnings
++Game.ScriptEngine.warnCnt; ++::ScriptEngine.warnCnt;
} }
void C4AulParseState::StrictError(const char *pMsg, const char *pIdtf) void C4AulParseState::StrictError(const char *pMsg, const char *pIdtf)
@ -1890,7 +1890,7 @@ void C4AulParseState::Parse_Statement()
else if(a->LocalNamed.GetItemNr(Idtf) != -1) else if(a->LocalNamed.GetItemNr(Idtf) != -1)
{ {
// global func? // global func?
if(Fn->Owner == &Game.ScriptEngine) if(Fn->Owner == &::ScriptEngine)
throw new C4AulParseError(this, "using local variable in global function!"); throw new C4AulParseError(this, "using local variable in global function!");
// insert variable by id // insert variable by id
Parse_Expression(); Parse_Expression();
@ -2096,7 +2096,7 @@ void C4AulParseState::Parse_Statement()
FoundFn = Fn->OwnerOverloaded; FoundFn = Fn->OwnerOverloaded;
else else
// get regular function // get regular function
if(Fn->Owner == &Game.ScriptEngine) if(Fn->Owner == &::ScriptEngine)
FoundFn = a->Owner->GetFuncRecursive(Idtf); FoundFn = a->Owner->GetFuncRecursive(Idtf);
else else
FoundFn = a->GetFuncRecursive(Idtf); FoundFn = a->GetFuncRecursive(Idtf);
@ -2524,7 +2524,7 @@ void C4AulParseState::Parse_Expression(int iParentPrio)
else if(a->LocalNamed.GetItemNr(Idtf) != -1) else if(a->LocalNamed.GetItemNr(Idtf) != -1)
{ {
// global func? // global func?
if(Fn->Owner == &Game.ScriptEngine) if(Fn->Owner == &::ScriptEngine)
throw new C4AulParseError(this, "using local variable in global function!"); throw new C4AulParseError(this, "using local variable in global function!");
// insert variable by id // insert variable by id
AddBCC(AB_LOCALN_R, a->LocalNamed.GetItemNr(Idtf)); AddBCC(AB_LOCALN_R, a->LocalNamed.GetItemNr(Idtf));
@ -2608,7 +2608,7 @@ void C4AulParseState::Parse_Expression(int iParentPrio)
{ {
C4AulFunc *FoundFn; C4AulFunc *FoundFn;
// get regular function // get regular function
if(Fn->Owner == &Game.ScriptEngine) if(Fn->Owner == &::ScriptEngine)
FoundFn = Fn->Owner->GetFuncRecursive(Idtf); FoundFn = Fn->Owner->GetFuncRecursive(Idtf);
else else
FoundFn = a->GetFuncRecursive(Idtf); FoundFn = a->GetFuncRecursive(Idtf);
@ -2909,7 +2909,7 @@ void C4AulParseState::Parse_Expression2(int iParentPrio)
} }
if (Type == PARSER) if (Type == PARSER)
{ {
pName = Game.ScriptEngine.Strings.RegString(Idtf); pName = ::ScriptEngine.Strings.RegString(Idtf);
} }
// add call chunk // add call chunk
Shift(); Shift();
@ -3164,7 +3164,7 @@ BOOL C4AulScript::Parse()
if (Fn->pOrgScript != this) if (Fn->pOrgScript != this)
DebugLogF(" (as #appendto/#include to %s)", Fn->Owner->ScriptName.getData()); DebugLogF(" (as #appendto/#include to %s)", Fn->Owner->ScriptName.getData());
// and count (visible only ;) ) // and count (visible only ;) )
++Game.ScriptEngine.errCnt; ++::ScriptEngine.errCnt;
} }
delete err; delete err;
// make all jumps that don't have their destination yet jump here // make all jumps that don't have their destination yet jump here

View File

@ -2298,7 +2298,7 @@ void C4Command::CompileFunc(StdCompiler *pComp)
if(TextBuf == "0") if(TextBuf == "0")
{ Text = NULL; } { Text = NULL; }
else else
{ Text = Game.ScriptEngine.Strings.RegString(TextBuf); Text->IncRef(); } { Text = ::ScriptEngine.Strings.RegString(TextBuf); Text->IncRef(); }
} }
} }

View File

@ -1339,7 +1339,7 @@ void C4Console::EditScript()
{ {
if (::Network.isEnabled()) return; if (::Network.isEnabled()) return;
Game.Script.Open(); Game.Script.Open();
Game.ScriptEngine.ReLink(&Game.Defs); ::ScriptEngine.ReLink(&Game.Defs);
} }
void C4Console::EditInfo() void C4Console::EditInfo()
@ -1380,7 +1380,7 @@ void C4Console::UpdateInputCtrl()
gtk_list_store_clear(store); gtk_list_store_clear(store);
#endif // WITH_DEVELOPER_MODE / _WIN32 #endif // WITH_DEVELOPER_MODE / _WIN32
// add global and standard functions // add global and standard functions
for (C4AulFunc *pFn = Game.ScriptEngine.GetFirstFunc(); pFn; pFn = Game.ScriptEngine.GetNextFunc(pFn)) for (C4AulFunc *pFn = ::ScriptEngine.GetFirstFunc(); pFn; pFn = ::ScriptEngine.GetNextFunc(pFn))
if (pFn->GetPublic()) if (pFn->GetPublic())
{ {
#ifdef _WIN32 #ifdef _WIN32

View File

@ -270,12 +270,12 @@ void C4ControlScript::Execute() const
if (iTargetObj == SCOPE_Console) if (iTargetObj == SCOPE_Console)
pScript = &Game.Script; pScript = &Game.Script;
else if (iTargetObj == SCOPE_Global) else if (iTargetObj == SCOPE_Global)
pScript = &Game.ScriptEngine; pScript = &::ScriptEngine;
else if (pObj = Game.Objects.SafeObjectPointer(iTargetObj)) else if (pObj = Game.Objects.SafeObjectPointer(iTargetObj))
pScript = &(pObj->Def->Script); pScript = &(pObj->Def->Script);
else else
// default: Fallback to global context // default: Fallback to global context
pScript = &Game.ScriptEngine; pScript = &::ScriptEngine;
C4Value rVal(pScript->DirectExec(pObj, szScript, "console script")); C4Value rVal(pScript->DirectExec(pObj, szScript, "console script"));
// show messages // show messages
if (!fInternal) if (!fInternal)

View File

@ -704,7 +704,7 @@ BOOL C4Def::Load(C4Group &hGroup,
if (dwLoadWhat & C4D_Load_Script) if (dwLoadWhat & C4D_Load_Script)
{ {
// reg script to engine // reg script to engine
Script.Reg2List(&Game.ScriptEngine, &Game.ScriptEngine); Script.Reg2List(&::ScriptEngine, &::ScriptEngine);
// Load script - loads string table as well, because that must be done after script load // Load script - loads string table as well, because that must be done after script load
// for downwards compatibility with packing order // for downwards compatibility with packing order
Script.Load("Script", hGroup, C4CFN_Script, szLanguage, this, &StringTable, true); Script.Load("Script", hGroup, C4CFN_Script, szLanguage, this, &StringTable, true);
@ -1058,7 +1058,7 @@ int32_t C4DefList::Load(C4Group &hGroup, DWORD dwLoadWhat,
{ {
// host will be destroyed by script engine, so drop the references // host will be destroyed by script engine, so drop the references
C4ScriptHost *scr = new C4ScriptHost(); C4ScriptHost *scr = new C4ScriptHost();
scr->Reg2List(&Game.ScriptEngine, &Game.ScriptEngine); scr->Reg2List(&::ScriptEngine, &::ScriptEngine);
scr->Load(NULL, SysGroup, fn, Config.General.LanguageEx, NULL, &SysGroupString); scr->Load(NULL, SysGroup, fn, Config.General.LanguageEx, NULL, &SysGroupString);
} }
// if it's a physical group: watch out for changes // if it's a physical group: watch out for changes
@ -1507,7 +1507,7 @@ BOOL C4DefList::Reload(C4Def *pDef, DWORD dwLoadWhat, const char *szLanguage, C4
BuildTable(); BuildTable();
#ifdef C4ENGINE #ifdef C4ENGINE
// update script engine - this will also do include callbacks // update script engine - this will also do include callbacks
Game.ScriptEngine.ReLink(this); ::ScriptEngine.ReLink(this);
#endif #endif
#ifdef C4ENGINE #ifdef C4ENGINE
// update definition pointers // update definition pointers

View File

@ -57,7 +57,7 @@ C4AulScript *C4Effect::GetCallbackScript()
else if (idCommandTarget && (pDef=Game.Defs.ID2Def(idCommandTarget))) else if (idCommandTarget && (pDef=Game.Defs.ID2Def(idCommandTarget)))
pSrcScript = &pDef->Script; pSrcScript = &pDef->Script;
else else
pSrcScript = &Game.ScriptEngine; pSrcScript = &::ScriptEngine;
return pSrcScript; return pSrcScript;
} }
@ -429,7 +429,7 @@ C4Value C4Effect::DoCall(C4Object *pObj, const char *szFn, C4Value &rVal1, C4Val
else if (idCommandTarget && (pDef=Game.Defs.ID2Def(idCommandTarget))) else if (idCommandTarget && (pDef=Game.Defs.ID2Def(idCommandTarget)))
pSrcScript = &pDef->Script; pSrcScript = &pDef->Script;
else else
pSrcScript = &Game.ScriptEngine; pSrcScript = &::ScriptEngine;
// compose function name // compose function name
char fn[C4AUL_MAX_Identifier+1]; char fn[C4AUL_MAX_Identifier+1];
sprintf(fn, PSF_FxCustom, Name, szFn); sprintf(fn, PSF_FxCustom, Name, szFn);
@ -775,7 +775,7 @@ int32_t FnFxFireStop(C4AulContext *ctx, C4Object *pObj, int32_t iNumber, int32_t
C4String *FnFxFireInfo(C4AulContext *ctx, C4Object *pObj, int32_t iNumber) C4String *FnFxFireInfo(C4AulContext *ctx, C4Object *pObj, int32_t iNumber)
{ {
return Game.ScriptEngine.Strings.RegString(LoadResStr("IDS_OBJ_BURNS")); return ::ScriptEngine.Strings.RegString(LoadResStr("IDS_OBJ_BURNS"));
} }

View File

@ -88,7 +88,7 @@ void C4MaterialReaction::ResolveScriptFuncs(const char *szMatName)
{ {
// get script func for script-defined behaviour // get script func for script-defined behaviour
if (pFunc == &C4MaterialMap::mrfScript) if (pFunc == &C4MaterialMap::mrfScript)
pScriptFunc = Game.ScriptEngine.GetSFuncWarn(this->ScriptFunc.getData(), AA_PROTECTED, FormatString("Material reaction of \"%s\"", szMatName).getData()); pScriptFunc = ::ScriptEngine.GetSFuncWarn(this->ScriptFunc.getData(), AA_PROTECTED, FormatString("Material reaction of \"%s\"", szMatName).getData());
else else
pScriptFunc = NULL; pScriptFunc = NULL;
} }

View File

@ -934,7 +934,7 @@ BOOL C4Object::ExecLife()
{ {
// do energy transfer via script, so it can be overloaded by No-Magic-Energy-rule // do energy transfer via script, so it can be overloaded by No-Magic-Energy-rule
// always use global func instead of local to save double search // always use global func instead of local to save double search
C4AulFunc *pMagicEnergyFn = Game.ScriptEngine.GetFuncRecursive(PSF_DoMagicEnergy); C4AulFunc *pMagicEnergyFn = ::ScriptEngine.GetFuncRecursive(PSF_DoMagicEnergy);
if (pMagicEnergyFn) // should always be true if (pMagicEnergyFn) // should always be true
{ {
C4AulParSet pars(C4VInt(-transfer), C4VObj(Contained)); C4AulParSet pars(C4VInt(-transfer), C4VObj(Contained));

View File

@ -354,7 +354,7 @@ void C4PropertyDlg::UpdateInputCtrl(C4Object *pObj)
#endif // _WIN32 #endif // _WIN32
// add global and standard functions // add global and standard functions
for (C4AulFunc *pFn = Game.ScriptEngine.GetFirstFunc(); pFn; pFn = Game.ScriptEngine.GetNextFunc(pFn)) for (C4AulFunc *pFn = ::ScriptEngine.GetFirstFunc(); pFn; pFn = ::ScriptEngine.GetNextFunc(pFn))
if (pFn->GetPublic()) if (pFn->GetPublic())
{ {
#ifdef _WIN32 #ifdef _WIN32

View File

@ -55,7 +55,7 @@ inline const static char *FnStringPar(C4String *pString)
} }
inline C4String *String(const char * str) inline C4String *String(const char * str)
{ {
return str ? Game.ScriptEngine.Strings.RegString(str) : NULL; return str ? ::ScriptEngine.Strings.RegString(str) : NULL;
} }
static StdStrBuf FnStringFormat(C4AulContext *cthr, const char *szFormatPar, C4Value * Par0=0, C4Value * Par1=0, C4Value * Par2=0, C4Value * Par3=0, static StdStrBuf FnStringFormat(C4AulContext *cthr, const char *szFormatPar, C4Value * Par0=0, C4Value * Par1=0, C4Value * Par2=0, C4Value * Par3=0,
@ -3485,13 +3485,13 @@ static C4Value FnVar_C4V(C4AulContext *cthr, C4Value* iVarIndex)
static C4Value FnSetGlobal_C4V(C4AulContext *cthr, C4Value* iVarIndex, C4Value* iValue) static C4Value FnSetGlobal_C4V(C4AulContext *cthr, C4Value* iVarIndex, C4Value* iValue)
{ {
Game.ScriptEngine.Global[iVarIndex->getInt()]=*iValue; ::ScriptEngine.Global[iVarIndex->getInt()]=*iValue;
return *iValue; return *iValue;
} }
static C4Value FnGlobal_C4V(C4AulContext *cthr, C4Value* iVarIndex) static C4Value FnGlobal_C4V(C4AulContext *cthr, C4Value* iVarIndex)
{ {
return Game.ScriptEngine.Global[iVarIndex->getInt()].GetRef(); return ::ScriptEngine.Global[iVarIndex->getInt()].GetRef();
} }
static C4Value FnSetLocal_C4V(C4AulContext *cthr, C4Value* iVarIndex, C4Value* iValue, C4Value* pObj_C4V) static C4Value FnSetLocal_C4V(C4AulContext *cthr, C4Value* iVarIndex, C4Value* iValue, C4Value* pObj_C4V)
@ -4751,7 +4751,7 @@ static C4Value FnGlobalN(C4AulContext* cthr, C4Value* strName_C4V)
const char* strName = FnStringPar(strName_C4V->getStr()); const char* strName = FnStringPar(strName_C4V->getStr());
// find variable // find variable
C4Value* pVarN = Game.ScriptEngine.GlobalNamed.GetItem(strName); C4Value* pVarN = ::ScriptEngine.GlobalNamed.GetItem(strName);
if(!pVarN) return C4Value(); if(!pVarN) return C4Value();
@ -6228,7 +6228,7 @@ static bool FnStartScriptProfiler(C4AulContext *ctx, C4ID idScript)
pScript = &pDef->Script; pScript = &pDef->Script;
} }
else else
pScript = &Game.ScriptEngine; pScript = &::ScriptEngine;
// profile it // profile it
C4AulProfiler::StartProfiling(pScript); C4AulProfiler::StartProfiling(pScript);
return true; return true;
@ -6459,7 +6459,7 @@ void InitFunctionMap(C4AulScriptEngine *pEngine)
{ {
// add all def constants (all Int) // add all def constants (all Int)
for (C4ScriptConstDef *pCDef = &C4ScriptConstMap[0]; pCDef->Identifier; pCDef++) for (C4ScriptConstDef *pCDef = &C4ScriptConstMap[0]; pCDef->Identifier; pCDef++)
Game.ScriptEngine.RegisterGlobalConstant(pCDef->Identifier, C4Value(pCDef->Data, pCDef->ValType)); ::ScriptEngine.RegisterGlobalConstant(pCDef->Identifier, C4Value(pCDef->Data, pCDef->ValType));
// add all def script funcs // add all def script funcs
for (C4ScriptFnDef *pDef = &C4ScriptFnMap[0]; pDef->Identifier; pDef++) for (C4ScriptFnDef *pDef = &C4ScriptFnMap[0]; pDef->Identifier; pDef++)

View File

@ -273,7 +273,7 @@ C4V_Type C4Value::GuessType()
} }
// string? // string?
if (Game.ScriptEngine.Strings.FindString(Data.Str)) if (::ScriptEngine.Strings.FindString(Data.Str))
{ {
Type = C4V_String; Type = C4V_String;
// see above // see above
@ -571,7 +571,7 @@ C4Value C4VString(const char *strString)
#ifdef C4ENGINE #ifdef C4ENGINE
// safety // safety
if(!strString) return C4Value(); if(!strString) return C4Value();
return C4Value(Game.ScriptEngine.Strings.RegString(strString)); return C4Value(::ScriptEngine.Strings.RegString(strString));
#else #else
return C4Value(); return C4Value();
#endif #endif
@ -582,7 +582,7 @@ C4Value C4VString(StdStrBuf Str)
#ifdef C4ENGINE #ifdef C4ENGINE
// safety // safety
if(Str.isNull()) return C4Value(); if(Str.isNull()) return C4Value();
return C4Value(Game.ScriptEngine.Strings.RegString(Str)); return C4Value(::ScriptEngine.Strings.RegString(Str));
#else #else
return C4Value(); return C4Value();
#endif #endif
@ -659,7 +659,7 @@ void C4Value::CompileFunc(StdCompiler *pComp)
int32_t iTmp; int32_t iTmp;
pComp->Value(iTmp); pComp->Value(iTmp);
// search // search
C4String *pString = Game.ScriptEngine.Strings.FindString(iTmp); C4String *pString = ::ScriptEngine.Strings.FindString(iTmp);
if(pString) if(pString)
{ {
Data.Str = pString; Data.Str = pString;
@ -718,7 +718,7 @@ void C4Value::CompileFunc(StdCompiler *pComp)
pComp->Value(s); pComp->Value(s);
if(fCompiler) if(fCompiler)
{ {
C4String *pString = Game.ScriptEngine.Strings.RegString(s); C4String *pString = ::ScriptEngine.Strings.RegString(s);
if(pString) if(pString)
{ {
Data.Str = pString; Data.Str = pString;