Use macros to reduce duplication in script engine definitions

While at it, make AddFunc take a C4PropList* instead of a C4AulScript*.
epoxy
Günther Brammer 2016-01-03 17:14:18 +01:00
parent 5287121d86
commit 5be63d1e96
5 changed files with 353 additions and 350 deletions

View File

@ -2748,175 +2748,174 @@ void InitGameFunctionMap(C4AulScriptEngine *pEngine)
assert(pCDef->ValType == C4V_Int); // only int supported currently
pEngine->RegisterGlobalConstant(pCDef->Identifier, C4VInt(pCDef->Data));
}
C4PropListStatic * p = pEngine->GetPropList();
// add all def script funcs
for (C4ScriptFnDef *pDef = &C4ScriptGameFnMap[0]; pDef->Identifier; pDef++)
new C4AulDefFunc(pEngine->GetPropList(), pDef);
#define F(f) AddFunc(pEngine, #f, Fn##f)
AddFunc(pEngine, "GetX", FnGetX);
AddFunc(pEngine, "GetY", FnGetY);
AddFunc(pEngine, "GetDefinition", FnGetDefinition);
AddFunc(pEngine, "GetPlayerName", FnGetPlayerName);
AddFunc(pEngine, "GetPlayerType", FnGetPlayerType);
AddFunc(pEngine, "GetPlayerColor", FnGetPlayerColor);
AddFunc(pEngine, "GetPlrClonkSkin", FnGetPlrClonkSkin);
AddFunc(pEngine, "CreateObject", FnCreateObject);
AddFunc(pEngine, "CreateObjectAbove", FnCreateObjectAbove);
AddFunc(pEngine, "CreateConstruction", FnCreateConstruction);
AddFunc(pEngine, "FindConstructionSite", FnFindConstructionSite);
AddFunc(pEngine, "CheckConstructionSite", FnCheckConstructionSite);
AddFunc(pEngine, "Sound", FnSound);
AddFunc(pEngine, "SoundAt", FnSoundAt);
AddFunc(pEngine, "ChangeSoundModifier", FnChangeSoundModifier);
AddFunc(pEngine, "SetGlobalSoundModifier", FnSetGlobalSoundModifier);
AddFunc(pEngine, "Music", FnMusic);
AddFunc(pEngine, "MusicLevel", FnMusicLevel);
AddFunc(pEngine, "SetPlayList", FnSetPlayList);
AddFunc(pEngine, "SetPlrView", FnSetPlrView);
AddFunc(pEngine, "SetPlrKnowledge", FnSetPlrKnowledge);
AddFunc(pEngine, "GetPlrViewMode", FnGetPlrViewMode);
AddFunc(pEngine, "ResetCursorView", FnResetCursorView);
AddFunc(pEngine, "GetPlrView", FnGetPlrView);
AddFunc(pEngine, "GetWealth", FnGetWealth);
AddFunc(pEngine, "SetWealth", FnSetWealth);
AddFunc(pEngine, "DoPlayerScore", FnDoPlayerScore);
AddFunc(pEngine, "GetPlayerScore", FnGetPlayerScore);
AddFunc(pEngine, "GetPlayerScoreGain", FnGetPlayerScoreGain);
AddFunc(pEngine, "GetWind", FnGetWind);
AddFunc(pEngine, "SetWind", FnSetWind);
AddFunc(pEngine, "GetTemperature", FnGetTemperature);
AddFunc(pEngine, "SetTemperature", FnSetTemperature);
AddFunc(pEngine, "ShakeFree", FnShakeFree);
AddFunc(pEngine, "DigFree", FnDigFree);
AddFunc(pEngine, "DigFreeRect", FnDigFreeRect);
AddFunc(pEngine, "ClearFreeRect", FnClearFreeRect);
AddFunc(pEngine, "Hostile", FnHostile);
AddFunc(pEngine, "SetHostility", FnSetHostility);
AddFunc(pEngine, "PlaceVegetation", FnPlaceVegetation);
AddFunc(pEngine, "PlaceAnimal", FnPlaceAnimal);
AddFunc(pEngine, "GameOver", FnGameOver);
AddFunc(pEngine, "GetHiRank", FnGetHiRank);
AddFunc(pEngine, "GetCrew", FnGetCrew);
AddFunc(pEngine, "GetCrewCount", FnGetCrewCount);
AddFunc(pEngine, "GetPlayerCount", FnGetPlayerCount);
AddFunc(pEngine, "GetPlayerByIndex", FnGetPlayerByIndex);
AddFunc(pEngine, "EliminatePlayer", FnEliminatePlayer);
AddFunc(pEngine, "SurrenderPlayer", FnSurrenderPlayer);
AddFunc(pEngine, "GetLeagueScore", FnGetLeagueScore);
AddFunc(pEngine, "SetLeaguePerformance", FnSetLeaguePerformance);
AddFunc(pEngine, "SetLeagueProgressData", FnSetLeagueProgressData);
AddFunc(pEngine, "GetLeagueProgressData", FnGetLeagueProgressData);
AddFunc(pEngine, "CreateScriptPlayer", FnCreateScriptPlayer);
AddFunc(pEngine, "GetCursor", FnGetCursor);
AddFunc(pEngine, "GetViewCursor", FnGetViewCursor);
AddFunc(pEngine, "SetCursor", FnSetCursor);
AddFunc(pEngine, "SetViewCursor", FnSetViewCursor);
AddFunc(pEngine, "GetMaterial", FnGetMaterial);
AddFunc(pEngine, "GetBackMaterial", FnGetBackMaterial);
AddFunc(pEngine, "GetTexture", FnGetTexture);
AddFunc(pEngine, "GetBackTexture", FnGetBackTexture);
AddFunc(pEngine, "GetAverageTextureColor", FnGetAverageTextureColor);
AddFunc(pEngine, "GetMaterialCount", FnGetMaterialCount);
AddFunc(pEngine, "GBackSolid", FnGBackSolid);
AddFunc(pEngine, "GBackSemiSolid", FnGBackSemiSolid);
AddFunc(pEngine, "GBackLiquid", FnGBackLiquid);
AddFunc(pEngine, "GBackSky", FnGBackSky);
AddFunc(pEngine, "Material", FnMaterial);
AddFunc(pEngine, "BlastFree", FnBlastFree);
AddFunc(pEngine, "InsertMaterial", FnInsertMaterial);
AddFunc(pEngine, "CanInsertMaterial", FnCanInsertMaterial);
AddFunc(pEngine, "LandscapeWidth", FnLandscapeWidth);
AddFunc(pEngine, "LandscapeHeight", FnLandscapeHeight);
AddFunc(pEngine, "SetAmbientBrightness", FnSetAmbientBrightness);
AddFunc(pEngine, "GetAmbientBrightness", FnGetAmbientBrightness);
AddFunc(pEngine, "SetSeason", FnSetSeason);
AddFunc(pEngine, "GetSeason", FnGetSeason);
AddFunc(pEngine, "SetClimate", FnSetClimate);
AddFunc(pEngine, "GetClimate", FnGetClimate);
AddFunc(pEngine, "SetPlayerZoomByViewRange", FnSetPlayerZoomByViewRange);
AddFunc(pEngine, "GetPlayerZoomLimits", FnGetPlayerZoomLimits);
AddFunc(pEngine, "SetPlayerZoom", FnSetPlayerZoom);
AddFunc(pEngine, "SetPlayerViewLock", FnSetPlayerViewLock);
AddFunc(pEngine, "DoBaseMaterial", FnDoBaseMaterial);
AddFunc(pEngine, "DoBaseProduction", FnDoBaseProduction);
AddFunc(pEngine, "GainMissionAccess", FnGainMissionAccess);
AddFunc(pEngine, "IsNetwork", FnIsNetwork);
AddFunc(pEngine, "GetLeague", FnGetLeague);
AddFunc(pEngine, "TestMessageBoard", FnTestMessageBoard, false);
AddFunc(pEngine, "CallMessageBoard", FnCallMessageBoard, false);
AddFunc(pEngine, "AbortMessageBoard", FnAbortMessageBoard, false);
AddFunc(pEngine, "SetFoW", FnSetFoW);
AddFunc(pEngine, "SetMaxPlayer", FnSetMaxPlayer);
AddFunc(pEngine, "Object", FnObject);
AddFunc(pEngine, "GetTime", FnGetTime);
AddFunc(pEngine, "GetMissionAccess", FnGetMissionAccess);
AddFunc(pEngine, "MaterialName", FnMaterialName);
AddFunc(pEngine, "DrawMap", FnDrawMap);
AddFunc(pEngine, "DrawDefMap", FnDrawDefMap);
AddFunc(pEngine, "CreateParticle", FnCreateParticle);
AddFunc(pEngine, "ClearParticles", FnClearParticles);
AddFunc(pEngine, "SetSkyAdjust", FnSetSkyAdjust);
AddFunc(pEngine, "SetMatAdjust", FnSetMatAdjust);
AddFunc(pEngine, "GetSkyAdjust", FnGetSkyAdjust);
AddFunc(pEngine, "GetMatAdjust", FnGetMatAdjust);
AddFunc(pEngine, "SetSkyParallax", FnSetSkyParallax);
AddFunc(pEngine, "ReloadDef", FnReloadDef);
AddFunc(pEngine, "ReloadParticle", FnReloadParticle);
AddFunc(pEngine, "SetGamma", FnSetGamma);
AddFunc(pEngine, "ResetGamma", FnResetGamma);
AddFunc(pEngine, "FrameCounter", FnFrameCounter);
AddFunc(pEngine, "DrawMaterialQuad", FnDrawMaterialQuad);
AddFunc(pEngine, "SetFilmView", FnSetFilmView);
AddFunc(pEngine, "AddMsgBoardCmd", FnAddMsgBoardCmd);
AddFunc(pEngine, "SetGameSpeed", FnSetGameSpeed, false);
AddFunc(pEngine, "DrawMatChunks", FnDrawMatChunks, false);
AddFunc(pEngine, "GetPathLength", FnGetPathLength);
AddFunc(pEngine, "SetTextureIndex", FnSetTextureIndex);
AddFunc(pEngine, "RemoveUnusedTexMapEntries", FnRemoveUnusedTexMapEntries);
AddFunc(pEngine, "SimFlight", FnSimFlight);
AddFunc(pEngine, "LoadScenarioSection", FnLoadScenarioSection);
AddFunc(pEngine, "RemoveEffect", FnRemoveEffect);
AddFunc(pEngine, "GetEffect", FnGetEffect);
AddFunc(pEngine, "SetViewOffset", FnSetViewOffset);
AddFunc(pEngine, "SetPreSend", FnSetPreSend, false);
AddFunc(pEngine, "GetPlayerID", FnGetPlayerID);
AddFunc(pEngine, "GetPlayerTeam", FnGetPlayerTeam);
AddFunc(pEngine, "SetPlayerTeam", FnSetPlayerTeam);
AddFunc(pEngine, "GetTeamConfig", FnGetTeamConfig);
AddFunc(pEngine, "GetTeamName", FnGetTeamName);
AddFunc(pEngine, "GetTeamColor", FnGetTeamColor);
AddFunc(pEngine, "GetTeamByIndex", FnGetTeamByIndex);
AddFunc(pEngine, "GetTeamCount", FnGetTeamCount);
AddFunc(pEngine, "InitScenarioPlayer", FnInitScenarioPlayer, false);
AddFunc(pEngine, "SetScoreboardData", FnSetScoreboardData);
AddFunc(pEngine, "GetScoreboardString", FnGetScoreboardString, false);
AddFunc(pEngine, "GetScoreboardData", FnGetScoreboardData, false);
AddFunc(pEngine, "DoScoreboardShow", FnDoScoreboardShow);
AddFunc(pEngine, "SortScoreboard", FnSortScoreboard);
AddFunc(pEngine, "AddEvaluationData", FnAddEvaluationData);
AddFunc(pEngine, "HideSettlementScoreInEvaluation", FnHideSettlementScoreInEvaluation);
AddFunc(pEngine, "ExtractMaterialAmount", FnExtractMaterialAmount);
AddFunc(pEngine, "GetEffectCount", FnGetEffectCount);
AddFunc(pEngine, "CustomMessage", FnCustomMessage);
AddFunc(pEngine, "GuiOpen", FnGuiOpen);
AddFunc(pEngine, "GuiUpdateTag", FnGuiUpdateTag);
AddFunc(pEngine, "GuiClose", FnGuiClose);
AddFunc(pEngine, "GuiUpdate", FnGuiUpdate);
AddFunc(pEngine, "PauseGame", FnPauseGame, false);
AddFunc(pEngine, "PathFree", FnPathFree);
AddFunc(pEngine, "PathFree2", FnPathFree2);
AddFunc(pEngine, "SetNextMission", FnSetNextMission);
AddFunc(pEngine, "GetPlayerControlState", FnGetPlayerControlState);
AddFunc(pEngine, "SetPlayerControlEnabled", FnSetPlayerControlEnabled);
AddFunc(pEngine, "GetPlayerControlEnabled", FnGetPlayerControlEnabled);
AddFunc(pEngine, "GetPlayerControlAssignment", FnGetPlayerControlAssignment);
AddFunc(pEngine, "GetStartupPlayerCount", FnGetStartupPlayerCount);
AddFunc(pEngine, "GetStartupTeamCount", FnGetStartupTeamCount);
AddFunc(pEngine, "PlayerObjectCommand", FnPlayerObjectCommand);
AddFunc(pEngine, "EditCursor", FnEditCursor);
AddFunc(pEngine, "GainScenarioAchievement", FnGainScenarioAchievement);
AddFunc(pEngine, "GetPXSCount", FnGetPXSCount);
new C4AulDefFunc(p, pDef);
#define F(f) ::AddFunc(p, #f, Fn##f)
F(GetX);
F(GetY);
F(GetDefinition);
F(GetPlayerName);
F(GetPlayerType);
F(GetPlayerColor);
F(GetPlrClonkSkin);
F(CreateObject);
F(CreateObjectAbove);
F(CreateConstruction);
F(FindConstructionSite);
F(CheckConstructionSite);
F(Sound);
F(SoundAt);
F(ChangeSoundModifier);
F(SetGlobalSoundModifier);
F(Music);
F(MusicLevel);
F(SetPlayList);
F(SetPlrView);
F(SetPlrKnowledge);
F(GetPlrViewMode);
F(ResetCursorView);
F(GetPlrView);
F(GetWealth);
F(SetWealth);
F(DoPlayerScore);
F(GetPlayerScore);
F(GetPlayerScoreGain);
F(GetWind);
F(SetWind);
F(GetTemperature);
F(SetTemperature);
F(ShakeFree);
F(DigFree);
F(DigFreeRect);
F(ClearFreeRect);
F(Hostile);
F(SetHostility);
F(PlaceVegetation);
F(PlaceAnimal);
F(GameOver);
F(GetHiRank);
F(GetCrew);
F(GetCrewCount);
F(GetPlayerCount);
F(GetPlayerByIndex);
F(EliminatePlayer);
F(SurrenderPlayer);
F(GetLeagueScore);
F(SetLeaguePerformance);
F(SetLeagueProgressData);
F(GetLeagueProgressData);
F(CreateScriptPlayer);
F(GetCursor);
F(GetViewCursor);
F(SetCursor);
F(SetViewCursor);
F(GetMaterial);
F(GetBackMaterial);
F(GetTexture);
F(GetBackTexture);
F(GetAverageTextureColor);
F(GetMaterialCount);
F(GBackSolid);
F(GBackSemiSolid);
F(GBackLiquid);
F(GBackSky);
F(Material);
F(BlastFree);
F(InsertMaterial);
F(CanInsertMaterial);
F(LandscapeWidth);
F(LandscapeHeight);
F(SetAmbientBrightness);
F(GetAmbientBrightness);
F(SetSeason);
F(GetSeason);
F(SetClimate);
F(GetClimate);
F(SetPlayerZoomByViewRange);
F(GetPlayerZoomLimits);
F(SetPlayerZoom);
F(SetPlayerViewLock);
F(DoBaseMaterial);
F(DoBaseProduction);
F(GainMissionAccess);
F(IsNetwork);
F(GetLeague);
::AddFunc(p, "TestMessageBoard", FnTestMessageBoard, false);
::AddFunc(p, "CallMessageBoard", FnCallMessageBoard, false);
::AddFunc(p, "AbortMessageBoard", FnAbortMessageBoard, false);
F(SetFoW);
F(SetMaxPlayer);
F(Object);
F(GetTime);
F(GetMissionAccess);
F(MaterialName);
F(DrawMap);
F(DrawDefMap);
F(CreateParticle);
F(ClearParticles);
F(SetSkyAdjust);
F(SetMatAdjust);
F(GetSkyAdjust);
F(GetMatAdjust);
F(SetSkyParallax);
F(ReloadDef);
F(ReloadParticle);
F(SetGamma);
F(ResetGamma);
F(FrameCounter);
F(DrawMaterialQuad);
F(SetFilmView);
F(AddMsgBoardCmd);
::AddFunc(p, "SetGameSpeed", FnSetGameSpeed, false);
::AddFunc(p, "DrawMatChunks", FnDrawMatChunks, false);
F(GetPathLength);
F(SetTextureIndex);
F(RemoveUnusedTexMapEntries);
F(SimFlight);
F(LoadScenarioSection);
F(RemoveEffect);
F(GetEffect);
F(SetViewOffset);
::AddFunc(p, "SetPreSend", FnSetPreSend, false);
F(GetPlayerID);
F(GetPlayerTeam);
F(SetPlayerTeam);
F(GetTeamConfig);
F(GetTeamName);
F(GetTeamColor);
F(GetTeamByIndex);
F(GetTeamCount);
::AddFunc(p, "InitScenarioPlayer", FnInitScenarioPlayer, false);
F(SetScoreboardData);
::AddFunc(p, "GetScoreboardString", FnGetScoreboardString, false);
::AddFunc(p, "GetScoreboardData", FnGetScoreboardData, false);
F(DoScoreboardShow);
F(SortScoreboard);
F(AddEvaluationData);
F(HideSettlementScoreInEvaluation);
F(ExtractMaterialAmount);
F(GetEffectCount);
F(CustomMessage);
F(GuiOpen);
F(GuiUpdateTag);
F(GuiClose);
F(GuiUpdate);
::AddFunc(p, "PauseGame", FnPauseGame, false);
F(PathFree);
F(PathFree2);
F(SetNextMission);
F(GetPlayerControlState);
F(SetPlayerControlEnabled);
F(GetPlayerControlEnabled);
F(GetPlayerControlAssignment);
F(GetStartupPlayerCount);
F(GetStartupTeamCount);
F(PlayerObjectCommand);
F(EditCursor);
F(GainScenarioAchievement);
F(GetPXSCount);
F(GetPlrKnowledge);
F(GetComponent);
F(GetBaseMaterial);
@ -2932,7 +2931,6 @@ void InitGameFunctionMap(C4AulScriptEngine *pEngine)
F(GetPlrExtraData);
F(AddEffect);
F(CheckEffect);
F(PV_Linear);
F(PV_Random);
F(PV_Direction);
@ -2945,10 +2943,10 @@ void InitGameFunctionMap(C4AulScriptEngine *pEngine)
F(PC_Die);
F(PC_Bounce);
F(PC_Stop);
AddFunc(pEngine, "IncinerateLandscape", FnIncinerateLandscape);
AddFunc(pEngine, "GetGravity", FnGetGravity);
AddFunc(pEngine, "SetGravity", FnSetGravity);
F(IncinerateLandscape);
F(GetGravity);
F(SetGravity);
#undef F
}
C4ScriptConstDef C4ScriptGameConstMap[]=

