Include the current addon, terrain integrations, tools, regression tests and recorded development evidence.
45 lines
2.4 KiB
Plaintext
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();
|
|
}
|
|
}
|