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;
};
extern C4AulScriptEngine ScriptEngine;
#endif

View File

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

View File

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

View File

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

View File

@ -211,7 +211,7 @@ void C4AulScript::Warn(const char *pMsg, const char *pIdtf)
// display it
warning.show();
// count warnings
++Game.ScriptEngine.warnCnt;
++::ScriptEngine.warnCnt;
}
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;
// script doesn't own function -> skip
// (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
C4AulParseError warning(this, pMsg, pIdtf, TRUE);
@ -229,7 +229,7 @@ void C4AulParseState::Warn(const char *pMsg, const char *pIdtf)
if (Fn && Fn->pOrgScript != a)
DebugLogF(" (as #appendto/#include to %s)", Fn->Owner->ScriptName.getData());
// count warnings
++Game.ScriptEngine.warnCnt;
++::ScriptEngine.warnCnt;
}
void C4AulParseState::StrictError(const char *pMsg, const char *pIdtf)
@ -1890,7 +1890,7 @@ void C4AulParseState::Parse_Statement()
else if(a->LocalNamed.GetItemNr(Idtf) != -1)
{
// global func?
if(Fn->Owner == &Game.ScriptEngine)
if(Fn->Owner == &::ScriptEngine)
throw new C4AulParseError(this, "using local variable in global function!");
// insert variable by id
Parse_Expression();
@ -2096,7 +2096,7 @@ void C4AulParseState::Parse_Statement()
FoundFn = Fn->OwnerOverloaded;
else
// get regular function
if(Fn->Owner == &Game.ScriptEngine)
if(Fn->Owner == &::ScriptEngine)
FoundFn = a->Owner->GetFuncRecursive(Idtf);
else
FoundFn = a->GetFuncRecursive(Idtf);
@ -2524,7 +2524,7 @@ void C4AulParseState::Parse_Expression(int iParentPrio)
else if(a->LocalNamed.GetItemNr(Idtf) != -1)
{
// global func?
if(Fn->Owner == &Game.ScriptEngine)
if(Fn->Owner == &::ScriptEngine)
throw new C4AulParseError(this, "using local variable in global function!");
// insert variable by id
AddBCC(AB_LOCALN_R, a->LocalNamed.GetItemNr(Idtf));
@ -2608,7 +2608,7 @@ void C4AulParseState::Parse_Expression(int iParentPrio)
{
C4AulFunc *FoundFn;
// get regular function
if(Fn->Owner == &Game.ScriptEngine)
if(Fn->Owner == &::ScriptEngine)
FoundFn = Fn->Owner->GetFuncRecursive(Idtf);
else
FoundFn = a->GetFuncRecursive(Idtf);
@ -2909,7 +2909,7 @@ void C4AulParseState::Parse_Expression2(int iParentPrio)
}
if (Type == PARSER)
{
pName = Game.ScriptEngine.Strings.RegString(Idtf);
pName = ::ScriptEngine.Strings.RegString(Idtf);
}
// add call chunk
Shift();
@ -3164,7 +3164,7 @@ BOOL C4AulScript::Parse()
if (Fn->pOrgScript != this)
DebugLogF(" (as #appendto/#include to %s)", Fn->Owner->ScriptName.getData());
// and count (visible only ;) )
++Game.ScriptEngine.errCnt;
++::ScriptEngine.errCnt;
}
delete err;
// 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")
{ Text = NULL; }
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;
Game.Script.Open();
Game.ScriptEngine.ReLink(&Game.Defs);
::ScriptEngine.ReLink(&Game.Defs);
}
void C4Console::EditInfo()
@ -1380,7 +1380,7 @@ void C4Console::UpdateInputCtrl()
gtk_list_store_clear(store);
#endif // WITH_DEVELOPER_MODE / _WIN32
// 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())
{
#ifdef _WIN32

View File

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

View File

@ -704,7 +704,7 @@ BOOL C4Def::Load(C4Group &hGroup,
if (dwLoadWhat & C4D_Load_Script)
{
// 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
// for downwards compatibility with packing order
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
C4ScriptHost *scr = new C4ScriptHost();
scr->Reg2List(&Game.ScriptEngine, &Game.ScriptEngine);
scr->Reg2List(&::ScriptEngine, &::ScriptEngine);
scr->Load(NULL, SysGroup, fn, Config.General.LanguageEx, NULL, &SysGroupString);
}
// 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();
#ifdef C4ENGINE
// update script engine - this will also do include callbacks
Game.ScriptEngine.ReLink(this);
::ScriptEngine.ReLink(this);
#endif
#ifdef C4ENGINE
// update definition pointers

View File

@ -57,7 +57,7 @@ C4AulScript *C4Effect::GetCallbackScript()
else if (idCommandTarget && (pDef=Game.Defs.ID2Def(idCommandTarget)))
pSrcScript = &pDef->Script;
else
pSrcScript = &Game.ScriptEngine;
pSrcScript = &::ScriptEngine;
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)))
pSrcScript = &pDef->Script;
else
pSrcScript = &Game.ScriptEngine;
pSrcScript = &::ScriptEngine;
// compose function name
char fn[C4AUL_MAX_Identifier+1];
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)
{
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
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
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
// 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
{
C4AulParSet pars(C4VInt(-transfer), C4VObj(Contained));

View File

@ -354,7 +354,7 @@ void C4PropertyDlg::UpdateInputCtrl(C4Object *pObj)
#endif // _WIN32
// 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())
{
#ifdef _WIN32

View File

@ -55,7 +55,7 @@ inline const static char *FnStringPar(C4String *pString)
}
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,
@ -3485,13 +3485,13 @@ static C4Value FnVar_C4V(C4AulContext *cthr, C4Value* iVarIndex)
static C4Value FnSetGlobal_C4V(C4AulContext *cthr, C4Value* iVarIndex, C4Value* iValue)
{
Game.ScriptEngine.Global[iVarIndex->getInt()]=*iValue;
::ScriptEngine.Global[iVarIndex->getInt()]=*iValue;
return *iValue;
}
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)
@ -4751,7 +4751,7 @@ static C4Value FnGlobalN(C4AulContext* cthr, C4Value* strName_C4V)
const char* strName = FnStringPar(strName_C4V->getStr());
// find variable
C4Value* pVarN = Game.ScriptEngine.GlobalNamed.GetItem(strName);
C4Value* pVarN = ::ScriptEngine.GlobalNamed.GetItem(strName);
if(!pVarN) return C4Value();
@ -6228,7 +6228,7 @@ static bool FnStartScriptProfiler(C4AulContext *ctx, C4ID idScript)
pScript = &pDef->Script;
}
else
pScript = &Game.ScriptEngine;
pScript = &::ScriptEngine;
// profile it
C4AulProfiler::StartProfiling(pScript);
return true;
@ -6459,7 +6459,7 @@ void InitFunctionMap(C4AulScriptEngine *pEngine)
{
// add all def constants (all Int)
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
for (C4ScriptFnDef *pDef = &C4ScriptFnMap[0]; pDef->Identifier; pDef++)

View File

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