View File

@ -677,19 +677,20 @@ void C4MapScriptHost::InitFunctionMap(C4AulScriptEngine *pEngine)
void C4MapScriptHost::AddEngineFunctions()
{
// adds all engine functions to the MapLayer context
::AddFunc(this, "Draw", FnLayerDraw);
::AddFunc(this, "Blit", FnLayerBlit);
::AddFunc(this, "CreateLayer", FnCreateLayer);
::AddFunc(this, "Duplicate", FnLayerDuplicate);
::AddFunc(this, "GetMaterialTextureIndex", FnLayerGetMaterialTextureIndex);
::AddFunc(this, "GetDefaultBackgroundIndex", FnLayerGetDefaultBackgroundIndex);
::AddFunc(this, "GetPixel", FnLayerGetPixel);
::AddFunc(this, "GetBackPixel", FnLayerGetBackPixel);
::AddFunc(this, "SetPixel", FnLayerSetPixel);
::AddFunc(this, "GetPixelCount", FnLayerGetPixelCount);
::AddFunc(this, "Resize", FnLayerResize);
::AddFunc(this, "FindPosition", FnLayerFindPosition);
::AddFunc(this, "CreateMatTexMask", FnLayerCreateMatTexMask);
C4PropListStatic * p = GetPropList();
::AddFunc(p, "Draw", FnLayerDraw);
::AddFunc(p, "Blit", FnLayerBlit);
::AddFunc(p, "CreateLayer", FnCreateLayer);
::AddFunc(p, "Duplicate", FnLayerDuplicate);
::AddFunc(p, "GetMaterialTextureIndex", FnLayerGetMaterialTextureIndex);
::AddFunc(p, "GetDefaultBackgroundIndex", FnLayerGetDefaultBackgroundIndex);
::AddFunc(p, "GetPixel", FnLayerGetPixel);
::AddFunc(p, "GetBackPixel", FnLayerGetBackPixel);
::AddFunc(p, "SetPixel", FnLayerSetPixel);
::AddFunc(p, "GetPixelCount", FnLayerGetPixelCount);
::AddFunc(p, "Resize", FnLayerResize);
::AddFunc(p, "FindPosition", FnLayerFindPosition);
::AddFunc(p, "CreateMatTexMask", FnLayerCreateMatTexMask);
}
bool C4MapScriptHost::Load(C4Group & g, const char * f, const char * l, C4LangStringTable * t)

