Files
jakub 6a667d8deb Capture current mission, AI, map and administration development
Include the current addon, terrain integrations, tools, regression tests and recorded development evidence.
2026-10-13 22:52:53 +02:00

45 lines
2.4 KiB
Plaintext

modded class ArmaReforgerScripted
{
protected int m_ERRTitleFailures;
void ERR_TitleCheck(bool success, string label)
{
if (!success) m_ERRTitleFailures++;
PrintFormat("ERR LIVE TERRAIN TITLE: pass=%1 check=%2", success, label);
}
override bool OnGameStart()
{
SCR_MissionHeader header = SCR_MissionHeader.Cast(GetMissionHeader());
ResourceName scenario = header.GetHeaderResourceName();
ResourceName world = header.GetWorldResourceName();
string original = header.m_sName;
string originalMode = header.m_sGameMode;
PrintFormat("ERR LIVE TERRAIN CONTEXT: loaded=%1 root=%2 headerWorld=%3", GetWorldFile(), GetWorld().GetSubSceneName(0), world);
GetGame().ERR_PresentTerrainTakeover();
string expected = "Co10 Escape Reintroduced - Nogova";
ERR_TitleCheck(header.m_sName == expected, "initial confirmed world");
// Reproduce a stale copied title after the header already became Escape.
m_ERRAppliedTerrainTitle = "Co10 Escape Reintroduced - Everon";
header.m_sName = m_ERRAppliedTerrainTitle;
ERR_TitleCheck(GetGame().GetMissionName() == expected, "server callback refreshes already-Escape header");
ERR_TitleCheck(GetGame().ERR_TerrainLoadingTitle(header) == expected, "loading title uses current presentation");
// An incoming different scenario keeps its own name. When explicitly bound
// to this running world, even its stale world resource cannot override Nogova.
SCR_MissionHeader old = SCR_MissionHeader.Cast(MissionHeader.ReadMissionHeader("{C1E20667DCE324ED}Missions/ERR_Everon.conf"));
ERR_TitleCheck(old != null, "Everon test header available");
if (old)
{
ERR_TitleCheck(GetGame().ERR_TerrainLoadingTitle(old) == old.m_sName, "different incoming scenario isolated");
m_ERRPresentedTerrainHeader = old;
ERR_TitleCheck(GetGame().ERR_TerrainMissionTitle(old) == expected, "loaded Nogova wins over bound Everon world header");
m_ERRPresentedTerrainHeader = header;
}
GetGame().ERR_PresentTerrainTakeover();
ERR_TitleCheck(header.m_sName == expected, "repeat presentation retains actual terrain");
ERR_TitleCheck(header.GetHeaderResourceName() == scenario && header.GetWorldResourceName() == world, "scenario and world resources unchanged");
ERR_RestoreTerrainPresentation();
ERR_TitleCheck(header.m_sName == original && header.m_sGameMode == originalMode, "cleanup restores original metadata");
PrintFormat("ERR LIVE TERRAIN TITLE COMPLETE: failures=%1", m_ERRTitleFailures);
return super.OnGameStart();
}
}