Capture current mission, AI, map and administration development
Include the current addon, terrain integrations, tools, regression tests and recorded development evidence.
This commit is contained in:
@@ -0,0 +1,101 @@
|
||||
modded class ArmaReforgerScripted
|
||||
{
|
||||
protected bool m_ERRSelectionUIOpened;
|
||||
protected string m_ERRSelectionClientState;
|
||||
protected bool m_ERRSelectionProbeListed;
|
||||
protected bool m_ERRSelectionProbeRequested;
|
||||
override void OnUpdate(BaseWorld world, float timeslice)
|
||||
{
|
||||
super.OnUpdate(world, timeslice);
|
||||
if (!Replication.IsServer())
|
||||
{
|
||||
SCR_MissionHeader clientHeader = SCR_MissionHeader.Cast(GetMissionHeader());
|
||||
if (clientHeader)
|
||||
{
|
||||
string state = "scenario=" + ERR_TerrainCatalog.Key(clientHeader.GetHeaderResourceName()) + " mode=" + (ERR_GameMode.Get() != null).ToString();
|
||||
if (state != m_ERRSelectionClientState) { Print("ERR SELECTOR CLIENT: " + state); m_ERRSelectionClientState = state; }
|
||||
}
|
||||
if (clientHeader && ERR_TerrainCatalog.Key(clientHeader.GetHeaderResourceName()) == "c1e20667dce324ed" && ERR_GameMode.Get() && GetPlayerController() && !m_ERRSelectionUIOpened)
|
||||
{ m_ERRSelectionUIOpened = true; ERR_AdminMenu.Open(); }
|
||||
return;
|
||||
}
|
||||
if (!GetGameMode()) return;
|
||||
ERR_GameMode mode = ERR_GameMode.Get();
|
||||
SCR_MissionHeader header = SCR_MissionHeader.Cast(GetMissionHeader());
|
||||
if (!header) return;
|
||||
string key = ERR_TerrainCatalog.Key(header.GetHeaderResourceName());
|
||||
if (!m_ERRSelectionProbeListed)
|
||||
{
|
||||
m_ERRSelectionProbeListed = true;
|
||||
foreach (ERR_TerrainChoice choice : GetGame().ERR_Terrains().Catalog().Choices()) PrintFormat("ERR SELECTOR OPTION: key=%1 title=%2 scenario=%3 world=%4", choice.Key, choice.Title, choice.Scenario, choice.WorldResource);
|
||||
PrintFormat("ERR SELECTOR LOADED: scenario=%1 saved=%2", key, GetGame().ERR_Terrains().SavedKey());
|
||||
}
|
||||
if (!mode || !mode.Active() || m_ERRSelectionProbeRequested) return;
|
||||
m_ERRSelectionProbeRequested = true;
|
||||
if (key == "469880dfe1b48f95" && GetGame().ERR_Terrains().SavedKey() == "default")
|
||||
{
|
||||
array<string> replies = {};
|
||||
mode.Admin().Execute(mode, false, "terrain set c1e20667dce324ed", replies);
|
||||
PrintFormat("ERR SELECTOR UNAUTHORIZED: saved=%1 reply=%2", GetGame().ERR_Terrains().SavedKey(), replies[0]);
|
||||
mode.Admin().Execute(mode, true, "terrain set c1e20667dce324ed", replies);
|
||||
PrintFormat("ERR SELECTOR SAVE: saved=%1 sameWorld=%2 restart=%3", GetGame().ERR_Terrains().SavedKey(), key == ERR_TerrainCatalog.Key(header.GetHeaderResourceName()), GameStateTransitions.RequestScenarioRestart());
|
||||
}
|
||||
if (key == "c1e20667dce324ed")
|
||||
{
|
||||
PrintFormat("ERR SELECTOR COMPLETE: Everon active, saved=%1", GetGame().ERR_Terrains().SavedKey());
|
||||
}
|
||||
}
|
||||
override protected void OnBeforeWorldCleanup()
|
||||
{
|
||||
m_ERRSelectionProbeListed = false; m_ERRSelectionProbeRequested = false;
|
||||
super.OnBeforeWorldCleanup();
|
||||
}
|
||||
}
|
||||
|
||||
// Isolated visual fixture only: no account authorization or command bypass in production.
|
||||
modded class ERR_AdminMenu
|
||||
{
|
||||
protected float m_ERRFixtureWait;
|
||||
protected bool m_ERRFixtureCaptured;
|
||||
override protected void RequestSnapshot()
|
||||
{
|
||||
array<string> values = {"terrainSaved=c1e20667dce324ed", "terrainCurrent=c1e20667dce324ed", "terrainOption=c1e20667dce324ed|Co10 Escape Reintroduced — Everon", "terrainOption=469880dfe1b48f95|Nogova — Exploration Alpha"};
|
||||
array<string> status = {};
|
||||
ReceiveSnapshot(true, values, status);
|
||||
}
|
||||
override void OnMenuUpdate(float tDelta)
|
||||
{
|
||||
super.OnMenuUpdate(tDelta);
|
||||
if (m_ERRFixtureCaptured) return;
|
||||
ShowPage(8);
|
||||
m_ERRFixtureWait += tDelta;
|
||||
if (m_ERRFixtureWait < 3) return;
|
||||
SCR_ComboBoxComponent combo = SCR_ComboBoxComponent.GetComboBoxComponent("TerrainSelect", GetRootWidget());
|
||||
bool ready = combo && combo.IsEnabled() && m_TerrainKeys.Count() == 3;
|
||||
if (ready)
|
||||
{
|
||||
combo.SetCurrentItem(2); RequestSnapshot(); ready = combo.GetCurrentIndex() == 2;
|
||||
}
|
||||
GetRootWidget().Update();
|
||||
foreach (string tab : Navigation())
|
||||
{
|
||||
Widget widget = GetRootWidget().FindAnyWidget(tab); float x, y, w, h;
|
||||
widget.GetScreenPos(x, y); widget.GetScreenSize(w, h);
|
||||
if (!widget.IsVisible() || w <= 1 || h <= 1) ready = false;
|
||||
}
|
||||
System.MakeScreenshot("$logs:terrain-selection-menu");
|
||||
PrintFormat("ERR SELECTOR UI COMPLETE: ready=%1 draft-preserved=%2 page=%3", ready, combo.GetCurrentIndex() == 2, m_Page);
|
||||
m_ERRFixtureCaptured = true;
|
||||
}
|
||||
}
|
||||
|
||||
// Visual fixture: offline authentication cannot admit a soldier, so hide only
|
||||
// the loading overlay while rendering the administrator dialog. No admission change.
|
||||
modded class SCR_RespawnSystemComponent
|
||||
{
|
||||
override void UpdateLoadingPlaceholder(float dt)
|
||||
{
|
||||
super.UpdateLoadingPlaceholder(dt);
|
||||
if (ERR_AdminMenu.GetOpenMenu() && m_wLoadingPlaceholder) m_wLoadingPlaceholder.SetVisible(false);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user