View File

@ -2570,167 +2570,170 @@ void InitObjectFunctionMap(C4AulScriptEngine *pEngine)
assert(pCDef->ValType == C4V_Int); // only int supported currently
pEngine->RegisterGlobalConstant(pCDef->Identifier, C4VInt(pCDef->Data));
}
C4PropListStatic * p = pEngine->GetPropList();
#define F(f) ::AddFunc(p, #f, Fn##f)
AddFunc(pEngine, "DoCon", FnDoCon);
AddFunc(pEngine, "GetCon", FnGetCon);
AddFunc(pEngine, "DoDamage", FnDoDamage);
AddFunc(pEngine, "DoEnergy", FnDoEnergy);
AddFunc(pEngine, "DoBreath", FnDoBreath);
AddFunc(pEngine, "GetEnergy", FnGetEnergy);
AddFunc(pEngine, "OnFire", FnOnFire);
AddFunc(pEngine, "Stuck", FnStuck);
AddFunc(pEngine, "InLiquid", FnInLiquid);
AddFunc(pEngine, "SetAction", FnSetAction);
AddFunc(pEngine, "SetActionData", FnSetActionData);
F(DoCon);
F(GetCon);
F(DoDamage);
F(DoEnergy);
F(DoBreath);
F(GetEnergy);
F(OnFire);
F(Stuck);
F(InLiquid);
F(SetAction);
F(SetActionData);
AddFunc(pEngine, "SetBridgeActionData", FnSetBridgeActionData);
AddFunc(pEngine, "GetAction", FnGetAction);
AddFunc(pEngine, "GetActTime", FnGetActTime);
AddFunc(pEngine, "GetOwner", FnGetOwner);
AddFunc(pEngine, "GetMass", FnGetMass);
AddFunc(pEngine, "GetBreath", FnGetBreath);
AddFunc(pEngine, "GetMenu", FnGetMenu);
AddFunc(pEngine, "GetVertexNum", FnGetVertexNum);
AddFunc(pEngine, "GetVertex", FnGetVertex);
AddFunc(pEngine, "SetVertex", FnSetVertex);
AddFunc(pEngine, "AddVertex", FnAddVertex);
AddFunc(pEngine, "RemoveVertex", FnRemoveVertex);
AddFunc(pEngine, "SetContactDensity", FnSetContactDensity, false);
AddFunc(pEngine, "GetController", FnGetController);
AddFunc(pEngine, "SetController", FnSetController);
AddFunc(pEngine, "GetName", FnGetName);
AddFunc(pEngine, "SetName", FnSetName);
AddFunc(pEngine, "GetKiller", FnGetKiller);
AddFunc(pEngine, "SetKiller", FnSetKiller);
AddFunc(pEngine, "GetPhase", FnGetPhase);
AddFunc(pEngine, "SetPhase", FnSetPhase);
AddFunc(pEngine, "GetCategory", FnGetCategory);
AddFunc(pEngine, "GetOCF", FnGetOCF);
AddFunc(pEngine, "SetAlive", FnSetAlive);
AddFunc(pEngine, "GetAlive", FnGetAlive);
AddFunc(pEngine, "GetDamage", FnGetDamage);
AddFunc(pEngine, "ComponentAll", FnComponentAll, false);
AddFunc(pEngine, "SetComDir", FnSetComDir);
AddFunc(pEngine, "GetComDir", FnGetComDir);
AddFunc(pEngine, "SetDir", FnSetDir);
AddFunc(pEngine, "GetDir", FnGetDir);
AddFunc(pEngine, "SetEntrance", FnSetEntrance);
AddFunc(pEngine, "GetEntrance", FnGetEntrance);
AddFunc(pEngine, "SetCategory", FnSetCategory);
AddFunc(pEngine, "FinishCommand", FnFinishCommand);
AddFunc(pEngine, "ActIdle", FnActIdle);
AddFunc(pEngine, "SetRDir", FnSetRDir);
AddFunc(pEngine, "GetRDir", FnGetRDir);
AddFunc(pEngine, "GetXDir", FnGetXDir);
AddFunc(pEngine, "GetYDir", FnGetYDir);
AddFunc(pEngine, "GetR", FnGetR);
AddFunc(pEngine, "SetXDir", FnSetXDir);
AddFunc(pEngine, "SetYDir", FnSetYDir);
AddFunc(pEngine, "SetR", FnSetR);
AddFunc(pEngine, "SetOwner", FnSetOwner);
AddFunc(pEngine, "MakeCrewMember", FnMakeCrewMember);
AddFunc(pEngine, "GrabObjectInfo", FnGrabObjectInfo);
AddFunc(pEngine, "CreateContents", FnCreateContents);
AddFunc(pEngine, "ShiftContents", FnShiftContents);
AddFunc(pEngine, "ComposeContents", FnComposeContents);
AddFunc(pEngine, "GetNeededMatStr", FnGetNeededMatStr);
AddFunc(pEngine, "GetID", FnGetID);
AddFunc(pEngine, "Contents", FnContents);
AddFunc(pEngine, "ScrollContents", FnScrollContents);
AddFunc(pEngine, "Contained", FnContained);
AddFunc(pEngine, "ContentsCount", FnContentsCount);
AddFunc(pEngine, "FindContents", FnFindContents, false);
AddFunc(pEngine, "FindOtherContents", FnFindOtherContents, false);
AddFunc(pEngine, "RemoveObject", FnRemoveObject);
AddFunc(pEngine, "GetActionTarget", FnGetActionTarget);
AddFunc(pEngine, "SetActionTargets", FnSetActionTargets);
AddFunc(pEngine, "SetComponent", FnSetComponent);
AddFunc(pEngine, "SetCrewStatus", FnSetCrewStatus, false);
AddFunc(pEngine, "SetPosition", FnSetPosition);
AddFunc(pEngine, "CreateMenu", FnCreateMenu);
AddFunc(pEngine, "AddMenuItem", FnAddMenuItem);
AddFunc(pEngine, "SelectMenuItem", FnSelectMenuItem);
AddFunc(pEngine, "SetMenuDecoration", FnSetMenuDecoration);
AddFunc(pEngine, "SetMenuTextProgress", FnSetMenuTextProgress);
AddFunc(pEngine, "ObjectDistance", FnObjectDistance);
AddFunc(pEngine, "GetValue", FnGetValue);
AddFunc(pEngine, "GetRank", FnGetRank);
AddFunc(pEngine, "SetTransferZone", FnSetTransferZone);
AddFunc(pEngine, "SetMass", FnSetMass);
AddFunc(pEngine, "GetColor", FnGetColor);
AddFunc(pEngine, "SetColor", FnSetColor);
AddFunc(pEngine, "SetLightRange", FnSetLightRange);
AddFunc(pEngine, "GetLightColor", FnGetLightColor);
AddFunc(pEngine, "SetLightColor", FnSetLightColor);
AddFunc(pEngine, "SetPicture", FnSetPicture);
AddFunc(pEngine, "GetProcedure", FnGetProcedure);
AddFunc(pEngine, "CanConcatPictureWith", FnCanConcatPictureWith);
AddFunc(pEngine, "SetGraphics", FnSetGraphics);
AddFunc(pEngine, "ObjectNumber", FnObjectNumber);
AddFunc(pEngine, "ShowInfo", FnShowInfo);
AddFunc(pEngine, "CheckVisibility", FnCheckVisibility);
AddFunc(pEngine, "SetClrModulation", FnSetClrModulation);
AddFunc(pEngine, "GetClrModulation", FnGetClrModulation);
AddFunc(pEngine, "CloseMenu", FnCloseMenu);
AddFunc(pEngine, "GetMenuSelection", FnGetMenuSelection);
AddFunc(pEngine, "GetDefBottom", FnGetDefBottom);
AddFunc(pEngine, "SetMenuSize", FnSetMenuSize);
AddFunc(pEngine, "GetCrewEnabled", FnGetCrewEnabled);
AddFunc(pEngine, "SetCrewEnabled", FnSetCrewEnabled);
AddFunc(pEngine, "DoCrewExp", FnDoCrewExp);
AddFunc(pEngine, "ClearMenuItems", FnClearMenuItems);
AddFunc(pEngine, "GetObjectLayer", FnGetObjectLayer);
AddFunc(pEngine, "SetObjectLayer", FnSetObjectLayer);
AddFunc(pEngine, "SetShape", FnSetShape);
AddFunc(pEngine, "SetObjDrawTransform", FnSetObjDrawTransform);
AddFunc(pEngine, "SetObjDrawTransform2", FnSetObjDrawTransform2, false);
AddFunc(pEngine, "SetObjectStatus", FnSetObjectStatus, false);
AddFunc(pEngine, "GetObjectStatus", FnGetObjectStatus, false);
AddFunc(pEngine, "AdjustWalkRotation", FnAdjustWalkRotation, false);
AddFunc(pEngine, "GetContact", FnGetContact);
AddFunc(pEngine, "SetObjectBlitMode", FnSetObjectBlitMode);
AddFunc(pEngine, "GetObjectBlitMode", FnGetObjectBlitMode);
AddFunc(pEngine, "GetUnusedOverlayID", FnGetUnusedOverlayID, false);
AddFunc(pEngine, "ExecuteCommand", FnExecuteCommand);
F(SetBridgeActionData);
F(GetAction);
F(GetActTime);
F(GetOwner);
F(GetMass);
F(GetBreath);
F(GetMenu);
F(GetVertexNum);
F(GetVertex);
F(SetVertex);
F(AddVertex);
F(RemoveVertex);
::AddFunc(p, "SetContactDensity", FnSetContactDensity, false);
F(GetController);
F(SetController);
F(GetName);
F(SetName);
F(GetKiller);
F(SetKiller);
F(GetPhase);
F(SetPhase);
F(GetCategory);
F(GetOCF);
F(SetAlive);
F(GetAlive);
F(GetDamage);
::AddFunc(p, "ComponentAll", FnComponentAll, false);
F(SetComDir);
F(GetComDir);
F(SetDir);
F(GetDir);
F(SetEntrance);
F(GetEntrance);
F(SetCategory);
F(FinishCommand);
F(ActIdle);
F(SetRDir);
F(GetRDir);
F(GetXDir);
F(GetYDir);
F(GetR);
F(SetXDir);
F(SetYDir);
F(SetR);
F(SetOwner);
F(MakeCrewMember);
F(GrabObjectInfo);
F(CreateContents);
F(ShiftContents);
F(ComposeContents);
F(GetNeededMatStr);
F(GetID);
F(Contents);
F(ScrollContents);
F(Contained);
F(ContentsCount);
::AddFunc(p, "FindContents", FnFindContents, false);
::AddFunc(p, "FindOtherContents", FnFindOtherContents, false);
F(RemoveObject);
F(GetActionTarget);
F(SetActionTargets);
F(SetComponent);
::AddFunc(p, "SetCrewStatus", FnSetCrewStatus, false);
F(SetPosition);
F(CreateMenu);
F(AddMenuItem);
F(SelectMenuItem);
F(SetMenuDecoration);
F(SetMenuTextProgress);
F(ObjectDistance);
F(GetValue);
F(GetRank);
F(SetTransferZone);
F(SetMass);
F(GetColor);
F(SetColor);
F(SetLightRange);
F(GetLightColor);
F(SetLightColor);
F(SetPicture);
F(GetProcedure);
F(CanConcatPictureWith);
F(SetGraphics);
F(ObjectNumber);
F(ShowInfo);
F(CheckVisibility);
F(SetClrModulation);
F(GetClrModulation);
F(CloseMenu);
F(GetMenuSelection);
F(GetDefBottom);
F(SetMenuSize);
F(GetCrewEnabled);
F(SetCrewEnabled);
F(DoCrewExp);
F(ClearMenuItems);
F(GetObjectLayer);
F(SetObjectLayer);
F(SetShape);
F(SetObjDrawTransform);
::AddFunc(p, "SetObjDrawTransform2", FnSetObjDrawTransform2, false);
::AddFunc(p, "SetObjectStatus", FnSetObjectStatus, false);
::AddFunc(p, "GetObjectStatus", FnGetObjectStatus, false);
::AddFunc(p, "AdjustWalkRotation", FnAdjustWalkRotation, false);
F(GetContact);
F(SetObjectBlitMode);
F(GetObjectBlitMode);
::AddFunc(p, "GetUnusedOverlayID", FnGetUnusedOverlayID, false);
F(ExecuteCommand);
AddFunc(pEngine, "PlayAnimation", FnPlayAnimation);
AddFunc(pEngine, "TransformBone", FnTransformBone);
AddFunc(pEngine, "StopAnimation", FnStopAnimation);
AddFunc(pEngine, "GetRootAnimation", FnGetRootAnimation);
AddFunc(pEngine, "GetAnimationList", FnGetAnimationList);
AddFunc(pEngine, "GetAnimationLength", FnGetAnimationLength);
AddFunc(pEngine, "GetAnimationName", FnGetAnimationName);
AddFunc(pEngine, "GetAnimationPosition", FnGetAnimationPosition);
AddFunc(pEngine, "GetAnimationWeight", FnGetAnimationWeight);
AddFunc(pEngine, "SetAnimationPosition", FnSetAnimationPosition);
AddFunc(pEngine, "SetAnimationBoneTransform", FnSetAnimationBoneTransform);
AddFunc(pEngine, "SetAnimationWeight", FnSetAnimationWeight);
AddFunc(pEngine, "AttachMesh", FnAttachMesh);
AddFunc(pEngine, "DetachMesh", FnDetachMesh);
AddFunc(pEngine, "SetAttachBones", FnSetAttachBones);
AddFunc(pEngine, "SetAttachTransform", FnSetAttachTransform);
AddFunc(pEngine, "GetMeshMaterial", FnGetMeshMaterial);
AddFunc(pEngine, "SetMeshMaterial", FnSetMeshMaterial);
AddFunc(pEngine, "CreateParticleAtBone", FnCreateParticleAtBone);
AddFunc(pEngine, "ChangeDef", FnChangeDef);
AddFunc(pEngine, "GrabContents", FnGrabContents);
AddFunc(pEngine, "Punch", FnPunch);
AddFunc(pEngine, "Kill", FnKill);
AddFunc(pEngine, "Fling", FnFling);
AddFunc(pEngine, "Jump", FnJump, false);
AddFunc(pEngine, "Enter", FnEnter);
AddFunc(pEngine, "DeathAnnounce", FnDeathAnnounce);
AddFunc(pEngine, "SetSolidMask", FnSetSolidMask);
AddFunc(pEngine, "SetHalfVehicleSolidMask", FnSetHalfVehicleSolidMask);
AddFunc(pEngine, "Exit", FnExit);
AddFunc(pEngine, "Collect", FnCollect);
F(PlayAnimation);
F(TransformBone);
F(StopAnimation);
F(GetRootAnimation);
F(GetAnimationList);
F(GetAnimationLength);
F(GetAnimationName);
F(GetAnimationPosition);
F(GetAnimationWeight);
F(SetAnimationPosition);
F(SetAnimationBoneTransform);
F(SetAnimationWeight);
F(AttachMesh);
F(DetachMesh);
F(SetAttachBones);
F(SetAttachTransform);
F(GetMeshMaterial);
F(SetMeshMaterial);
F(CreateParticleAtBone);
F(ChangeDef);
F(GrabContents);
F(Punch);
F(Kill);
F(Fling);
::AddFunc(p, "Jump", FnJump, false);
F(Enter);
F(DeathAnnounce);
F(SetSolidMask);
F(SetHalfVehicleSolidMask);
F(Exit);
F(Collect);
AddFunc(pEngine, "SetCommand", FnSetCommand);
AddFunc(pEngine, "AddCommand", FnAddCommand);
AddFunc(pEngine, "AppendCommand", FnAppendCommand);
AddFunc(pEngine, "GetCommand", FnGetCommand);
AddFunc(pEngine, "SetCrewExtraData", FnSetCrewExtraData);
AddFunc(pEngine, "GetCrewExtraData", FnGetCrewExtraData);
AddFunc(pEngine, "GetDefWidth", FnGetDefWidth);
AddFunc(pEngine, "GetDefHeight", FnGetDefHeight);
F(SetCommand);
F(AddCommand);
F(AppendCommand);
F(GetCommand);
F(SetCrewExtraData);
F(GetCrewExtraData);
F(GetDefWidth);
F(GetDefHeight);
#undef F
}

View File

@ -255,9 +255,9 @@ protected:
};
template <typename RType, typename ThisType, typename ...ParTypes>
inline void AddFunc(C4AulScript * pOwner, const char * Name, RType (*pFunc)(ThisType *, ParTypes...), bool Public=true)
inline void AddFunc(C4PropListStatic * Parent, const char * Name, RType (*pFunc)(ThisType *, ParTypes...), bool Public=true)
{
new C4AulEngineFunc<RType, ThisType, ParTypes...>(pOwner->GetPropList(), Name, pFunc, Public);
new C4AulEngineFunc<RType, ThisType, ParTypes...>(Parent, Name, pFunc, Public);
}
// a definition of a script constant

View File

@ -776,10 +776,11 @@ void InitCoreFunctionMap(C4AulScriptEngine *pEngine)
pEngine->RegisterGlobalConstant(pCDef->Identifier, C4VInt(pCDef->Data));
}
C4PropListStatic * p = pEngine->GetPropList();
// add all def script funcs
for (C4ScriptFnDef *pDef = &C4ScriptFnMap[0]; pDef->Identifier; pDef++)
new C4AulDefFunc(pEngine->GetPropList(), pDef);
#define F(f) AddFunc(pEngine, #f, Fn##f)
new C4AulDefFunc(p, pDef);
#define F(f) ::AddFunc(p, #f, Fn##f)
F(Abs);
F(Min);
F(Max);
@ -826,7 +827,7 @@ void InitCoreFunctionMap(C4AulScriptEngine *pEngine)
F(eval);
F(GetConstantNameByValue);
AddFunc(pEngine, "Translate", C4AulExec::FnTranslate);
AddFunc(pEngine, "LogCallStack", C4AulExec::FnLogCallStack);
::AddFunc(p, "Translate", C4AulExec::FnTranslate);
::AddFunc(p, "LogCallStack", C4AulExec::FnLogCallStack);
#undef F
}