Use direct buttons for fixed mission setting choices; record Workshop 0.0.149
continuous-integration/drone/push Build is passing

This commit is contained in:
2026-11-07 02:16:12 +01:00
parent e421dcfc15
commit 47cd4fa2bc
10 changed files with 156 additions and 129 deletions
+7 -1
View File
@@ -1,6 +1,12 @@
# Changelog # Changelog
Latest published Workshop version: **0.0.148** Latest published Workshop version: **0.0.149**
## 2026-11-07 — Clearer setting choices
- Replaced typed loot, starting scenario, AI and weather modes with labelled selection buttons.
- Guard spacing and HQ participation buttons now save directly, without redundant input fields or Apply.
- Selected choices highlight after server confirmation.
## 2026-11-07 — Interrupted mission results ## 2026-11-07 — Interrupted mission results
@@ -47,13 +47,17 @@ class ERR_AdminMenu : ChimeraMenuBase
m_Controller = SCR_PlayerController.Cast(GetGame().GetPlayerController()); m_Controller = SCR_PlayerController.Cast(GetGame().GetPlayerController());
m_Mode = ERR_GameMode.Cast(GetGame().GetGameMode()); m_Mode = ERR_GameMode.Cast(GetGame().GetGameMode());
if (!m_Controller) { Close(); return; } if (!m_Controller) { Close(); return; }
array<string> names = {"TelemetryOn", "TelemetryOff","SitesOn", "SitesOff", "PlaneOn", "PlaneOff", "Close", "PauseJournal", "JournalDetails", "LatestJournal", "KeepWeaponOn", "KeepWeaponOff", "SelfEpiOn", "SelfEpiOff", "IntelSummary", "RerollIntel", "RandomDay_startTimeMinutes", "Default_viewDistanceMetres", "RestartEmptyOn", "RestartEmptyOff", "RecommendedBoats", "RecommendedPlane", "RecommendedWeapons", "RecommendedDrones"}; array<string> names = {"CrashLootRandom", "CrashLootCustom", "TelemetryOn", "TelemetryOff","SitesOn", "SitesOff", "PlaneOn", "PlaneOff", "Close", "PauseJournal", "JournalDetails", "LatestJournal", "KeepWeaponOn", "KeepWeaponOff", "SelfEpiOn", "SelfEpiOff", "IntelSummary", "RerollIntel", "RandomDay_startTimeMinutes", "Default_viewDistanceMetres", "RestartEmptyOn", "RestartEmptyOff", "RecommendedBoats", "RecommendedPlane", "RecommendedWeapons", "RecommendedDrones"};
foreach (string mainButton : ERR_AdminMenuPages.MainButtons()) names.Insert(mainButton); foreach (string mainButton : ERR_AdminMenuPages.MainButtons()) names.Insert(mainButton);
foreach (string pageButton : Navigation()) names.Insert(pageButton); foreach (string pageButton : Navigation()) names.Insert(pageButton);
for (int density = 1; density <= 4; density++) names.Insert("GuardEvery_" + density.ToString());
for (int policy = 0; policy <= 2; policy++) names.Insert("GuardHQ_" + policy.ToString());
foreach (string key : ERR_AdminMenuFields.Keys()) foreach (string key : ERR_AdminMenuFields.Keys())
{ {
array<string> choices = ERR_AdminMenuFields.Choices(key);
if (!choices.IsEmpty())
{
foreach (string choice : choices) names.Insert("Choice_" + key + "_" + choice);
continue;
}
names.Insert("Apply_" + key); names.Insert("Apply_" + key);
if (ERR_Settings.Randomizable(key)) names.Insert("Random_" + key); if (ERR_Settings.Randomizable(key)) names.Insert("Random_" + key);
} }
@@ -162,8 +166,11 @@ class ERR_AdminMenu : ChimeraMenuBase
protected int m_SitesState = -1; protected int m_SitesState = -1;
protected int m_RestartEmptyState = -1; protected int m_RestartEmptyState = -1;
protected int m_TelemetryState = -1; protected int m_TelemetryState = -1;
protected int m_CrashLootState = -1;
protected void UpdateActions() protected void UpdateActions()
{ {
ERR_SelectionStyle.Choice(SCR_ButtonTextComponent.GetButtonText("CrashLootRandom", GetRootWidget()), m_CrashLootState == 1);
ERR_SelectionStyle.Choice(SCR_ButtonTextComponent.GetButtonText("CrashLootCustom", GetRootWidget()), m_CrashLootState == 0);
ERR_SelectionStyle.Pair(GetRootWidget(), "TelemetryOn", "TelemetryOff", m_TelemetryState); ERR_SelectionStyle.Pair(GetRootWidget(), "TelemetryOn", "TelemetryOff", m_TelemetryState);
ERR_SelectionStyle.Pair(GetRootWidget(), "SitesOn", "SitesOff", m_SitesState); ERR_SelectionStyle.Pair(GetRootWidget(), "SitesOn", "SitesOff", m_SitesState);
ERR_SelectionStyle.Pair(GetRootWidget(), "SelfEpiOn", "SelfEpiOff", m_SelfEpiState); ERR_SelectionStyle.Pair(GetRootWidget(), "SelfEpiOn", "SelfEpiOff", m_SelfEpiState);
@@ -172,17 +179,19 @@ class ERR_AdminMenu : ChimeraMenuBase
foreach (SCR_ButtonBaseComponent button : m_Buttons) foreach (SCR_ButtonBaseComponent button : m_Buttons)
{ {
string name = button.GetRootWidget().GetName(); string name = button.GetRootWidget().GetName();
if (name.IndexOf("Apply_") == 0 || name.IndexOf("Random_") == 0 || name.IndexOf("RandomDay_") == 0 || name.IndexOf("Default_") == 0) string choiceKey = ERR_AdminMenuFields.ChoiceKey(name);
if (!choiceKey.IsEmpty()) button.SetEnabled(m_Ready && m_AvailableFields.Contains(choiceKey) && ERR_AdminMenuFields.Available(choiceKey, m_HQ, m_Intel));
else if (name.IndexOf("Apply_") == 0 || name.IndexOf("Random_") == 0 || name.IndexOf("RandomDay_") == 0 || name.IndexOf("Default_") == 0)
{ {
int prefix = name.IndexOf("_") + 1; int prefix = name.IndexOf("_") + 1;
string key = name.Substring(prefix, name.Length() - prefix); string key = name.Substring(prefix, name.Length() - prefix);
button.SetEnabled(m_Ready && m_AvailableFields.Contains(key) && ERR_AdminMenuFields.Available(key, m_HQ, m_Intel)); button.SetEnabled(m_Ready && m_AvailableFields.Contains(key) && ERR_AdminMenuFields.Available(key, m_HQ, m_Intel));
} }
else if (name == "PlaneOn" || name == "PlaneOff") button.SetEnabled(m_Ready && m_HQ && m_AvailableFields.Contains("planeReconEnabled")); else if (name == "PlaneOn" || name == "PlaneOff") button.SetEnabled(m_Ready && m_HQ && m_AvailableFields.Contains("planeReconEnabled"));
else if (name.IndexOf("GuardEvery_") == 0) button.SetEnabled(m_Ready && m_HQ && m_AvailableFields.Contains("objectGuardEvery"));
else if (name.IndexOf("GuardHQ_") == 0) button.SetEnabled(m_Ready && m_HQ && m_AvailableFields.Contains("objectGuardHQMode"));
else if (name == "RerollIntel" || name == "IntelSummary") button.SetEnabled(m_Ready && m_Intel); else if (name == "RerollIntel" || name == "IntelSummary") button.SetEnabled(m_Ready && m_Intel);
else if (name == "LatestJournal") button.SetEnabled(m_Ready && m_HQ); else if (name == "LatestJournal") button.SetEnabled(m_Ready && m_HQ);
else if (name == "CrashLootRandom") button.SetEnabled(m_Ready && m_CrashLootState == 0);
else if (name == "CrashLootCustom") button.SetEnabled(m_Ready && m_CrashLootState == 1);
else if (name == "TelemetryOn") button.SetEnabled(m_Ready && m_TelemetryState == 0); else if (name == "TelemetryOn") button.SetEnabled(m_Ready && m_TelemetryState == 0);
else if (name == "TelemetryOff") button.SetEnabled(m_Ready && m_TelemetryState == 1); else if (name == "TelemetryOff") button.SetEnabled(m_Ready && m_TelemetryState == 1);
else if (name == "RestartEmptyOn") button.SetEnabled(m_Ready && m_RestartEmptyState == 0); else if (name == "RestartEmptyOn") button.SetEnabled(m_Ready && m_RestartEmptyState == 0);
@@ -199,7 +208,7 @@ class ERR_AdminMenu : ChimeraMenuBase
{ {
if (!authorized) { Close(); return; } if (!authorized) { Close(); return; }
if (!values) return; if (!values) return;
m_HQ = false; m_Intel = false; m_AvailableFields.Clear(); m_KeepWeaponState = -1; m_SelfEpiState = -1; m_RestartEmptyState = -1; m_TelemetryState = -1; m_HQ = false; m_Intel = false; m_AvailableFields.Clear(); m_KeepWeaponState = -1; m_SelfEpiState = -1; m_RestartEmptyState = -1; m_TelemetryState = -1; m_CrashLootState = -1;
foreach (string entry : values) foreach (string entry : values)
{ {
if (entry == "supports=hq") { m_HQ = true; continue; } if (entry == "supports=hq") { m_HQ = true; continue; }
@@ -231,6 +240,13 @@ class ERR_AdminMenu : ChimeraMenuBase
if (ERR_AdminMenuFields.Keys().Contains(resolvedKey)) SetText("Saved_" + resolvedKey, "Saved: Random (using " + entry.Substring(divider + 1, entry.Length() - divider - 1) + ")"); if (ERR_AdminMenuFields.Keys().Contains(resolvedKey)) SetText("Saved_" + resolvedKey, "Saved: Random (using " + entry.Substring(divider + 1, entry.Length() - divider - 1) + ")");
continue; continue;
} }
if (key == "crashLootMode")
{
string lootMode = entry.Substring(divider + 1, entry.Length() - divider - 1);
if (lootMode == "0" || lootMode == "1") m_CrashLootState = lootMode.ToInt();
SetText("Saved_crashLootMode", "Next round: " + ERR_AdminMenuFields.Display(key, lootMode));
continue;
}
if (key == "planeReconEnabled") if (key == "planeReconEnabled")
{ {
int planeState = entry.Substring(divider + 1, entry.Length() - divider - 1).ToInt(); int planeState = entry.Substring(divider + 1, entry.Length() - divider - 1).ToInt();
@@ -274,20 +290,18 @@ class ERR_AdminMenu : ChimeraMenuBase
} }
if (!ERR_AdminMenuFields.Keys().Contains(key)) continue; if (!ERR_AdminMenuFields.Keys().Contains(key)) continue;
string saved = entry.Substring(divider + 1, entry.Length() - divider - 1); string saved = entry.Substring(divider + 1, entry.Length() - divider - 1);
if (ERR_Settings.Randomizable(key)) ERR_SelectionStyle.Choice(SCR_ButtonTextComponent.GetButtonText("Random_" + key, GetRootWidget()), saved == "-1"); if (ERR_Settings.Randomizable(key) && ERR_AdminMenuFields.Choices(key).IsEmpty()) ERR_SelectionStyle.Choice(SCR_ButtonTextComponent.GetButtonText("Random_" + key, GetRootWidget()), saved == "-1");
if (key == "startTimeMinutes") ERR_SelectionStyle.Choice(SCR_ButtonTextComponent.GetButtonText("RandomDay_startTimeMinutes", GetRootWidget()), saved == "-2"); if (key == "startTimeMinutes") ERR_SelectionStyle.Choice(SCR_ButtonTextComponent.GetButtonText("RandomDay_startTimeMinutes", GetRootWidget()), saved == "-2");
if (key == "viewDistanceMetres") ERR_SelectionStyle.Choice(SCR_ButtonTextComponent.GetButtonText("Default_viewDistanceMetres", GetRootWidget()), saved == "0"); if (key == "viewDistanceMetres") ERR_SelectionStyle.Choice(SCR_ButtonTextComponent.GetButtonText("Default_viewDistanceMetres", GetRootWidget()), saved == "0");
if (key == "objectGuardEvery") array<string> choices = ERR_AdminMenuFields.Choices(key);
for (int density = 1; density <= 4; density++) foreach (string choice : choices)
ERR_SelectionStyle.Choice(SCR_ButtonTextComponent.GetButtonText("GuardEvery_" + density.ToString(), GetRootWidget()), saved.ToInt() == density); ERR_SelectionStyle.Choice(SCR_ButtonTextComponent.GetButtonText("Choice_" + key + "_" + choice, GetRootWidget()), choice == ERR_AdminMenuFields.SavedChoice(key, saved));
if (key == "objectGuardHQMode")
for (int policy = 0; policy <= 2; policy++)
ERR_SelectionStyle.Choice(SCR_ButtonTextComponent.GetButtonText("GuardHQ_" + policy.ToString(), GetRootWidget()), saved.ToInt() == policy);
string value = ERR_AdminMenuFields.Display(key, saved); string value = ERR_AdminMenuFields.Display(key, saved);
m_AvailableFields.Insert(key); m_AvailableFields.Insert(key);
if (key == "startMode") SetText("Saved_" + key, ERR_AdminMenuFields.StartSummary(entry.Substring(divider + 1, entry.Length() - divider - 1).ToInt(), m_Mode.StartMode())); if (key == "startMode") SetText("Saved_" + key, ERR_AdminMenuFields.StartSummary(entry.Substring(divider + 1, entry.Length() - divider - 1).ToInt(), m_Mode.StartMode()));
else if (key == "aiDoctrine" || key == "aiShadow") SetText("Saved_" + key, "Next round: " + value); else if (key == "aiDoctrine" || key == "aiShadow") SetText("Saved_" + key, "Next round: " + value);
else SetText("Saved_" + key, "Saved: " + value); else SetText("Saved_" + key, "Saved: " + value);
if (!choices.IsEmpty()) continue;
// Existing fields retain all draft text, including a temporarily empty edit. // Existing fields retain all draft text, including a temporarily empty edit.
if (!m_InitializedFields.Contains(key)) if (!m_InitializedFields.Contains(key))
{ {
@@ -393,16 +407,14 @@ class ERR_AdminMenu : ChimeraMenuBase
return; return;
} }
if (!m_Controller || !m_Ready || m_Age > 6 || m_ClickDelay > 0) return; if (!m_Controller || !m_Ready || m_Age > 6 || m_ClickDelay > 0) return;
if (name.IndexOf("GuardEvery_") == 0 || name.IndexOf("GuardHQ_") == 0) string choiceKey = ERR_AdminMenuFields.ChoiceKey(name);
if (!choiceKey.IsEmpty())
{ {
string guardKey = "objectGuardEvery"; if (!m_AvailableFields.Contains(choiceKey) || !ERR_AdminMenuFields.Available(choiceKey, m_HQ, m_Intel)) return;
if (name.IndexOf("GuardHQ_") == 0) guardKey = "objectGuardHQMode"; int choicePrefix = choiceKey.Length() + 8;
if (!m_HQ || !m_AvailableFields.Contains(guardKey)) return; string choice = name.Substring(choicePrefix, name.Length() - choicePrefix);
int guardPrefix = name.IndexOf("_") + 1; m_ClickDelay = 0.3; SetText("Feedback", "Saving selection for next round...");
SCR_EditBoxComponent guardEdit = SCR_EditBoxComponent.GetEditBoxComponent(guardKey, GetRootWidget()); m_Controller.ERR_AdminSubmit(ERR_AdminMenuFields.Command(choiceKey, choice), true); return;
if (guardEdit) guardEdit.SetValue(name.Substring(guardPrefix, name.Length() - guardPrefix));
SetText("Feedback", "Choice selected. Press Apply to save for next round. Green marks the saved choice.");
return;
} }
if (name == "PlaneOn" || name == "PlaneOff") if (name == "PlaneOn" || name == "PlaneOff")
{ {
@@ -411,6 +423,13 @@ class ERR_AdminMenu : ChimeraMenuBase
m_ClickDelay = 0.3; SetText("Feedback", "Saving reconnaissance plane selection for next round..."); m_ClickDelay = 0.3; SetText("Feedback", "Saving reconnaissance plane selection for next round...");
m_Controller.ERR_AdminSubmit("mission plane set " + enabled, true); return; m_Controller.ERR_AdminSubmit("mission plane set " + enabled, true); return;
} }
if (name == "CrashLootRandom" || name == "CrashLootCustom")
{
if (m_CrashLootState < 0) return;
string lootMode = "custom"; if (name == "CrashLootRandom") lootMode = "random";
m_ClickDelay = 0.3; SetText("Feedback", "Saving crash-site loot mode for next round...");
m_Controller.ERR_AdminSubmit("mission crashloot set " + lootMode, true); return;
}
if (name == "TelemetryOn" || name == "TelemetryOff") if (name == "TelemetryOn" || name == "TelemetryOff")
{ {
if (m_TelemetryState < 0) return; if (m_TelemetryState < 0) return;
@@ -3,7 +3,29 @@ class ERR_AdminMenuFields
{ {
static array<string> Keys() static array<string> Keys()
{ {
return {"shoreBoatCount", "shoreBoatChancePercent", "shoreBoatCrossingChancePercent", "crashLootMode", "crashSiteCount", "crashHelicopterChancePercent", "crashRifleCount", "crashMagazineCount", "crashAntiAirChancePercent", "crashRocketChancePercent", "aiDoctrine", "aiShadow", "automaticEquipmentChancePercent", "sarkaAngerPerCar", "motorbikeCount", "droneReconCount", "droneCooldownSeconds", "planeAltitudeMetres", "planeReplacementSeconds", "planeSectorSeconds", "fieldCampCount", "fieldHospitalCount", "startWeaponCount", "startMagazineCount", "objectGuardCount", "objectGuardEvery", "objectGuardHQMode", "hunterSpawnDistanceMetres", "roadblockCount", "largeRoadblockCount", "mainRoadWidthMetres", "civilianTrafficCount", "garageVehicleCount", "garageChancePercent", "garageRadiusMetres", "garageSpawnIntervalSeconds", "emptyRestartHours", "startMode", "radioDefenceSeconds", "aiIntelChancePercent", "intelRevealChancePercent", "radioIntelSiteCount", "startTimeMinutes", "timeMultiplier", "startDateCode", "weatherProfile", "viewDistanceMetres", "reportIntervalSeconds", "supportSquadLimit", "responseRadiusMetres", "convoyCount", "antiAirChancePercent", "antiPersonnelMineChancePercent", "heliTimerMinutes"}; return {"shoreBoatCount", "shoreBoatChancePercent", "shoreBoatCrossingChancePercent", "crashSiteCount", "crashHelicopterChancePercent", "crashRifleCount", "crashMagazineCount", "crashAntiAirChancePercent", "crashRocketChancePercent", "aiDoctrine", "aiShadow", "automaticEquipmentChancePercent", "sarkaAngerPerCar", "motorbikeCount", "droneReconCount", "droneCooldownSeconds", "planeAltitudeMetres", "planeReplacementSeconds", "planeSectorSeconds", "fieldCampCount", "fieldHospitalCount", "startWeaponCount", "startMagazineCount", "objectGuardCount", "objectGuardEvery", "objectGuardHQMode", "hunterSpawnDistanceMetres", "roadblockCount", "largeRoadblockCount", "mainRoadWidthMetres", "civilianTrafficCount", "garageVehicleCount", "garageChancePercent", "garageRadiusMetres", "garageSpawnIntervalSeconds", "emptyRestartHours", "startMode", "radioDefenceSeconds", "aiIntelChancePercent", "intelRevealChancePercent", "radioIntelSiteCount", "startTimeMinutes", "timeMultiplier", "startDateCode", "weatherProfile", "viewDistanceMetres", "reportIntervalSeconds", "supportSquadLimit", "responseRadiusMetres", "convoyCount", "antiAirChancePercent", "antiPersonnelMineChancePercent", "heliTimerMinutes"};
}
// Only bounded named modes belong here; quantities and free-form values stay edits.
static array<string> Choices(string key)
{
if (key == "startMode") return {"prison", "crash"};
if (key == "aiDoctrine") return {"current", "coordinated"};
if (key == "aiShadow") return {"off", "on"};
if (key == "objectGuardEvery") return {"1", "2", "3", "4"};
if (key == "objectGuardHQMode") return {"0", "1", "2"};
if (key == "weatherProfile") return {"authored", "clear", "overcast", "rain", "random"};
return {};
}
static string ChoiceKey(string button)
{
if (!button.StartsWith("Choice_")) return "";
array<string> parts = {}; button.Split("_", parts, false);
if (parts.Count() != 3 || !Choices(parts[1]).Contains(parts[2])) return "";
return parts[1];
}
static string SavedChoice(string key, string saved)
{
string choice = Display(key, saved); choice.ToLower(); return choice;
} }
static bool Available(string key, bool hq, bool intel) static bool Available(string key, bool hq, bool intel)
{ {
+28 -51
View File
@@ -110,8 +110,8 @@ ImageWidgetClass { "Is Visible" 0 Name "Selected_OpenJournal" Slot FrameWidgetSl
FrameWidgetClass { "Is Visible" 1 Name "SettingsPage" Slot FrameWidgetSlot { Anchor 0 0 0 0 PositionX 220 OffsetLeft 220 PositionY 160 OffsetTop 160 SizeX 1000 OffsetRight -1220 SizeY 532 OffsetBottom -692 } { FrameWidgetClass { "Is Visible" 1 Name "SettingsPage" Slot FrameWidgetSlot { Anchor 0 0 0 0 PositionX 220 OffsetLeft 220 PositionY 160 OffsetTop 160 SizeX 1000 OffsetRight -1220 SizeY 532 OffsetBottom -692 } {
TextWidgetClass { Name "Label_startMode" Slot FrameWidgetSlot { Anchor 0 0 0 0 PositionX 28 OffsetLeft 28 PositionY 4 OffsetTop 4 SizeX 456 OffsetRight -484 SizeY 22 OffsetBottom -26 } Color 0.9 0.92 0.94 1 Text "Next start (Prison or Crash)" "Font Size" 18 "Min Font Size" 18 Wrap 1 FontProperties FontProperties { Font "{3E7733BAC8C831F6}UI/Fonts/RobotoCondensed/RobotoCondensed_Regular.fnt" } } TextWidgetClass { Name "Label_startMode" Slot FrameWidgetSlot { Anchor 0 0 0 0 PositionX 28 OffsetLeft 28 PositionY 4 OffsetTop 4 SizeX 456 OffsetRight -484 SizeY 22 OffsetBottom -26 } Color 0.9 0.92 0.94 1 Text "Next start (Prison or Crash)" "Font Size" 18 "Min Font Size" 18 Wrap 1 FontProperties FontProperties { Font "{3E7733BAC8C831F6}UI/Fonts/RobotoCondensed/RobotoCondensed_Regular.fnt" } }
ButtonWidgetClass : "{DA43C77A0D1E59F8}UI/layouts/ERR/AdminValue.layout" { Name "startMode" Slot FrameWidgetSlot { Anchor 0 0 0 0 PositionX 28 OffsetLeft 28 PositionY 28 OffsetTop 28 SizeX 180 OffsetRight -208 SizeY 32 OffsetBottom -60 } components { SCR_EditBoxComponent "{547290FFBD5B33E9}" { m_sLabel "" } } } ButtonWidgetClass : "{75C912A1C89BE6C2}UI/layouts/WidgetLibrary/Buttons/WLib_ButtonText.layout" { Name "Choice_startMode_prison" Slot FrameWidgetSlot { Anchor 0 0 0 0 PositionX 28 OffsetLeft 28 PositionY 28 OffsetTop 28 SizeX 220 OffsetRight -248 SizeY 32 OffsetBottom -60 } components { SCR_ButtonTextComponent "{5548F0143AE99095}" { m_sText "Prison" } } }
ButtonWidgetClass : "{75C912A1C89BE6C2}UI/layouts/WidgetLibrary/Buttons/WLib_ButtonText.layout" { Name "Apply_startMode" Slot FrameWidgetSlot { Anchor 0 0 0 0 PositionX 220 OffsetLeft 220 PositionY 28 OffsetTop 28 SizeX 100 OffsetRight -320 SizeY 32 OffsetBottom -60 } components { SCR_ButtonTextComponent "{5548F0143AE99095}" { m_sText "Apply" } } } ButtonWidgetClass : "{75C912A1C89BE6C2}UI/layouts/WidgetLibrary/Buttons/WLib_ButtonText.layout" { Name "Choice_startMode_crash" Slot FrameWidgetSlot { Anchor 0 0 0 0 PositionX 264 OffsetLeft 264 PositionY 28 OffsetTop 28 SizeX 220 OffsetRight -484 SizeY 32 OffsetBottom -60 } components { SCR_ButtonTextComponent "{5548F0143AE99095}" { m_sText "Crash" } } }
TextWidgetClass { Name "Saved_startMode" Slot FrameWidgetSlot { Anchor 0 0 0 0 PositionX 28 OffsetLeft 28 PositionY 64 OffsetTop 64 SizeX 456 OffsetRight -484 SizeY 28 OffsetBottom -92 } Color 0.9 0.92 0.94 1 Text "Waiting for server" "Font Size" 14 "Min Font Size" 14 Wrap 1 FontProperties FontProperties { Font "{3E7733BAC8C831F6}UI/Fonts/RobotoCondensed/RobotoCondensed_Regular.fnt" } } TextWidgetClass { Name "Saved_startMode" Slot FrameWidgetSlot { Anchor 0 0 0 0 PositionX 28 OffsetLeft 28 PositionY 64 OffsetTop 64 SizeX 456 OffsetRight -484 SizeY 28 OffsetBottom -92 } Color 0.9 0.92 0.94 1 Text "Waiting for server" "Font Size" 14 "Min Font Size" 14 Wrap 1 FontProperties FontProperties { Font "{3E7733BAC8C831F6}UI/Fonts/RobotoCondensed/RobotoCondensed_Regular.fnt" } }
TextWidgetClass { Name "Help_startMode" Slot FrameWidgetSlot { Anchor 0 0 0 0 PositionX 28 OffsetLeft 28 PositionY 92 OffsetTop 92 SizeX 456 OffsetRight -484 SizeY 28 OffsetBottom -120 } Color 0.9 0.92 0.94 1 Text "Starting scenario for the next round." "Font Size" 14 "Min Font Size" 14 Wrap 1 FontProperties FontProperties { Font "{3E7733BAC8C831F6}UI/Fonts/RobotoCondensed/RobotoCondensed_Regular.fnt" } } TextWidgetClass { Name "Help_startMode" Slot FrameWidgetSlot { Anchor 0 0 0 0 PositionX 28 OffsetLeft 28 PositionY 92 OffsetTop 92 SizeX 456 OffsetRight -484 SizeY 28 OffsetBottom -120 } Color 0.9 0.92 0.94 1 Text "Starting scenario for the next round." "Font Size" 14 "Min Font Size" 14 Wrap 1 FontProperties FontProperties { Font "{3E7733BAC8C831F6}UI/Fonts/RobotoCondensed/RobotoCondensed_Regular.fnt" } }
TextWidgetClass { Name "Label_radioDefenceSeconds" Slot FrameWidgetSlot { Anchor 0 0 0 0 PositionX 508 OffsetLeft 508 PositionY 4 OffsetTop 4 SizeX 456 OffsetRight -964 SizeY 22 OffsetBottom -26 } Color 0.9 0.92 0.94 1 Text "Radio defence (30-1800 seconds)" "Font Size" 18 "Min Font Size" 18 Wrap 1 FontProperties FontProperties { Font "{3E7733BAC8C831F6}UI/Fonts/RobotoCondensed/RobotoCondensed_Regular.fnt" } } TextWidgetClass { Name "Label_radioDefenceSeconds" Slot FrameWidgetSlot { Anchor 0 0 0 0 PositionX 508 OffsetLeft 508 PositionY 4 OffsetTop 4 SizeX 456 OffsetRight -964 SizeY 22 OffsetBottom -26 } Color 0.9 0.92 0.94 1 Text "Radio defence (30-1800 seconds)" "Font Size" 18 "Min Font Size" 18 Wrap 1 FontProperties FontProperties { Font "{3E7733BAC8C831F6}UI/Fonts/RobotoCondensed/RobotoCondensed_Regular.fnt" } }
@@ -510,7 +510,7 @@ ButtonWidgetClass : "{75C912A1C89BE6C2}UI/layouts/WidgetLibrary/Buttons/WLib_But
FrameWidgetClass { "Is Visible" 0 Name "WorldPage" Slot FrameWidgetSlot { Anchor 0 0 0 0 PositionX 220 OffsetLeft 220 PositionY 160 OffsetTop 160 SizeX 1000 OffsetRight -1220 SizeY 532 OffsetBottom -692 } { FrameWidgetClass { "Is Visible" 0 Name "WorldPage" Slot FrameWidgetSlot { Anchor 0 0 0 0 PositionX 220 OffsetLeft 220 PositionY 160 OffsetTop 160 SizeX 1000 OffsetRight -1220 SizeY 532 OffsetBottom -692 } {
TextWidgetClass { TextWidgetClass {
Name "WorldHelp" Slot FrameWidgetSlot { Anchor 0 0 0 0 PositionX 28 OffsetLeft 28 PositionY 6 OffsetTop 6 SizeX 936 OffsetRight -964 SizeY 50 OffsetBottom -56 } Name "WorldHelp" Slot FrameWidgetSlot { Anchor 0 0 0 0 PositionX 28 OffsetLeft 28 PositionY 6 OffsetTop 6 SizeX 936 OffsetRight -964 SizeY 50 OffsetBottom -56 }
Color 0.9 0.92 0.94 1 Text "Time and weather apply next round. View distance applies now. Press Apply to save." "Font Size" 19 "Min Font Size" 19 Wrap 1 Color 0.9 0.92 0.94 1 Text "Time and weather apply next round. View distance applies now. Weather buttons save immediately; use Apply for edited values." "Font Size" 19 "Min Font Size" 19 Wrap 1
FontProperties FontProperties { Font "{3E7733BAC8C831F6}UI/Fonts/RobotoCondensed/RobotoCondensed_Regular.fnt" } FontProperties FontProperties { Font "{3E7733BAC8C831F6}UI/Fonts/RobotoCondensed/RobotoCondensed_Regular.fnt" }
} }
TextWidgetClass { TextWidgetClass {
@@ -640,8 +640,8 @@ ButtonWidgetClass : "{75C912A1C89BE6C2}UI/layouts/WidgetLibrary/Buttons/WLib_But
} }
} }
TextWidgetClass { TextWidgetClass {
Name "Label_weatherProfile" Slot FrameWidgetSlot { Anchor 0 0 0 0 PositionX 28 OffsetLeft 28 PositionY 322 OffsetTop 322 SizeX 368 OffsetRight -396 SizeY 28 OffsetBottom -350 } Name "Label_weatherProfile" Slot FrameWidgetSlot { Anchor 0 0 0 0 PositionX 28 OffsetLeft 28 PositionY 322 OffsetTop 322 SizeX 168 OffsetRight -196 SizeY 28 OffsetBottom -350 }
Color 0.9 0.92 0.94 1 Text "Weather (authored / clear / overcast / rain)" "Font Size" 20 "Min Font Size" 20 Wrap 1 FontProperties FontProperties { Color 0.9 0.92 0.94 1 Text "Weather" "Font Size" 20 "Min Font Size" 20 Wrap 1 FontProperties FontProperties {
Font "{3E7733BAC8C831F6}UI/Fonts/RobotoCondensed/RobotoCondensed_Regular.fnt" Font "{3E7733BAC8C831F6}UI/Fonts/RobotoCondensed/RobotoCondensed_Regular.fnt"
} }
} }
@@ -653,34 +653,15 @@ TextWidgetClass {
} }
TextWidgetClass { TextWidgetClass {
Name "Help_weatherProfile" Slot FrameWidgetSlot { Anchor 0 0 0 0 PositionX 28 OffsetLeft 28 PositionY 378 OffsetTop 378 SizeX 936 OffsetRight -964 SizeY 20 OffsetBottom -398 } Name "Help_weatherProfile" Slot FrameWidgetSlot { Anchor 0 0 0 0 PositionX 28 OffsetLeft 28 PositionY 378 OffsetTop 378 SizeX 936 OffsetRight -964 SizeY 20 OffsetBottom -398 }
Color 0.72 0.81 0.87 1 Text "Use authored, clear, overcast or rain. Random chooses one of the three weather types next round." "Font Size" 16 "Min Font Size" 16 Wrap 1 Color 0.72 0.81 0.87 1 Text "Map default keeps authored weather. Random chooses clear, overcast or rain each round." "Font Size" 16 "Min Font Size" 16 Wrap 1
FontProperties FontProperties { Font "{3E7733BAC8C831F6}UI/Fonts/RobotoCondensed/RobotoCondensed_Regular.fnt" } FontProperties FontProperties { Font "{3E7733BAC8C831F6}UI/Fonts/RobotoCondensed/RobotoCondensed_Regular.fnt" }
} }
ButtonWidgetClass : "{DA43C77A0D1E59F8}UI/layouts/ERR/AdminValue.layout" { ButtonWidgetClass : "{75C912A1C89BE6C2}UI/layouts/WidgetLibrary/Buttons/WLib_ButtonText.layout" { Name "Choice_weatherProfile_authored" Slot FrameWidgetSlot { Anchor 0 0 0 0 PositionX 208 OffsetLeft 208 PositionY 322 OffsetTop 322 SizeX 140 OffsetRight -348 SizeY 32 OffsetBottom -354 } components { SCR_ButtonTextComponent "{5548F0143AE99095}" { m_sText "Map default" } } }
Name "weatherProfile" Slot FrameWidgetSlot { Anchor 0 0 0 0 PositionX 408 OffsetLeft 408 PositionY 322 OffsetTop 322 SizeX 240 OffsetRight -648 SizeY 42 OffsetBottom -364 } ButtonWidgetClass : "{75C912A1C89BE6C2}UI/layouts/WidgetLibrary/Buttons/WLib_ButtonText.layout" { Name "Choice_weatherProfile_clear" Slot FrameWidgetSlot { Anchor 0 0 0 0 PositionX 362 OffsetLeft 362 PositionY 322 OffsetTop 322 SizeX 140 OffsetRight -502 SizeY 32 OffsetBottom -354 } components { SCR_ButtonTextComponent "{5548F0143AE99095}" { m_sText "Clear" } } }
components { ButtonWidgetClass : "{75C912A1C89BE6C2}UI/layouts/WidgetLibrary/Buttons/WLib_ButtonText.layout" { Name "Choice_weatherProfile_overcast" Slot FrameWidgetSlot { Anchor 0 0 0 0 PositionX 516 OffsetLeft 516 PositionY 322 OffsetTop 322 SizeX 140 OffsetRight -656 SizeY 32 OffsetBottom -354 } components { SCR_ButtonTextComponent "{5548F0143AE99095}" { m_sText "Overcast" } } }
SCR_EditBoxComponent "{547290FFBD5B33E9}" { ButtonWidgetClass : "{75C912A1C89BE6C2}UI/layouts/WidgetLibrary/Buttons/WLib_ButtonText.layout" { Name "Choice_weatherProfile_rain" Slot FrameWidgetSlot { Anchor 0 0 0 0 PositionX 670 OffsetLeft 670 PositionY 322 OffsetTop 322 SizeX 140 OffsetRight -810 SizeY 32 OffsetBottom -354 } components { SCR_ButtonTextComponent "{5548F0143AE99095}" { m_sText "Rain" } } }
m_sLabel "" ButtonWidgetClass : "{75C912A1C89BE6C2}UI/layouts/WidgetLibrary/Buttons/WLib_ButtonText.layout" { Name "Choice_weatherProfile_random" Slot FrameWidgetSlot { Anchor 0 0 0 0 PositionX 824 OffsetLeft 824 PositionY 322 OffsetTop 322 SizeX 140 OffsetRight -964 SizeY 32 OffsetBottom -354 } components { SCR_ButtonTextComponent "{5548F0143AE99095}" { m_sText "Random" } } }
}
}
}
ButtonWidgetClass : "{75C912A1C89BE6C2}UI/layouts/WidgetLibrary/Buttons/WLib_ButtonText.layout" {
Name "Apply_weatherProfile" Slot FrameWidgetSlot { Anchor 0 0 0 0 PositionX 660 OffsetLeft 660 PositionY 322 OffsetTop 322 SizeX 112 OffsetRight -772 SizeY 42 OffsetBottom -364 }
components {
SCR_ButtonTextComponent "{5548F0143AE99095}" {
m_sText "Apply"
}
}
}
ButtonWidgetClass : "{75C912A1C89BE6C2}UI/layouts/WidgetLibrary/Buttons/WLib_ButtonText.layout" {
Name "Random_weatherProfile" Slot FrameWidgetSlot { Anchor 0 0 0 0 PositionX 784 OffsetLeft 784 PositionY 322 OffsetTop 322 SizeX 180 OffsetRight -964 SizeY 42 OffsetBottom -364 }
components {
SCR_ButtonTextComponent "{5548F0143AE99095}" {
m_sText "Random"
}
}
}
TextWidgetClass { TextWidgetClass {
Name "Label_viewDistanceMetres" Slot FrameWidgetSlot { Anchor 0 0 0 0 PositionX 28 OffsetLeft 28 PositionY 406 OffsetTop 406 SizeX 368 OffsetRight -396 SizeY 28 OffsetBottom -434 } Name "Label_viewDistanceMetres" Slot FrameWidgetSlot { Anchor 0 0 0 0 PositionX 28 OffsetLeft 28 PositionY 406 OffsetTop 406 SizeX 368 OffsetRight -396 SizeY 28 OffsetBottom -434 }
Color 0.9 0.92 0.94 1 Text "View distance (500-10000 m / default)" "Font Size" 20 "Min Font Size" 20 Wrap 1 FontProperties FontProperties { Color 0.9 0.92 0.94 1 Text "View distance (500-10000 m / default)" "Font Size" 20 "Min Font Size" 20 Wrap 1 FontProperties FontProperties {
@@ -1121,23 +1102,19 @@ ButtonWidgetClass : "{DA43C77A0D1E59F8}UI/layouts/ERR/AdminValue.layout" { Name
ButtonWidgetClass : "{75C912A1C89BE6C2}UI/layouts/WidgetLibrary/Buttons/WLib_ButtonText.layout" { Name "Apply_objectGuardCount" Slot FrameWidgetSlot { Anchor 0 0 0 0 PositionX 170 OffsetLeft 170 PositionY 130 OffsetTop 130 SizeX 110 OffsetRight -280 SizeY 38 OffsetBottom -168 } components { SCR_ButtonTextComponent "{5548F0143AE99095}" { m_sText "Apply" } } } ButtonWidgetClass : "{75C912A1C89BE6C2}UI/layouts/WidgetLibrary/Buttons/WLib_ButtonText.layout" { Name "Apply_objectGuardCount" Slot FrameWidgetSlot { Anchor 0 0 0 0 PositionX 170 OffsetLeft 170 PositionY 130 OffsetTop 130 SizeX 110 OffsetRight -280 SizeY 38 OffsetBottom -168 } components { SCR_ButtonTextComponent "{5548F0143AE99095}" { m_sText "Apply" } } }
TextWidgetClass { Name "Saved_objectGuardCount" Slot FrameWidgetSlot { Anchor 0 0 0 0 PositionX 28 OffsetLeft 28 PositionY 171 OffsetTop 171 SizeX 936 OffsetRight -964 SizeY 22 OffsetBottom -193 } Color 0.9 0.92 0.94 1 Text "Waiting for saved value" "Font Size" 16 "Min Font Size" 16 Wrap 1 FontProperties FontProperties { Font "{3E7733BAC8C831F6}UI/Fonts/RobotoCondensed/RobotoCondensed_Regular.fnt" } } TextWidgetClass { Name "Saved_objectGuardCount" Slot FrameWidgetSlot { Anchor 0 0 0 0 PositionX 28 OffsetLeft 28 PositionY 171 OffsetTop 171 SizeX 936 OffsetRight -964 SizeY 22 OffsetBottom -193 } Color 0.9 0.92 0.94 1 Text "Waiting for saved value" "Font Size" 16 "Min Font Size" 16 Wrap 1 FontProperties FontProperties { Font "{3E7733BAC8C831F6}UI/Fonts/RobotoCondensed/RobotoCondensed_Regular.fnt" } }
TextWidgetClass { Name "Help_objectGuardCount" Slot FrameWidgetSlot { Anchor 0 0 0 0 PositionX 28 OffsetLeft 28 PositionY 195 OffsetTop 195 SizeX 936 OffsetRight -964 SizeY 26 OffsetBottom -221 } Color 0.9 0.92 0.94 1 Text "Towers and chimneys use suitable platforms. Lost guards are not replaced." "Font Size" 14 "Min Font Size" 14 Wrap 1 FontProperties FontProperties { Font "{3E7733BAC8C831F6}UI/Fonts/RobotoCondensed/RobotoCondensed_Regular.fnt" } } TextWidgetClass { Name "Help_objectGuardCount" Slot FrameWidgetSlot { Anchor 0 0 0 0 PositionX 28 OffsetLeft 28 PositionY 195 OffsetTop 195 SizeX 936 OffsetRight -964 SizeY 26 OffsetBottom -221 } Color 0.9 0.92 0.94 1 Text "Towers and chimneys use suitable platforms. Lost guards are not replaced." "Font Size" 14 "Min Font Size" 14 Wrap 1 FontProperties FontProperties { Font "{3E7733BAC8C831F6}UI/Fonts/RobotoCondensed/RobotoCondensed_Regular.fnt" } }
TextWidgetClass { Name "Label_objectGuardEvery" Slot FrameWidgetSlot { Anchor 0 0 0 0 PositionX 28 OffsetLeft 28 PositionY 225 OffsetTop 225 SizeX 936 OffsetRight -964 SizeY 26 OffsetBottom -251 } Color 0.9 0.92 0.94 1 Text "Guard every Nth eligible site (1-4)" "Font Size" 20 "Min Font Size" 20 Wrap 1 FontProperties FontProperties { Font "{3E7733BAC8C831F6}UI/Fonts/RobotoCondensed/RobotoCondensed_Regular.fnt" } } TextWidgetClass { Name "Label_objectGuardEvery" Slot FrameWidgetSlot { Anchor 0 0 0 0 PositionX 28 OffsetLeft 28 PositionY 225 OffsetTop 225 SizeX 936 OffsetRight -964 SizeY 26 OffsetBottom -251 } Color 0.9 0.92 0.94 1 Text "Guard spacing" "Font Size" 20 "Min Font Size" 20 Wrap 1 FontProperties FontProperties { Font "{3E7733BAC8C831F6}UI/Fonts/RobotoCondensed/RobotoCondensed_Regular.fnt" } }
ButtonWidgetClass : "{DA43C77A0D1E59F8}UI/layouts/ERR/AdminValue.layout" { Name "objectGuardEvery" Slot FrameWidgetSlot { Anchor 0 0 0 0 PositionX 28 OffsetLeft 28 PositionY 255 OffsetTop 255 SizeX 130 OffsetRight -158 SizeY 38 OffsetBottom -293 } components { SCR_EditBoxComponent "{547290FFBD5B33E9}" { m_sLabel "" } } } ButtonWidgetClass : "{75C912A1C89BE6C2}UI/layouts/WidgetLibrary/Buttons/WLib_ButtonText.layout" { Name "Choice_objectGuardEvery_1" Slot FrameWidgetSlot { Anchor 0 0 0 0 PositionX 28 OffsetLeft 28 PositionY 255 OffsetTop 255 SizeX 222 OffsetRight -250 SizeY 38 OffsetBottom -293 } components { SCR_ButtonTextComponent "{5548F0143AE99095}" { m_sText "Every site" } } }
ButtonWidgetClass : "{75C912A1C89BE6C2}UI/layouts/WidgetLibrary/Buttons/WLib_ButtonText.layout" { Name "Apply_objectGuardEvery" Slot FrameWidgetSlot { Anchor 0 0 0 0 PositionX 170 OffsetLeft 170 PositionY 255 OffsetTop 255 SizeX 110 OffsetRight -280 SizeY 38 OffsetBottom -293 } components { SCR_ButtonTextComponent "{5548F0143AE99095}" { m_sText "Apply" } } } ButtonWidgetClass : "{75C912A1C89BE6C2}UI/layouts/WidgetLibrary/Buttons/WLib_ButtonText.layout" { Name "Choice_objectGuardEvery_2" Slot FrameWidgetSlot { Anchor 0 0 0 0 PositionX 266 OffsetLeft 266 PositionY 255 OffsetTop 255 SizeX 222 OffsetRight -488 SizeY 38 OffsetBottom -293 } components { SCR_ButtonTextComponent "{5548F0143AE99095}" { m_sText "Every 2nd" } } }
ButtonWidgetClass : "{75C912A1C89BE6C2}UI/layouts/WidgetLibrary/Buttons/WLib_ButtonText.layout" { Name "Choice_objectGuardEvery_3" Slot FrameWidgetSlot { Anchor 0 0 0 0 PositionX 504 OffsetLeft 504 PositionY 255 OffsetTop 255 SizeX 222 OffsetRight -726 SizeY 38 OffsetBottom -293 } components { SCR_ButtonTextComponent "{5548F0143AE99095}" { m_sText "Every 3rd" } } }
ButtonWidgetClass : "{75C912A1C89BE6C2}UI/layouts/WidgetLibrary/Buttons/WLib_ButtonText.layout" { Name "Choice_objectGuardEvery_4" Slot FrameWidgetSlot { Anchor 0 0 0 0 PositionX 742 OffsetLeft 742 PositionY 255 OffsetTop 255 SizeX 222 OffsetRight -964 SizeY 38 OffsetBottom -293 } components { SCR_ButtonTextComponent "{5548F0143AE99095}" { m_sText "Every 4th" } } }
TextWidgetClass { Name "Saved_objectGuardEvery" Slot FrameWidgetSlot { Anchor 0 0 0 0 PositionX 28 OffsetLeft 28 PositionY 296 OffsetTop 296 SizeX 936 OffsetRight -964 SizeY 22 OffsetBottom -318 } Color 0.9 0.92 0.94 1 Text "Waiting for saved value" "Font Size" 16 "Min Font Size" 16 Wrap 1 FontProperties FontProperties { Font "{3E7733BAC8C831F6}UI/Fonts/RobotoCondensed/RobotoCondensed_Regular.fnt" } } TextWidgetClass { Name "Saved_objectGuardEvery" Slot FrameWidgetSlot { Anchor 0 0 0 0 PositionX 28 OffsetLeft 28 PositionY 296 OffsetTop 296 SizeX 936 OffsetRight -964 SizeY 22 OffsetBottom -318 } Color 0.9 0.92 0.94 1 Text "Waiting for saved value" "Font Size" 16 "Min Font Size" 16 Wrap 1 FontProperties FontProperties { Font "{3E7733BAC8C831F6}UI/Fonts/RobotoCondensed/RobotoCondensed_Regular.fnt" } }
TextWidgetClass { Name "Help_objectGuardEvery" Slot FrameWidgetSlot { Anchor 0 0 0 0 PositionX 28 OffsetLeft 28 PositionY 320 OffsetTop 320 SizeX 936 OffsetRight -964 SizeY 26 OffsetBottom -346 } Color 0.9 0.92 0.94 1 Text "1 = every site; 2 = every second; 3 = every third; 4 = every fourth." "Font Size" 14 "Min Font Size" 14 Wrap 1 FontProperties FontProperties { Font "{3E7733BAC8C831F6}UI/Fonts/RobotoCondensed/RobotoCondensed_Regular.fnt" } } TextWidgetClass { Name "Help_objectGuardEvery" Slot FrameWidgetSlot { Anchor 0 0 0 0 PositionX 28 OffsetLeft 28 PositionY 320 OffsetTop 320 SizeX 936 OffsetRight -964 SizeY 26 OffsetBottom -346 } Color 0.9 0.92 0.94 1 Text "1 = every site; 2 = every second; 3 = every third; 4 = every fourth." "Font Size" 14 "Min Font Size" 14 Wrap 1 FontProperties FontProperties { Font "{3E7733BAC8C831F6}UI/Fonts/RobotoCondensed/RobotoCondensed_Regular.fnt" } }
ButtonWidgetClass : "{75C912A1C89BE6C2}UI/layouts/WidgetLibrary/Buttons/WLib_ButtonText.layout" { Name "GuardEvery_1" Slot FrameWidgetSlot { Anchor 0 0 0 0 PositionX 292 OffsetLeft 292 PositionY 255 OffsetTop 255 SizeX 155 OffsetRight -447 SizeY 38 OffsetBottom -293 } components { SCR_ButtonTextComponent "{5548F0143AE99095}" { m_sText "Every site" } } } TextWidgetClass { Name "Label_objectGuardHQMode" Slot FrameWidgetSlot { Anchor 0 0 0 0 PositionX 28 OffsetLeft 28 PositionY 350 OffsetTop 350 SizeX 936 OffsetRight -964 SizeY 26 OffsetBottom -376 } Color 0.9 0.92 0.94 1 Text "HQ participation" "Font Size" 20 "Min Font Size" 20 Wrap 1 FontProperties FontProperties { Font "{3E7733BAC8C831F6}UI/Fonts/RobotoCondensed/RobotoCondensed_Regular.fnt" } }
ButtonWidgetClass : "{75C912A1C89BE6C2}UI/layouts/WidgetLibrary/Buttons/WLib_ButtonText.layout" { Name "GuardEvery_2" Slot FrameWidgetSlot { Anchor 0 0 0 0 PositionX 459 OffsetLeft 459 PositionY 255 OffsetTop 255 SizeX 155 OffsetRight -614 SizeY 38 OffsetBottom -293 } components { SCR_ButtonTextComponent "{5548F0143AE99095}" { m_sText "Every 2nd" } } } ButtonWidgetClass : "{75C912A1C89BE6C2}UI/layouts/WidgetLibrary/Buttons/WLib_ButtonText.layout" { Name "Choice_objectGuardHQMode_0" Slot FrameWidgetSlot { Anchor 0 0 0 0 PositionX 28 OffsetLeft 28 PositionY 380 OffsetTop 380 SizeX 304 OffsetRight -332 SizeY 38 OffsetBottom -418 } components { SCR_ButtonTextComponent "{5548F0143AE99095}" { m_sText "Hold positions" } } }
ButtonWidgetClass : "{75C912A1C89BE6C2}UI/layouts/WidgetLibrary/Buttons/WLib_ButtonText.layout" { Name "GuardEvery_3" Slot FrameWidgetSlot { Anchor 0 0 0 0 PositionX 626 OffsetLeft 626 PositionY 255 OffsetTop 255 SizeX 155 OffsetRight -781 SizeY 38 OffsetBottom -293 } components { SCR_ButtonTextComponent "{5548F0143AE99095}" { m_sText "Every 3rd" } } } ButtonWidgetClass : "{75C912A1C89BE6C2}UI/layouts/WidgetLibrary/Buttons/WLib_ButtonText.layout" { Name "Choice_objectGuardHQMode_1" Slot FrameWidgetSlot { Anchor 0 0 0 0 PositionX 344 OffsetLeft 344 PositionY 380 OffsetTop 380 SizeX 304 OffsetRight -648 SizeY 38 OffsetBottom -418 } components { SCR_ButtonTextComponent "{5548F0143AE99095}" { m_sText "Half respond to HQ" } } }
ButtonWidgetClass : "{75C912A1C89BE6C2}UI/layouts/WidgetLibrary/Buttons/WLib_ButtonText.layout" { Name "GuardEvery_4" Slot FrameWidgetSlot { Anchor 0 0 0 0 PositionX 793 OffsetLeft 793 PositionY 255 OffsetTop 255 SizeX 155 OffsetRight -948 SizeY 38 OffsetBottom -293 } components { SCR_ButtonTextComponent "{5548F0143AE99095}" { m_sText "Every 4th" } } } ButtonWidgetClass : "{75C912A1C89BE6C2}UI/layouts/WidgetLibrary/Buttons/WLib_ButtonText.layout" { Name "Choice_objectGuardHQMode_2" Slot FrameWidgetSlot { Anchor 0 0 0 0 PositionX 660 OffsetLeft 660 PositionY 380 OffsetTop 380 SizeX 304 OffsetRight -964 SizeY 38 OffsetBottom -418 } components { SCR_ButtonTextComponent "{5548F0143AE99095}" { m_sText "All respond to HQ" } } }
TextWidgetClass { Name "Label_objectGuardHQMode" Slot FrameWidgetSlot { Anchor 0 0 0 0 PositionX 28 OffsetLeft 28 PositionY 350 OffsetTop 350 SizeX 936 OffsetRight -964 SizeY 26 OffsetBottom -376 } Color 0.9 0.92 0.94 1 Text "HQ participation (0-2)" "Font Size" 20 "Min Font Size" 20 Wrap 1 FontProperties FontProperties { Font "{3E7733BAC8C831F6}UI/Fonts/RobotoCondensed/RobotoCondensed_Regular.fnt" } }
ButtonWidgetClass : "{DA43C77A0D1E59F8}UI/layouts/ERR/AdminValue.layout" { Name "objectGuardHQMode" Slot FrameWidgetSlot { Anchor 0 0 0 0 PositionX 28 OffsetLeft 28 PositionY 380 OffsetTop 380 SizeX 130 OffsetRight -158 SizeY 38 OffsetBottom -418 } components { SCR_EditBoxComponent "{547290FFBD5B33E9}" { m_sLabel "" } } }
ButtonWidgetClass : "{75C912A1C89BE6C2}UI/layouts/WidgetLibrary/Buttons/WLib_ButtonText.layout" { Name "Apply_objectGuardHQMode" Slot FrameWidgetSlot { Anchor 0 0 0 0 PositionX 170 OffsetLeft 170 PositionY 380 OffsetTop 380 SizeX 110 OffsetRight -280 SizeY 38 OffsetBottom -418 } components { SCR_ButtonTextComponent "{5548F0143AE99095}" { m_sText "Apply" } } }
TextWidgetClass { Name "Saved_objectGuardHQMode" Slot FrameWidgetSlot { Anchor 0 0 0 0 PositionX 28 OffsetLeft 28 PositionY 421 OffsetTop 421 SizeX 936 OffsetRight -964 SizeY 22 OffsetBottom -443 } Color 0.9 0.92 0.94 1 Text "Waiting for saved value" "Font Size" 16 "Min Font Size" 16 Wrap 1 FontProperties FontProperties { Font "{3E7733BAC8C831F6}UI/Fonts/RobotoCondensed/RobotoCondensed_Regular.fnt" } } TextWidgetClass { Name "Saved_objectGuardHQMode" Slot FrameWidgetSlot { Anchor 0 0 0 0 PositionX 28 OffsetLeft 28 PositionY 421 OffsetTop 421 SizeX 936 OffsetRight -964 SizeY 22 OffsetBottom -443 } Color 0.9 0.92 0.94 1 Text "Waiting for saved value" "Font Size" 16 "Min Font Size" 16 Wrap 1 FontProperties FontProperties { Font "{3E7733BAC8C831F6}UI/Fonts/RobotoCondensed/RobotoCondensed_Regular.fnt" } }
TextWidgetClass { Name "Help_objectGuardHQMode" Slot FrameWidgetSlot { Anchor 0 0 0 0 PositionX 28 OffsetLeft 28 PositionY 445 OffsetTop 445 SizeX 936 OffsetRight -964 SizeY 26 OffsetBottom -471 } Color 0.9 0.92 0.94 1 Text "0 = hold positions; 1 = half hold and half respond; 2 = all can respond." "Font Size" 14 "Min Font Size" 14 Wrap 1 FontProperties FontProperties { Font "{3E7733BAC8C831F6}UI/Fonts/RobotoCondensed/RobotoCondensed_Regular.fnt" } } TextWidgetClass { Name "Help_objectGuardHQMode" Slot FrameWidgetSlot { Anchor 0 0 0 0 PositionX 28 OffsetLeft 28 PositionY 445 OffsetTop 445 SizeX 936 OffsetRight -964 SizeY 26 OffsetBottom -471 } Color 0.9 0.92 0.94 1 Text "Choose which guards can leave their posts to respond to HQ." "Font Size" 14 "Min Font Size" 14 Wrap 1 FontProperties FontProperties { Font "{3E7733BAC8C831F6}UI/Fonts/RobotoCondensed/RobotoCondensed_Regular.fnt" } }
ButtonWidgetClass : "{75C912A1C89BE6C2}UI/layouts/WidgetLibrary/Buttons/WLib_ButtonText.layout" { Name "GuardHQ_0" Slot FrameWidgetSlot { Anchor 0 0 0 0 PositionX 292 OffsetLeft 292 PositionY 380 OffsetTop 380 SizeX 210 OffsetRight -502 SizeY 38 OffsetBottom -418 } components { SCR_ButtonTextComponent "{5548F0143AE99095}" { m_sText "Hold positions" } } }
ButtonWidgetClass : "{75C912A1C89BE6C2}UI/layouts/WidgetLibrary/Buttons/WLib_ButtonText.layout" { Name "GuardHQ_1" Slot FrameWidgetSlot { Anchor 0 0 0 0 PositionX 514 OffsetLeft 514 PositionY 380 OffsetTop 380 SizeX 210 OffsetRight -724 SizeY 38 OffsetBottom -418 } components { SCR_ButtonTextComponent "{5548F0143AE99095}" { m_sText "Half to HQ" } } }
ButtonWidgetClass : "{75C912A1C89BE6C2}UI/layouts/WidgetLibrary/Buttons/WLib_ButtonText.layout" { Name "GuardHQ_2" Slot FrameWidgetSlot { Anchor 0 0 0 0 PositionX 736 OffsetLeft 736 PositionY 380 OffsetTop 380 SizeX 210 OffsetRight -946 SizeY 38 OffsetBottom -418 } components { SCR_ButtonTextComponent "{5548F0143AE99095}" { m_sText "All to HQ" } } }
} } } }
FrameWidgetClass { "Is Visible" 0 Name "SitesPage" Slot FrameWidgetSlot { Anchor 0 0 0 0 PositionX 220 OffsetLeft 220 PositionY 160 OffsetTop 160 SizeX 1000 OffsetRight -1220 SizeY 532 OffsetBottom -692 } { FrameWidgetClass { "Is Visible" 0 Name "SitesPage" Slot FrameWidgetSlot { Anchor 0 0 0 0 PositionX 220 OffsetLeft 220 PositionY 160 OffsetTop 160 SizeX 1000 OffsetRight -1220 SizeY 532 OffsetBottom -692 } {
TextWidgetClass { Name "SitesHeading" Slot FrameWidgetSlot { Anchor 0 0 0 0 PositionX 28 OffsetLeft 28 PositionY 6 OffsetTop 6 SizeX 710 OffsetRight -738 SizeY 32 OffsetBottom -38 } Color 0.9 0.92 0.94 1 Text "Camps and hospitals - next round" "Font Size" 22 "Min Font Size" 22 Wrap 1 FontProperties FontProperties { Font "{3E7733BAC8C831F6}UI/Fonts/RobotoCondensed/RobotoCondensed_Regular.fnt" } } TextWidgetClass { Name "SitesHeading" Slot FrameWidgetSlot { Anchor 0 0 0 0 PositionX 28 OffsetLeft 28 PositionY 6 OffsetTop 6 SizeX 710 OffsetRight -738 SizeY 32 OffsetBottom -38 } Color 0.9 0.92 0.94 1 Text "Camps and hospitals - next round" "Font Size" 22 "Min Font Size" 22 Wrap 1 FontProperties FontProperties { Font "{3E7733BAC8C831F6}UI/Fonts/RobotoCondensed/RobotoCondensed_Regular.fnt" } }
@@ -1158,9 +1135,9 @@ TextWidgetClass { Name "SitesObjectives" Slot FrameWidgetSlot { Anchor 0 0 0 0 P
FrameWidgetClass { "Is Visible" 0 Name "CrashSitesPage" Slot FrameWidgetSlot { Anchor 0 0 0 0 PositionX 220 OffsetLeft 220 PositionY 160 OffsetTop 160 SizeX 1000 OffsetRight -1220 SizeY 532 OffsetBottom -692 } { FrameWidgetClass { "Is Visible" 0 Name "CrashSitesPage" Slot FrameWidgetSlot { Anchor 0 0 0 0 PositionX 220 OffsetLeft 220 PositionY 160 OffsetTop 160 SizeX 1000 OffsetRight -1220 SizeY 532 OffsetBottom -692 } {
TextWidgetClass { Name "CrashHeading" Slot FrameWidgetSlot { Anchor 0 0 0 0 PositionX 28 OffsetLeft 28 PositionY 4 OffsetTop 4 SizeX 936 OffsetRight -964 SizeY 30 OffsetBottom -34 } Color 0.9 0.92 0.94 1 Text "Crash sites - next round" "Font Size" 22 "Min Font Size" 22 Wrap 1 FontProperties FontProperties { Font "{3E7733BAC8C831F6}UI/Fonts/RobotoCondensed/RobotoCondensed_Regular.fnt" } } TextWidgetClass { Name "CrashHeading" Slot FrameWidgetSlot { Anchor 0 0 0 0 PositionX 28 OffsetLeft 28 PositionY 4 OffsetTop 4 SizeX 936 OffsetRight -964 SizeY 30 OffsetBottom -34 } Color 0.9 0.92 0.94 1 Text "Crash sites - next round" "Font Size" 22 "Min Font Size" 22 Wrap 1 FontProperties FontProperties { Font "{3E7733BAC8C831F6}UI/Fonts/RobotoCondensed/RobotoCondensed_Regular.fnt" } }
TextWidgetClass { Name "CrashHelp" Slot FrameWidgetSlot { Anchor 0 0 0 0 PositionX 28 OffsetLeft 28 PositionY 40 OffsetTop 40 SizeX 936 OffsetRight -964 SizeY 40 OffsetBottom -80 } Color 0.9 0.92 0.94 1 Text "Default loot is random for each crate: poor pistol supplies, a useful rifle, or a rich haul of scoped guns and launchers. No refills." "Font Size" 17 "Min Font Size" 17 Wrap 1 FontProperties FontProperties { Font "{3E7733BAC8C831F6}UI/Fonts/RobotoCondensed/RobotoCondensed_Regular.fnt" } } TextWidgetClass { Name "CrashHelp" Slot FrameWidgetSlot { Anchor 0 0 0 0 PositionX 28 OffsetLeft 28 PositionY 40 OffsetTop 40 SizeX 936 OffsetRight -964 SizeY 40 OffsetBottom -80 } Color 0.9 0.92 0.94 1 Text "Default loot is random for each crate: poor pistol supplies, a useful rifle, or a rich haul of scoped guns and launchers. No refills." "Font Size" 17 "Min Font Size" 17 Wrap 1 FontProperties FontProperties { Font "{3E7733BAC8C831F6}UI/Fonts/RobotoCondensed/RobotoCondensed_Regular.fnt" } }
TextWidgetClass { Name "Label_crashLootMode" Slot FrameWidgetSlot { Anchor 0 0 0 0 PositionX 28 OffsetLeft 28 PositionY 82 OffsetTop 82 SizeX 456 OffsetRight -484 SizeY 26 OffsetBottom -108 } Color 0.9 0.92 0.94 1 Text "Loot mode: Random or Custom" "Font Size" 17 "Min Font Size" 17 Wrap 1 FontProperties FontProperties { Font "{3E7733BAC8C831F6}UI/Fonts/RobotoCondensed/RobotoCondensed_Regular.fnt" } } TextWidgetClass { Name "Label_crashLootMode" Slot FrameWidgetSlot { Anchor 0 0 0 0 PositionX 28 OffsetLeft 28 PositionY 82 OffsetTop 82 SizeX 456 OffsetRight -484 SizeY 26 OffsetBottom -108 } Color 0.9 0.92 0.94 1 Text "Crash-site loot" "Font Size" 17 "Min Font Size" 17 Wrap 1 FontProperties FontProperties { Font "{3E7733BAC8C831F6}UI/Fonts/RobotoCondensed/RobotoCondensed_Regular.fnt" } }
ButtonWidgetClass : "{DA43C77A0D1E59F8}UI/layouts/ERR/AdminValue.layout" { Name "crashLootMode" Slot FrameWidgetSlot { Anchor 0 0 0 0 PositionX 508 OffsetLeft 508 PositionY 82 OffsetTop 82 SizeX 180 OffsetRight -688 SizeY 32 OffsetBottom -114 } components { SCR_EditBoxComponent "{547290FFBD5B33E9}" { m_sLabel "" } } } ButtonWidgetClass : "{75C912A1C89BE6C2}UI/layouts/WidgetLibrary/Buttons/WLib_ButtonText.layout" { Name "CrashLootRandom" Slot FrameWidgetSlot { Anchor 0 0 0 0 PositionX 508 OffsetLeft 508 PositionY 82 OffsetTop 82 SizeX 218 OffsetRight -726 SizeY 32 OffsetBottom -114 } components { SCR_ButtonTextComponent "{5548F0143AE99095}" { m_sText "Random" } } }
ButtonWidgetClass : "{75C912A1C89BE6C2}UI/layouts/WidgetLibrary/Buttons/WLib_ButtonText.layout" { Name "Apply_crashLootMode" Slot FrameWidgetSlot { Anchor 0 0 0 0 PositionX 700 OffsetLeft 700 PositionY 82 OffsetTop 82 SizeX 100 OffsetRight -800 SizeY 32 OffsetBottom -114 } components { SCR_ButtonTextComponent "{5548F0143AE99095}" { m_sText "Apply" } } } ButtonWidgetClass : "{75C912A1C89BE6C2}UI/layouts/WidgetLibrary/Buttons/WLib_ButtonText.layout" { Name "CrashLootCustom" Slot FrameWidgetSlot { Anchor 0 0 0 0 PositionX 746 OffsetLeft 746 PositionY 82 OffsetTop 82 SizeX 218 OffsetRight -964 SizeY 32 OffsetBottom -114 } components { SCR_ButtonTextComponent "{5548F0143AE99095}" { m_sText "Custom" } } }
TextWidgetClass { Name "Saved_crashLootMode" Slot FrameWidgetSlot { Anchor 0 0 0 0 PositionX 508 OffsetLeft 508 PositionY 118 OffsetTop 118 SizeX 456 OffsetRight -964 SizeY 20 OffsetBottom -138 } Color 0.9 0.92 0.94 1 Text "Waiting for server" "Font Size" 14 "Min Font Size" 14 Wrap 1 FontProperties FontProperties { Font "{3E7733BAC8C831F6}UI/Fonts/RobotoCondensed/RobotoCondensed_Regular.fnt" } } TextWidgetClass { Name "Saved_crashLootMode" Slot FrameWidgetSlot { Anchor 0 0 0 0 PositionX 508 OffsetLeft 508 PositionY 118 OffsetTop 118 SizeX 456 OffsetRight -964 SizeY 20 OffsetBottom -138 } Color 0.9 0.92 0.94 1 Text "Waiting for server" "Font Size" 14 "Min Font Size" 14 Wrap 1 FontProperties FontProperties { Font "{3E7733BAC8C831F6}UI/Fonts/RobotoCondensed/RobotoCondensed_Regular.fnt" } }
TextWidgetClass { Name "Help_crashLootMode" Slot FrameWidgetSlot { Anchor 0 0 0 0 PositionX 28 OffsetLeft 28 PositionY 112 OffsetTop 112 SizeX 456 OffsetRight -484 SizeY 40 OffsetBottom -152 } Color 0.9 0.92 0.94 1 Text "Random rolls each crate independently. Custom uses the four loot controls below." "Font Size" 14 "Min Font Size" 14 Wrap 1 FontProperties FontProperties { Font "{3E7733BAC8C831F6}UI/Fonts/RobotoCondensed/RobotoCondensed_Regular.fnt" } } TextWidgetClass { Name "Help_crashLootMode" Slot FrameWidgetSlot { Anchor 0 0 0 0 PositionX 28 OffsetLeft 28 PositionY 112 OffsetTop 112 SizeX 456 OffsetRight -484 SizeY 40 OffsetBottom -152 } Color 0.9 0.92 0.94 1 Text "Random rolls each crate independently. Custom uses the four loot controls below." "Font Size" 14 "Min Font Size" 14 Wrap 1 FontProperties FontProperties { Font "{3E7733BAC8C831F6}UI/Fonts/RobotoCondensed/RobotoCondensed_Regular.fnt" } }
TextWidgetClass { Name "Label_crashSiteCount" Slot FrameWidgetSlot { Anchor 0 0 0 0 PositionX 28 OffsetLeft 28 PositionY 160 OffsetTop 160 SizeX 456 OffsetRight -484 SizeY 22 OffsetBottom -182 } Color 0.9 0.92 0.94 1 Text "Crash sites (0-12)" "Font Size" 17 "Min Font Size" 17 Wrap 1 FontProperties FontProperties { Font "{3E7733BAC8C831F6}UI/Fonts/RobotoCondensed/RobotoCondensed_Regular.fnt" } } TextWidgetClass { Name "Label_crashSiteCount" Slot FrameWidgetSlot { Anchor 0 0 0 0 PositionX 28 OffsetLeft 28 PositionY 160 OffsetTop 160 SizeX 456 OffsetRight -484 SizeY 22 OffsetBottom -182 } Color 0.9 0.92 0.94 1 Text "Crash sites (0-12)" "Font Size" 17 "Min Font Size" 17 Wrap 1 FontProperties FontProperties { Font "{3E7733BAC8C831F6}UI/Fonts/RobotoCondensed/RobotoCondensed_Regular.fnt" } }
@@ -1316,13 +1293,13 @@ FrameWidgetClass { "Is Visible" 0 Name "AIPage" Slot FrameWidgetSlot { Anchor 0
TextWidgetClass { Name "AIHelp" Slot FrameWidgetSlot { Anchor 0 0 0 0 PositionX 28 OffsetLeft 28 PositionY 6 OffsetTop 6 SizeX 720 OffsetRight -748 SizeY 42 OffsetBottom -48 } Color 0.9 0.92 0.94 1 Text "AI doctrine - changes apply next round." "Font Size" 20 "Min Font Size" 20 Wrap 1 FontProperties FontProperties { Font "{3E7733BAC8C831F6}UI/Fonts/RobotoCondensed/RobotoCondensed_Regular.fnt" } } TextWidgetClass { Name "AIHelp" Slot FrameWidgetSlot { Anchor 0 0 0 0 PositionX 28 OffsetLeft 28 PositionY 6 OffsetTop 6 SizeX 720 OffsetRight -748 SizeY 42 OffsetBottom -48 } Color 0.9 0.92 0.94 1 Text "AI doctrine - changes apply next round." "Font Size" 20 "Min Font Size" 20 Wrap 1 FontProperties FontProperties { Font "{3E7733BAC8C831F6}UI/Fonts/RobotoCondensed/RobotoCondensed_Regular.fnt" } }
TextWidgetClass { Name "Label_aiDoctrine" Slot FrameWidgetSlot { Anchor 0 0 0 0 PositionX 28 OffsetLeft 28 PositionY 76 OffsetTop 76 SizeX 936 OffsetRight -964 SizeY 28 OffsetBottom -104 } Color 0.9 0.92 0.94 1 Text "Hunting doctrine: Current or Coordinated" "Font Size" 20 "Min Font Size" 20 Wrap 1 FontProperties FontProperties { Font "{3E7733BAC8C831F6}UI/Fonts/RobotoCondensed/RobotoCondensed_Regular.fnt" } } TextWidgetClass { Name "Label_aiDoctrine" Slot FrameWidgetSlot { Anchor 0 0 0 0 PositionX 28 OffsetLeft 28 PositionY 76 OffsetTop 76 SizeX 936 OffsetRight -964 SizeY 28 OffsetBottom -104 } Color 0.9 0.92 0.94 1 Text "Hunting doctrine: Current or Coordinated" "Font Size" 20 "Min Font Size" 20 Wrap 1 FontProperties FontProperties { Font "{3E7733BAC8C831F6}UI/Fonts/RobotoCondensed/RobotoCondensed_Regular.fnt" } }
ButtonWidgetClass : "{DA43C77A0D1E59F8}UI/layouts/ERR/AdminValue.layout" { Name "aiDoctrine" Slot FrameWidgetSlot { Anchor 0 0 0 0 PositionX 28 OffsetLeft 28 PositionY 108 OffsetTop 108 SizeX 360 OffsetRight -388 SizeY 38 OffsetBottom -146 } components { SCR_EditBoxComponent "{547290FFBD5B33E9}" { m_sLabel "" } } } ButtonWidgetClass : "{75C912A1C89BE6C2}UI/layouts/WidgetLibrary/Buttons/WLib_ButtonText.layout" { Name "Choice_aiDoctrine_current" Slot FrameWidgetSlot { Anchor 0 0 0 0 PositionX 28 OffsetLeft 28 PositionY 108 OffsetTop 108 SizeX 236 OffsetRight -264 SizeY 38 OffsetBottom -146 } components { SCR_ButtonTextComponent "{5548F0143AE99095}" { m_sText "Current" } } }
ButtonWidgetClass : "{75C912A1C89BE6C2}UI/layouts/WidgetLibrary/Buttons/WLib_ButtonText.layout" { Name "Apply_aiDoctrine" Slot FrameWidgetSlot { Anchor 0 0 0 0 PositionX 400 OffsetLeft 400 PositionY 108 OffsetTop 108 SizeX 112 OffsetRight -512 SizeY 38 OffsetBottom -146 } components { SCR_ButtonTextComponent "{5548F0143AE99095}" { m_sText "Apply" } } } ButtonWidgetClass : "{75C912A1C89BE6C2}UI/layouts/WidgetLibrary/Buttons/WLib_ButtonText.layout" { Name "Choice_aiDoctrine_coordinated" Slot FrameWidgetSlot { Anchor 0 0 0 0 PositionX 276 OffsetLeft 276 PositionY 108 OffsetTop 108 SizeX 236 OffsetRight -512 SizeY 38 OffsetBottom -146 } components { SCR_ButtonTextComponent "{5548F0143AE99095}" { m_sText "Coordinated" } } }
TextWidgetClass { Name "Saved_aiDoctrine" Slot FrameWidgetSlot { Anchor 0 0 0 0 PositionX 536 OffsetLeft 536 PositionY 116 OffsetTop 116 SizeX 428 OffsetRight -964 SizeY 26 OffsetBottom -142 } Color 0.9 0.92 0.94 1 Text "Waiting for saved value" "Font Size" 16 "Min Font Size" 16 Wrap 1 FontProperties FontProperties { Font "{3E7733BAC8C831F6}UI/Fonts/RobotoCondensed/RobotoCondensed_Regular.fnt" } } TextWidgetClass { Name "Saved_aiDoctrine" Slot FrameWidgetSlot { Anchor 0 0 0 0 PositionX 536 OffsetLeft 536 PositionY 116 OffsetTop 116 SizeX 428 OffsetRight -964 SizeY 26 OffsetBottom -142 } Color 0.9 0.92 0.94 1 Text "Waiting for saved value" "Font Size" 16 "Min Font Size" 16 Wrap 1 FontProperties FontProperties { Font "{3E7733BAC8C831F6}UI/Fonts/RobotoCondensed/RobotoCondensed_Regular.fnt" } }
TextWidgetClass { Name "Help_aiDoctrine" Slot FrameWidgetSlot { Anchor 0 0 0 0 PositionX 28 OffsetLeft 28 PositionY 152 OffsetTop 152 SizeX 936 OffsetRight -964 SizeY 42 OffsetBottom -194 } Color 0.9 0.92 0.94 1 Text "Current keeps existing behaviour. Coordinated assigns squads to a shared search operation." "Font Size" 16 "Min Font Size" 16 Wrap 1 FontProperties FontProperties { Font "{3E7733BAC8C831F6}UI/Fonts/RobotoCondensed/RobotoCondensed_Regular.fnt" } } TextWidgetClass { Name "Help_aiDoctrine" Slot FrameWidgetSlot { Anchor 0 0 0 0 PositionX 28 OffsetLeft 28 PositionY 152 OffsetTop 152 SizeX 936 OffsetRight -964 SizeY 42 OffsetBottom -194 } Color 0.9 0.92 0.94 1 Text "Current keeps existing behaviour. Coordinated assigns squads to a shared search operation." "Font Size" 16 "Min Font Size" 16 Wrap 1 FontProperties FontProperties { Font "{3E7733BAC8C831F6}UI/Fonts/RobotoCondensed/RobotoCondensed_Regular.fnt" } }
TextWidgetClass { Name "Label_aiShadow" Slot FrameWidgetSlot { Anchor 0 0 0 0 PositionX 28 OffsetLeft 28 PositionY 206 OffsetTop 206 SizeX 936 OffsetRight -964 SizeY 28 OffsetBottom -234 } Color 0.9 0.92 0.94 1 Text "Proposal logging: On or Off" "Font Size" 20 "Min Font Size" 20 Wrap 1 FontProperties FontProperties { Font "{3E7733BAC8C831F6}UI/Fonts/RobotoCondensed/RobotoCondensed_Regular.fnt" } } TextWidgetClass { Name "Label_aiShadow" Slot FrameWidgetSlot { Anchor 0 0 0 0 PositionX 28 OffsetLeft 28 PositionY 206 OffsetTop 206 SizeX 936 OffsetRight -964 SizeY 28 OffsetBottom -234 } Color 0.9 0.92 0.94 1 Text "Proposal logging: On or Off" "Font Size" 20 "Min Font Size" 20 Wrap 1 FontProperties FontProperties { Font "{3E7733BAC8C831F6}UI/Fonts/RobotoCondensed/RobotoCondensed_Regular.fnt" } }
ButtonWidgetClass : "{DA43C77A0D1E59F8}UI/layouts/ERR/AdminValue.layout" { Name "aiShadow" Slot FrameWidgetSlot { Anchor 0 0 0 0 PositionX 28 OffsetLeft 28 PositionY 238 OffsetTop 238 SizeX 360 OffsetRight -388 SizeY 38 OffsetBottom -276 } components { SCR_EditBoxComponent "{547290FFBD5B33E9}" { m_sLabel "" } } } ButtonWidgetClass : "{75C912A1C89BE6C2}UI/layouts/WidgetLibrary/Buttons/WLib_ButtonText.layout" { Name "Choice_aiShadow_off" Slot FrameWidgetSlot { Anchor 0 0 0 0 PositionX 28 OffsetLeft 28 PositionY 238 OffsetTop 238 SizeX 236 OffsetRight -264 SizeY 38 OffsetBottom -276 } components { SCR_ButtonTextComponent "{5548F0143AE99095}" { m_sText "Off" } } }
ButtonWidgetClass : "{75C912A1C89BE6C2}UI/layouts/WidgetLibrary/Buttons/WLib_ButtonText.layout" { Name "Apply_aiShadow" Slot FrameWidgetSlot { Anchor 0 0 0 0 PositionX 400 OffsetLeft 400 PositionY 238 OffsetTop 238 SizeX 112 OffsetRight -512 SizeY 38 OffsetBottom -276 } components { SCR_ButtonTextComponent "{5548F0143AE99095}" { m_sText "Apply" } } } ButtonWidgetClass : "{75C912A1C89BE6C2}UI/layouts/WidgetLibrary/Buttons/WLib_ButtonText.layout" { Name "Choice_aiShadow_on" Slot FrameWidgetSlot { Anchor 0 0 0 0 PositionX 276 OffsetLeft 276 PositionY 238 OffsetTop 238 SizeX 236 OffsetRight -512 SizeY 38 OffsetBottom -276 } components { SCR_ButtonTextComponent "{5548F0143AE99095}" { m_sText "On" } } }
TextWidgetClass { Name "Saved_aiShadow" Slot FrameWidgetSlot { Anchor 0 0 0 0 PositionX 536 OffsetLeft 536 PositionY 246 OffsetTop 246 SizeX 428 OffsetRight -964 SizeY 26 OffsetBottom -272 } Color 0.9 0.92 0.94 1 Text "Waiting for saved value" "Font Size" 16 "Min Font Size" 16 Wrap 1 FontProperties FontProperties { Font "{3E7733BAC8C831F6}UI/Fonts/RobotoCondensed/RobotoCondensed_Regular.fnt" } } TextWidgetClass { Name "Saved_aiShadow" Slot FrameWidgetSlot { Anchor 0 0 0 0 PositionX 536 OffsetLeft 536 PositionY 246 OffsetTop 246 SizeX 428 OffsetRight -964 SizeY 26 OffsetBottom -272 } Color 0.9 0.92 0.94 1 Text "Waiting for saved value" "Font Size" 16 "Min Font Size" 16 Wrap 1 FontProperties FontProperties { Font "{3E7733BAC8C831F6}UI/Fonts/RobotoCondensed/RobotoCondensed_Regular.fnt" } }
TextWidgetClass { Name "Help_aiShadow" Slot FrameWidgetSlot { Anchor 0 0 0 0 PositionX 28 OffsetLeft 28 PositionY 282 OffsetTop 282 SizeX 936 OffsetRight -964 SizeY 42 OffsetBottom -324 } Color 0.9 0.92 0.94 1 Text "On logs coordinated proposals while Current keeps control. No coordinated orders are issued." "Font Size" 16 "Min Font Size" 16 Wrap 1 FontProperties FontProperties { Font "{3E7733BAC8C831F6}UI/Fonts/RobotoCondensed/RobotoCondensed_Regular.fnt" } } TextWidgetClass { Name "Help_aiShadow" Slot FrameWidgetSlot { Anchor 0 0 0 0 PositionX 28 OffsetLeft 28 PositionY 282 OffsetTop 282 SizeX 936 OffsetRight -964 SizeY 42 OffsetBottom -324 } Color 0.9 0.92 0.94 1 Text "On logs coordinated proposals while Current keeps control. No coordinated orders are issued." "Font Size" 16 "Min Font Size" 16 Wrap 1 FontProperties FontProperties { Font "{3E7733BAC8C831F6}UI/Fonts/RobotoCondensed/RobotoCondensed_Regular.fnt" } }
TextWidgetClass { Name "AIChangesHelp" Slot FrameWidgetSlot { Anchor 0 0 0 0 PositionX 28 OffsetLeft 28 PositionY 350 OffsetTop 350 SizeX 936 OffsetRight -964 SizeY 72 OffsetBottom -422 } Color 0.9 0.92 0.94 1 Text "Current is the default. Proposal logging is for comparing plans before enabling coordinated orders. Neither setting changes the running round." "Font Size" 18 "Min Font Size" 18 Wrap 1 FontProperties FontProperties { Font "{3E7733BAC8C831F6}UI/Fonts/RobotoCondensed/RobotoCondensed_Regular.fnt" } } TextWidgetClass { Name "AIChangesHelp" Slot FrameWidgetSlot { Anchor 0 0 0 0 PositionX 28 OffsetLeft 28 PositionY 350 OffsetTop 350 SizeX 936 OffsetRight -964 SizeY 72 OffsetBottom -422 } Color 0.9 0.92 0.94 1 Text "Current is the default. Proposal logging is for comparing plans before enabling coordinated orders. Neither setting changes the running round." "Font Size" 18 "Min Font Size" 18 Wrap 1 FontProperties FontProperties { Font "{3E7733BAC8C831F6}UI/Fonts/RobotoCondensed/RobotoCondensed_Regular.fnt" } }
+28 -2
View File
@@ -12,7 +12,7 @@ navigation = source.with_name('ERR_AdminMenuPages.c')
layout = BASE / 'addons/core/UI/layouts/ERR/AdminMenu.layout' layout = BASE / 'addons/core/UI/layouts/ERR/AdminMenu.layout'
keys = re.findall(r'"([A-Za-z]+)"', body(fields, 'static array<string> Keys(')) keys = re.findall(r'"([A-Za-z]+)"', body(fields, 'static array<string> Keys('))
settings = re.findall(r'"([A-Za-z]+)"', body(BASE / 'addons/core/Scripts/Game/ERR/00_Core/ERR_Settings.c', 'static array<string> Keys(')) settings = re.findall(r'"([A-Za-z]+)"', body(BASE / 'addons/core/Scripts/Game/ERR/00_Core/ERR_Settings.c', 'static array<string> Keys('))
assert len(keys) == len(set(keys)) and set(settings) - set(keys) == {"telemetryEnabled", "automaticConvoyEnabled", "keepWeaponOnUnconscious", "selfEpinephrine", "planeReconEnabled", "restartOnEmpty", "showAllSites"} assert len(keys) == len(set(keys)) and set(settings) - set(keys) == {"crashLootMode", "telemetryEnabled", "automaticConvoyEnabled", "keepWeaponOnUnconscious", "selfEpinephrine", "planeReconEnabled", "restartOnEmpty", "showAllSites"}
assert set(keys) <= set(settings) # Every menu field must have a server setting. assert set(keys) <= set(settings) # Every menu field must have a server setting.
# Native layouts place child widget declarations inside an anonymous Children # Native layouts place child widget declarations inside an anonymous Children
# block. A missing brace can preserve most widget names yet prevent menu load. # block. A missing brace can preserve most widget names yet prevent menu load.
@@ -48,12 +48,21 @@ else:
names = re.findall(r'\bName "([^"]+)"', layout.read_text()) names = re.findall(r'\bName "([^"]+)"', layout.read_text())
assert 'RandomDay_startTimeMinutes' in names assert 'RandomDay_startTimeMinutes' in names
assert 'PlaneOn' in names and 'PlaneOff' in names assert 'PlaneOn' in names and 'PlaneOff' in names
assert 'CrashLootRandom' in names and 'CrashLootCustom' in names
assert 'crashLootMode' not in names and 'Apply_crashLootMode' not in names
assert all(n in names for n in ('OpenPlane','Sidebar_HQ','PlanePage','Selected_OpenPlane')) assert all(n in names for n in ('OpenPlane','Sidebar_HQ','PlanePage','Selected_OpenPlane'))
for signature in ('static array<string> Pages(', 'static array<string> Navigation('): for signature in ('static array<string> Pages(', 'static array<string> Navigation('):
for n in re.findall(r'"([A-Za-z]+)"', body(navigation, signature)): assert n in names for n in re.findall(r'"([A-Za-z]+)"', body(navigation, signature)): assert n in names
assert 'Apply_planeReconEnabled' not in names # Saved-state toggle pair, not a numeric edit. assert 'Apply_planeReconEnabled' not in names # Saved-state toggle pair, not a numeric edit.
assert len(names) == len(set(names)), 'Menu widget names must be unique' assert len(names) == len(set(names)), 'Menu widget names must be unique'
choice_sets = {key: re.findall(r'"([^"]+)"', values) for key, values in re.findall(r'if \(key == "([^"]+)"\) return \{([^}]+)\}', body(fields, 'static array<string> Choices('))}
assert set(choice_sets) == {'startMode', 'aiDoctrine', 'aiShadow', 'objectGuardEvery', 'objectGuardHQMode', 'weatherProfile'}
for key in keys: for key in keys:
if key in choice_sets:
assert key not in names and 'Apply_' + key not in names
assert all('Choice_' + key + '_' + choice in names for choice in choice_sets[key])
assert all(prefix + key in names for prefix in ('Saved_', 'Help_'))
continue
assert all(name in names for name in (key, 'Apply_' + key, 'Saved_' + key, 'Help_' + key)) assert all(name in names for name in (key, 'Apply_' + key, 'Saved_' + key, 'Help_' + key))
if key not in ('shoreBoatCount','shoreBoatChancePercent','shoreBoatCrossingChancePercent','crashLootMode','crashSiteCount','crashHelicopterChancePercent','crashRifleCount','crashMagazineCount','crashAntiAirChancePercent','crashRocketChancePercent','radioIntelSiteCount','droneReconCount','droneCooldownSeconds','sarkaAngerPerCar','emptyRestartHours','aiDoctrine','aiShadow','motorbikeCount','planeAltitudeMetres','planeReplacementSeconds','planeSectorSeconds','fieldCampCount','fieldHospitalCount','startMode','garageVehicleCount','garageChancePercent','garageRadiusMetres','garageSpawnIntervalSeconds','civilianTrafficCount','roadblockCount','largeRoadblockCount','mainRoadWidthMetres','hunterSpawnDistanceMetres','objectGuardCount','objectGuardEvery','objectGuardHQMode','startWeaponCount','startMagazineCount'): assert ('Default_' if key == 'viewDistanceMetres' else 'Random_') + key in names if key not in ('shoreBoatCount','shoreBoatChancePercent','shoreBoatCrossingChancePercent','crashLootMode','crashSiteCount','crashHelicopterChancePercent','crashRifleCount','crashMagazineCount','crashAntiAirChancePercent','crashRocketChancePercent','radioIntelSiteCount','droneReconCount','droneCooldownSeconds','sarkaAngerPerCar','emptyRestartHours','aiDoctrine','aiShadow','motorbikeCount','planeAltitudeMetres','planeReplacementSeconds','planeSectorSeconds','fieldCampCount','fieldHospitalCount','startMode','garageVehicleCount','garageChancePercent','garageRadiusMetres','garageSpawnIntervalSeconds','civilianTrafficCount','roadblockCount','largeRoadblockCount','mainRoadWidthMetres','hunterSpawnDistanceMetres','objectGuardCount','objectGuardEvery','objectGuardHQMode','startWeaponCount','startMagazineCount'): assert ('Default_' if key == 'viewDistanceMetres' else 'Random_') + key in names
else: assert 'Random_startMode' not in names else: assert 'Random_startMode' not in names
@@ -66,14 +75,19 @@ menu_format = body(ROOT/'addons/core/Scripts/Game/ERR/00_Core/ERR_JournalText.c'
follow = body(fields, 'static bool FollowJournal(') follow = body(fields, 'static bool FollowJournal(')
command = body(fields, 'static string Command(') command = body(fields, 'static string Command(')
available = body(fields, 'static bool Available(').replace('Keys().Contains(key)', 'Known(key)') available = body(fields, 'static bool Available(').replace('Keys().Contains(key)', 'Known(key)')
choices = body(fields, 'static array<string> Choices(').replace('array<string>', 'Array<string>')
choice_key = body(fields, 'static string ChoiceKey(').replace('array<string>', 'Array<string>')
known = ' || '.join('key == "' + key + '"' for key in keys) known = ' || '.join('key == "' + key + '"' for key in keys)
run(r''' run(r'''
#include <cassert> #include <cassert>
#include <string> #include <string>
#include <vector> #include <vector>
#include <algorithm>
struct string : std::string { struct string : std::string {
using std::string::string; using std::string::string;
string(std::string s):std::string(s){} string(std::string s):std::string(s){}
bool StartsWith(string prefix){return rfind(prefix,0)==0;}
template<class T> void Split(string separator,T& result,bool skipEmpty){assert(!skipEmpty);size_t start=0,end;while((end=find(separator,start))!=npos){result.push_back(substr(start,end-start));start=end+separator.size();}result.push_back(substr(start));}
bool IsEmpty(){return empty();} bool IsEmpty(){return empty();}
int Length(){return size();} int Length(){return size();}
int IndexOf(string s){auto i=find(s);return i==npos?-1:int(i);} int IndexOf(string s){auto i=find(s);return i==npos?-1:int(i);}
@@ -81,13 +95,25 @@ struct string : std::string {
void Replace(string a,string b){size_t i=0;while((i=find(a,i))!=npos){replace(i,a.size(),b);i+=b.size();}} void Replace(string a,string b){size_t i=0;while((i=find(a,i))!=npos){replace(i,a.size(),b);i+=b.size();}}
string Trim(){auto a=find_first_not_of(" \t\r\n");if(a==npos)return "";auto b=find_last_not_of(" \t\r\n");return substr(a,b-a+1);} string Trim(){auto a=find_first_not_of(" \t\r\n");if(a==npos)return "";auto b=find_last_not_of(" \t\r\n");return substr(a,b-a+1);}
}; };
template<class T> struct Array:std::vector<T>{using std::vector<T>::vector;int Count(){return this->size();}bool Contains(T v){return std::find(this->begin(),this->end(),v)!=this->end();}};
struct ERR_JournalText { struct ERR_JournalText {
''' + menu_format + r''' ''' + menu_format + r'''
}; };
struct Fields { struct Fields {
static bool Known(string key) {return ''' + known + ';}\n' + command + '\n' + available + '\n' + follow + '\n' + journal + r''' static bool Known(string key) {return ''' + known + ';}\n' + choices + '\n' + choice_key + '\n' + command + '\n' + available + '\n' + follow + '\n' + journal + r'''
}; };
int main() { int main() {
assert(Fields::ChoiceKey("Choice_startMode_prison")=="startMode");
assert(Fields::ChoiceKey("Choice_startMode_crash")=="startMode");
assert(Fields::ChoiceKey("Choice_aiDoctrine_coordinated")=="aiDoctrine");
assert(Fields::ChoiceKey("Choice_aiShadow_off")=="aiShadow");
for(string choice:{"authored","clear","overcast","rain","random"})
assert(Fields::ChoiceKey(string("Choice_weatherProfile_")+choice)=="weatherProfile");
assert(Fields::ChoiceKey("Choice_objectGuardEvery_4")=="objectGuardEvery");
assert(Fields::ChoiceKey("Choice_objectGuardHQMode_2")=="objectGuardHQMode");
for(string invalid:{"Apply_weatherProfile","Choice_weatherProfile_4","Choice_objectGuardEvery_0","Choice_objectGuardHQMode_3","Choice_startMode_random","Choice_aiShadow_on_extra","Choice_"}) assert(Fields::ChoiceKey(invalid).empty());
assert(Fields::Choices("crashRifleCount").empty());
assert(Fields::Choices("startDateCode").empty());
string raw="#24 t=7s M3 observe guard"; string raw="#24 t=7s M3 observe guard";
assert(Fields::JournalText(raw)=="No. 24 t=7s M3 observe guard"); assert(Fields::JournalText(raw)=="No. 24 t=7s M3 observe guard");
assert(raw=="#24 t=7s M3 observe guard"); assert(raw=="#24 t=7s M3 observe guard");
+4 -4
View File
@@ -2,13 +2,13 @@ FrameWidgetClass { "Is Visible" {{VISIBLE_AIPage}} Name "AIPage" Slot FrameWidge
TextWidgetClass { Name "AIHelp" Slot FrameWidgetSlot { Anchor 0 0 0 0 PositionX 28 OffsetLeft 28 PositionY 6 OffsetTop 6 SizeX 720 OffsetRight -748 SizeY 42 OffsetBottom -48 } Color {{COLOR_TEXT}} Text "AI doctrine - changes apply next round." "Font Size" {{SIZE_LABEL}} "Min Font Size" {{SIZE_LABEL}} Wrap 1 FontProperties FontProperties { Font "{{FONT}}" } } TextWidgetClass { Name "AIHelp" Slot FrameWidgetSlot { Anchor 0 0 0 0 PositionX 28 OffsetLeft 28 PositionY 6 OffsetTop 6 SizeX 720 OffsetRight -748 SizeY 42 OffsetBottom -48 } Color {{COLOR_TEXT}} Text "AI doctrine - changes apply next round." "Font Size" {{SIZE_LABEL}} "Min Font Size" {{SIZE_LABEL}} Wrap 1 FontProperties FontProperties { Font "{{FONT}}" } }
TextWidgetClass { Name "Label_aiDoctrine" Slot FrameWidgetSlot { Anchor 0 0 0 0 PositionX 28 OffsetLeft 28 PositionY 76 OffsetTop 76 SizeX 936 OffsetRight -964 SizeY 28 OffsetBottom -104 } Color {{COLOR_TEXT}} Text "Hunting doctrine: Current or Coordinated" "Font Size" {{SIZE_LABEL}} "Min Font Size" {{SIZE_LABEL}} Wrap 1 FontProperties FontProperties { Font "{{FONT}}" } } TextWidgetClass { Name "Label_aiDoctrine" Slot FrameWidgetSlot { Anchor 0 0 0 0 PositionX 28 OffsetLeft 28 PositionY 76 OffsetTop 76 SizeX 936 OffsetRight -964 SizeY 28 OffsetBottom -104 } Color {{COLOR_TEXT}} Text "Hunting doctrine: Current or Coordinated" "Font Size" {{SIZE_LABEL}} "Min Font Size" {{SIZE_LABEL}} Wrap 1 FontProperties FontProperties { Font "{{FONT}}" } }
ButtonWidgetClass : "{DA43C77A0D1E59F8}UI/layouts/ERR/AdminValue.layout" { Name "aiDoctrine" Slot FrameWidgetSlot { Anchor 0 0 0 0 PositionX 28 OffsetLeft 28 PositionY 108 OffsetTop 108 SizeX 360 OffsetRight -388 SizeY 38 OffsetBottom -146 } components { SCR_EditBoxComponent "{547290FFBD5B33E9}" { m_sLabel "" } } } ButtonWidgetClass : "{75C912A1C89BE6C2}UI/layouts/WidgetLibrary/Buttons/WLib_ButtonText.layout" { Name "Choice_aiDoctrine_current" Slot FrameWidgetSlot { Anchor 0 0 0 0 PositionX 28 OffsetLeft 28 PositionY 108 OffsetTop 108 SizeX 236 OffsetRight -264 SizeY 38 OffsetBottom -146 } components { SCR_ButtonTextComponent "{5548F0143AE99095}" { m_sText "Current" } } }
ButtonWidgetClass : "{75C912A1C89BE6C2}UI/layouts/WidgetLibrary/Buttons/WLib_ButtonText.layout" { Name "Apply_aiDoctrine" Slot FrameWidgetSlot { Anchor 0 0 0 0 PositionX 400 OffsetLeft 400 PositionY 108 OffsetTop 108 SizeX 112 OffsetRight -512 SizeY 38 OffsetBottom -146 } components { SCR_ButtonTextComponent "{5548F0143AE99095}" { m_sText "Apply" } } } ButtonWidgetClass : "{75C912A1C89BE6C2}UI/layouts/WidgetLibrary/Buttons/WLib_ButtonText.layout" { Name "Choice_aiDoctrine_coordinated" Slot FrameWidgetSlot { Anchor 0 0 0 0 PositionX 276 OffsetLeft 276 PositionY 108 OffsetTop 108 SizeX 236 OffsetRight -512 SizeY 38 OffsetBottom -146 } components { SCR_ButtonTextComponent "{5548F0143AE99095}" { m_sText "Coordinated" } } }
TextWidgetClass { Name "Saved_aiDoctrine" Slot FrameWidgetSlot { Anchor 0 0 0 0 PositionX 536 OffsetLeft 536 PositionY 116 OffsetTop 116 SizeX 428 OffsetRight -964 SizeY 26 OffsetBottom -142 } Color {{COLOR_TEXT}} Text "Waiting for saved value" "Font Size" {{SIZE_CAPTION}} "Min Font Size" {{SIZE_CAPTION}} Wrap 1 FontProperties FontProperties { Font "{{FONT}}" } } TextWidgetClass { Name "Saved_aiDoctrine" Slot FrameWidgetSlot { Anchor 0 0 0 0 PositionX 536 OffsetLeft 536 PositionY 116 OffsetTop 116 SizeX 428 OffsetRight -964 SizeY 26 OffsetBottom -142 } Color {{COLOR_TEXT}} Text "Waiting for saved value" "Font Size" {{SIZE_CAPTION}} "Min Font Size" {{SIZE_CAPTION}} Wrap 1 FontProperties FontProperties { Font "{{FONT}}" } }
TextWidgetClass { Name "Help_aiDoctrine" Slot FrameWidgetSlot { Anchor 0 0 0 0 PositionX 28 OffsetLeft 28 PositionY 152 OffsetTop 152 SizeX 936 OffsetRight -964 SizeY 42 OffsetBottom -194 } Color {{COLOR_TEXT}} Text "Current keeps existing behaviour. Coordinated assigns squads to a shared search operation." "Font Size" {{SIZE_CAPTION}} "Min Font Size" {{SIZE_CAPTION}} Wrap 1 FontProperties FontProperties { Font "{{FONT}}" } } TextWidgetClass { Name "Help_aiDoctrine" Slot FrameWidgetSlot { Anchor 0 0 0 0 PositionX 28 OffsetLeft 28 PositionY 152 OffsetTop 152 SizeX 936 OffsetRight -964 SizeY 42 OffsetBottom -194 } Color {{COLOR_TEXT}} Text "Current keeps existing behaviour. Coordinated assigns squads to a shared search operation." "Font Size" {{SIZE_CAPTION}} "Min Font Size" {{SIZE_CAPTION}} Wrap 1 FontProperties FontProperties { Font "{{FONT}}" } }
TextWidgetClass { Name "Label_aiShadow" Slot FrameWidgetSlot { Anchor 0 0 0 0 PositionX 28 OffsetLeft 28 PositionY 206 OffsetTop 206 SizeX 936 OffsetRight -964 SizeY 28 OffsetBottom -234 } Color {{COLOR_TEXT}} Text "Proposal logging: On or Off" "Font Size" {{SIZE_LABEL}} "Min Font Size" {{SIZE_LABEL}} Wrap 1 FontProperties FontProperties { Font "{{FONT}}" } } TextWidgetClass { Name "Label_aiShadow" Slot FrameWidgetSlot { Anchor 0 0 0 0 PositionX 28 OffsetLeft 28 PositionY 206 OffsetTop 206 SizeX 936 OffsetRight -964 SizeY 28 OffsetBottom -234 } Color {{COLOR_TEXT}} Text "Proposal logging: On or Off" "Font Size" {{SIZE_LABEL}} "Min Font Size" {{SIZE_LABEL}} Wrap 1 FontProperties FontProperties { Font "{{FONT}}" } }
ButtonWidgetClass : "{DA43C77A0D1E59F8}UI/layouts/ERR/AdminValue.layout" { Name "aiShadow" Slot FrameWidgetSlot { Anchor 0 0 0 0 PositionX 28 OffsetLeft 28 PositionY 238 OffsetTop 238 SizeX 360 OffsetRight -388 SizeY 38 OffsetBottom -276 } components { SCR_EditBoxComponent "{547290FFBD5B33E9}" { m_sLabel "" } } } ButtonWidgetClass : "{75C912A1C89BE6C2}UI/layouts/WidgetLibrary/Buttons/WLib_ButtonText.layout" { Name "Choice_aiShadow_off" Slot FrameWidgetSlot { Anchor 0 0 0 0 PositionX 28 OffsetLeft 28 PositionY 238 OffsetTop 238 SizeX 236 OffsetRight -264 SizeY 38 OffsetBottom -276 } components { SCR_ButtonTextComponent "{5548F0143AE99095}" { m_sText "Off" } } }
ButtonWidgetClass : "{75C912A1C89BE6C2}UI/layouts/WidgetLibrary/Buttons/WLib_ButtonText.layout" { Name "Apply_aiShadow" Slot FrameWidgetSlot { Anchor 0 0 0 0 PositionX 400 OffsetLeft 400 PositionY 238 OffsetTop 238 SizeX 112 OffsetRight -512 SizeY 38 OffsetBottom -276 } components { SCR_ButtonTextComponent "{5548F0143AE99095}" { m_sText "Apply" } } } ButtonWidgetClass : "{75C912A1C89BE6C2}UI/layouts/WidgetLibrary/Buttons/WLib_ButtonText.layout" { Name "Choice_aiShadow_on" Slot FrameWidgetSlot { Anchor 0 0 0 0 PositionX 276 OffsetLeft 276 PositionY 238 OffsetTop 238 SizeX 236 OffsetRight -512 SizeY 38 OffsetBottom -276 } components { SCR_ButtonTextComponent "{5548F0143AE99095}" { m_sText "On" } } }
TextWidgetClass { Name "Saved_aiShadow" Slot FrameWidgetSlot { Anchor 0 0 0 0 PositionX 536 OffsetLeft 536 PositionY 246 OffsetTop 246 SizeX 428 OffsetRight -964 SizeY 26 OffsetBottom -272 } Color {{COLOR_TEXT}} Text "Waiting for saved value" "Font Size" {{SIZE_CAPTION}} "Min Font Size" {{SIZE_CAPTION}} Wrap 1 FontProperties FontProperties { Font "{{FONT}}" } } TextWidgetClass { Name "Saved_aiShadow" Slot FrameWidgetSlot { Anchor 0 0 0 0 PositionX 536 OffsetLeft 536 PositionY 246 OffsetTop 246 SizeX 428 OffsetRight -964 SizeY 26 OffsetBottom -272 } Color {{COLOR_TEXT}} Text "Waiting for saved value" "Font Size" {{SIZE_CAPTION}} "Min Font Size" {{SIZE_CAPTION}} Wrap 1 FontProperties FontProperties { Font "{{FONT}}" } }
TextWidgetClass { Name "Help_aiShadow" Slot FrameWidgetSlot { Anchor 0 0 0 0 PositionX 28 OffsetLeft 28 PositionY 282 OffsetTop 282 SizeX 936 OffsetRight -964 SizeY 42 OffsetBottom -324 } Color {{COLOR_TEXT}} Text "On logs coordinated proposals while Current keeps control. No coordinated orders are issued." "Font Size" {{SIZE_CAPTION}} "Min Font Size" {{SIZE_CAPTION}} Wrap 1 FontProperties FontProperties { Font "{{FONT}}" } } TextWidgetClass { Name "Help_aiShadow" Slot FrameWidgetSlot { Anchor 0 0 0 0 PositionX 28 OffsetLeft 28 PositionY 282 OffsetTop 282 SizeX 936 OffsetRight -964 SizeY 42 OffsetBottom -324 } Color {{COLOR_TEXT}} Text "On logs coordinated proposals while Current keeps control. No coordinated orders are issued." "Font Size" {{SIZE_CAPTION}} "Min Font Size" {{SIZE_CAPTION}} Wrap 1 FontProperties FontProperties { Font "{{FONT}}" } }
TextWidgetClass { Name "AIChangesHelp" Slot FrameWidgetSlot { Anchor 0 0 0 0 PositionX 28 OffsetLeft 28 PositionY 350 OffsetTop 350 SizeX 936 OffsetRight -964 SizeY 72 OffsetBottom -422 } Color {{COLOR_TEXT}} Text "Current is the default. Proposal logging is for comparing plans before enabling coordinated orders. Neither setting changes the running round." "Font Size" {{SIZE_BODY}} "Min Font Size" {{SIZE_BODY}} Wrap 1 FontProperties FontProperties { Font "{{FONT}}" } } TextWidgetClass { Name "AIChangesHelp" Slot FrameWidgetSlot { Anchor 0 0 0 0 PositionX 28 OffsetLeft 28 PositionY 350 OffsetTop 350 SizeX 936 OffsetRight -964 SizeY 72 OffsetBottom -422 } Color {{COLOR_TEXT}} Text "Current is the default. Proposal logging is for comparing plans before enabling coordinated orders. Neither setting changes the running round." "Font Size" {{SIZE_BODY}} "Min Font Size" {{SIZE_BODY}} Wrap 1 FontProperties FontProperties { Font "{{FONT}}" } }
+3 -3
View File
@@ -1,9 +1,9 @@
FrameWidgetClass { "Is Visible" {{VISIBLE_CrashSitesPage}} Name "CrashSitesPage" Slot FrameWidgetSlot { Anchor 0 0 0 0 PositionX 220 OffsetLeft 220 PositionY 160 OffsetTop 160 SizeX 1000 OffsetRight -1220 SizeY 532 OffsetBottom -692 } { FrameWidgetClass { "Is Visible" {{VISIBLE_CrashSitesPage}} Name "CrashSitesPage" Slot FrameWidgetSlot { Anchor 0 0 0 0 PositionX 220 OffsetLeft 220 PositionY 160 OffsetTop 160 SizeX 1000 OffsetRight -1220 SizeY 532 OffsetBottom -692 } {
TextWidgetClass { Name "CrashHeading" Slot FrameWidgetSlot { Anchor 0 0 0 0 PositionX 28 OffsetLeft 28 PositionY 4 OffsetTop 4 SizeX 936 OffsetRight -964 SizeY 30 OffsetBottom -34 } Color {{COLOR_TEXT}} Text "Crash sites - next round" "Font Size" {{SIZE_HEADING}} "Min Font Size" {{SIZE_HEADING}} Wrap 1 FontProperties FontProperties { Font "{{FONT}}" } } TextWidgetClass { Name "CrashHeading" Slot FrameWidgetSlot { Anchor 0 0 0 0 PositionX 28 OffsetLeft 28 PositionY 4 OffsetTop 4 SizeX 936 OffsetRight -964 SizeY 30 OffsetBottom -34 } Color {{COLOR_TEXT}} Text "Crash sites - next round" "Font Size" {{SIZE_HEADING}} "Min Font Size" {{SIZE_HEADING}} Wrap 1 FontProperties FontProperties { Font "{{FONT}}" } }
TextWidgetClass { Name "CrashHelp" Slot FrameWidgetSlot { Anchor 0 0 0 0 PositionX 28 OffsetLeft 28 PositionY 40 OffsetTop 40 SizeX 936 OffsetRight -964 SizeY 40 OffsetBottom -80 } Color {{COLOR_TEXT}} Text "Default loot is random for each crate: poor pistol supplies, a useful rifle, or a rich haul of scoped guns and launchers. No refills." "Font Size" {{SIZE_HELP}} "Min Font Size" {{SIZE_HELP}} Wrap 1 FontProperties FontProperties { Font "{{FONT}}" } } TextWidgetClass { Name "CrashHelp" Slot FrameWidgetSlot { Anchor 0 0 0 0 PositionX 28 OffsetLeft 28 PositionY 40 OffsetTop 40 SizeX 936 OffsetRight -964 SizeY 40 OffsetBottom -80 } Color {{COLOR_TEXT}} Text "Default loot is random for each crate: poor pistol supplies, a useful rifle, or a rich haul of scoped guns and launchers. No refills." "Font Size" {{SIZE_HELP}} "Min Font Size" {{SIZE_HELP}} Wrap 1 FontProperties FontProperties { Font "{{FONT}}" } }
TextWidgetClass { Name "Label_crashLootMode" Slot FrameWidgetSlot { Anchor 0 0 0 0 PositionX 28 OffsetLeft 28 PositionY 82 OffsetTop 82 SizeX 456 OffsetRight -484 SizeY 26 OffsetBottom -108 } Color {{COLOR_TEXT}} Text "Loot mode: Random or Custom" "Font Size" {{SIZE_HELP}} "Min Font Size" {{SIZE_HELP}} Wrap 1 FontProperties FontProperties { Font "{{FONT}}" } } TextWidgetClass { Name "Label_crashLootMode" Slot FrameWidgetSlot { Anchor 0 0 0 0 PositionX 28 OffsetLeft 28 PositionY 82 OffsetTop 82 SizeX 456 OffsetRight -484 SizeY 26 OffsetBottom -108 } Color {{COLOR_TEXT}} Text "Crash-site loot" "Font Size" {{SIZE_HELP}} "Min Font Size" {{SIZE_HELP}} Wrap 1 FontProperties FontProperties { Font "{{FONT}}" } }
ButtonWidgetClass : "{DA43C77A0D1E59F8}UI/layouts/ERR/AdminValue.layout" { Name "crashLootMode" Slot FrameWidgetSlot { Anchor 0 0 0 0 PositionX 508 OffsetLeft 508 PositionY 82 OffsetTop 82 SizeX 180 OffsetRight -688 SizeY 32 OffsetBottom -114 } components { SCR_EditBoxComponent "{547290FFBD5B33E9}" { m_sLabel "" } } } ButtonWidgetClass : "{75C912A1C89BE6C2}UI/layouts/WidgetLibrary/Buttons/WLib_ButtonText.layout" { Name "CrashLootRandom" Slot FrameWidgetSlot { Anchor 0 0 0 0 PositionX 508 OffsetLeft 508 PositionY 82 OffsetTop 82 SizeX 218 OffsetRight -726 SizeY 32 OffsetBottom -114 } components { SCR_ButtonTextComponent "{5548F0143AE99095}" { m_sText "Random" } } }
ButtonWidgetClass : "{75C912A1C89BE6C2}UI/layouts/WidgetLibrary/Buttons/WLib_ButtonText.layout" { Name "Apply_crashLootMode" Slot FrameWidgetSlot { Anchor 0 0 0 0 PositionX 700 OffsetLeft 700 PositionY 82 OffsetTop 82 SizeX 100 OffsetRight -800 SizeY 32 OffsetBottom -114 } components { SCR_ButtonTextComponent "{5548F0143AE99095}" { m_sText "Apply" } } } ButtonWidgetClass : "{75C912A1C89BE6C2}UI/layouts/WidgetLibrary/Buttons/WLib_ButtonText.layout" { Name "CrashLootCustom" Slot FrameWidgetSlot { Anchor 0 0 0 0 PositionX 746 OffsetLeft 746 PositionY 82 OffsetTop 82 SizeX 218 OffsetRight -964 SizeY 32 OffsetBottom -114 } components { SCR_ButtonTextComponent "{5548F0143AE99095}" { m_sText "Custom" } } }
TextWidgetClass { Name "Saved_crashLootMode" Slot FrameWidgetSlot { Anchor 0 0 0 0 PositionX 508 OffsetLeft 508 PositionY 118 OffsetTop 118 SizeX 456 OffsetRight -964 SizeY 20 OffsetBottom -138 } Color {{COLOR_TEXT}} Text "Waiting for server" "Font Size" {{SIZE_CAPTION_SMALL}} "Min Font Size" {{SIZE_CAPTION_SMALL}} Wrap 1 FontProperties FontProperties { Font "{{FONT}}" } } TextWidgetClass { Name "Saved_crashLootMode" Slot FrameWidgetSlot { Anchor 0 0 0 0 PositionX 508 OffsetLeft 508 PositionY 118 OffsetTop 118 SizeX 456 OffsetRight -964 SizeY 20 OffsetBottom -138 } Color {{COLOR_TEXT}} Text "Waiting for server" "Font Size" {{SIZE_CAPTION_SMALL}} "Min Font Size" {{SIZE_CAPTION_SMALL}} Wrap 1 FontProperties FontProperties { Font "{{FONT}}" } }
TextWidgetClass { Name "Help_crashLootMode" Slot FrameWidgetSlot { Anchor 0 0 0 0 PositionX 28 OffsetLeft 28 PositionY 112 OffsetTop 112 SizeX 456 OffsetRight -484 SizeY 40 OffsetBottom -152 } Color {{COLOR_TEXT}} Text "Random rolls each crate independently. Custom uses the four loot controls below." "Font Size" {{SIZE_CAPTION_SMALL}} "Min Font Size" {{SIZE_CAPTION_SMALL}} Wrap 1 FontProperties FontProperties { Font "{{FONT}}" } } TextWidgetClass { Name "Help_crashLootMode" Slot FrameWidgetSlot { Anchor 0 0 0 0 PositionX 28 OffsetLeft 28 PositionY 112 OffsetTop 112 SizeX 456 OffsetRight -484 SizeY 40 OffsetBottom -152 } Color {{COLOR_TEXT}} Text "Random rolls each crate independently. Custom uses the four loot controls below." "Font Size" {{SIZE_CAPTION_SMALL}} "Min Font Size" {{SIZE_CAPTION_SMALL}} Wrap 1 FontProperties FontProperties { Font "{{FONT}}" } }
TextWidgetClass { Name "Label_crashSiteCount" Slot FrameWidgetSlot { Anchor 0 0 0 0 PositionX 28 OffsetLeft 28 PositionY 160 OffsetTop 160 SizeX 456 OffsetRight -484 SizeY 22 OffsetBottom -182 } Color {{COLOR_TEXT}} Text "Crash sites (0-12)" "Font Size" {{SIZE_HELP}} "Min Font Size" {{SIZE_HELP}} Wrap 1 FontProperties FontProperties { Font "{{FONT}}" } } TextWidgetClass { Name "Label_crashSiteCount" Slot FrameWidgetSlot { Anchor 0 0 0 0 PositionX 28 OffsetLeft 28 PositionY 160 OffsetTop 160 SizeX 456 OffsetRight -484 SizeY 22 OffsetBottom -182 } Color {{COLOR_TEXT}} Text "Crash sites (0-12)" "Font Size" {{SIZE_HELP}} "Min Font Size" {{SIZE_HELP}} Wrap 1 FontProperties FontProperties { Font "{{FONT}}" } }
+10 -14
View File
@@ -7,21 +7,17 @@ ButtonWidgetClass : "{DA43C77A0D1E59F8}UI/layouts/ERR/AdminValue.layout" { Name
ButtonWidgetClass : "{75C912A1C89BE6C2}UI/layouts/WidgetLibrary/Buttons/WLib_ButtonText.layout" { Name "Apply_objectGuardCount" Slot FrameWidgetSlot { Anchor 0 0 0 0 PositionX 170 OffsetLeft 170 PositionY 130 OffsetTop 130 SizeX 110 OffsetRight -280 SizeY 38 OffsetBottom -168 } components { SCR_ButtonTextComponent "{5548F0143AE99095}" { m_sText "Apply" } } } ButtonWidgetClass : "{75C912A1C89BE6C2}UI/layouts/WidgetLibrary/Buttons/WLib_ButtonText.layout" { Name "Apply_objectGuardCount" Slot FrameWidgetSlot { Anchor 0 0 0 0 PositionX 170 OffsetLeft 170 PositionY 130 OffsetTop 130 SizeX 110 OffsetRight -280 SizeY 38 OffsetBottom -168 } components { SCR_ButtonTextComponent "{5548F0143AE99095}" { m_sText "Apply" } } }
TextWidgetClass { Name "Saved_objectGuardCount" Slot FrameWidgetSlot { Anchor 0 0 0 0 PositionX 28 OffsetLeft 28 PositionY 171 OffsetTop 171 SizeX 936 OffsetRight -964 SizeY 22 OffsetBottom -193 } Color {{COLOR_TEXT}} Text "Waiting for saved value" "Font Size" {{SIZE_CAPTION}} "Min Font Size" {{SIZE_CAPTION}} Wrap 1 FontProperties FontProperties { Font "{{FONT}}" } } TextWidgetClass { Name "Saved_objectGuardCount" Slot FrameWidgetSlot { Anchor 0 0 0 0 PositionX 28 OffsetLeft 28 PositionY 171 OffsetTop 171 SizeX 936 OffsetRight -964 SizeY 22 OffsetBottom -193 } Color {{COLOR_TEXT}} Text "Waiting for saved value" "Font Size" {{SIZE_CAPTION}} "Min Font Size" {{SIZE_CAPTION}} Wrap 1 FontProperties FontProperties { Font "{{FONT}}" } }
TextWidgetClass { Name "Help_objectGuardCount" Slot FrameWidgetSlot { Anchor 0 0 0 0 PositionX 28 OffsetLeft 28 PositionY 195 OffsetTop 195 SizeX 936 OffsetRight -964 SizeY 26 OffsetBottom -221 } Color {{COLOR_TEXT}} Text "Towers and chimneys use suitable platforms. Lost guards are not replaced." "Font Size" {{SIZE_CAPTION_SMALL}} "Min Font Size" {{SIZE_CAPTION_SMALL}} Wrap 1 FontProperties FontProperties { Font "{{FONT}}" } } TextWidgetClass { Name "Help_objectGuardCount" Slot FrameWidgetSlot { Anchor 0 0 0 0 PositionX 28 OffsetLeft 28 PositionY 195 OffsetTop 195 SizeX 936 OffsetRight -964 SizeY 26 OffsetBottom -221 } Color {{COLOR_TEXT}} Text "Towers and chimneys use suitable platforms. Lost guards are not replaced." "Font Size" {{SIZE_CAPTION_SMALL}} "Min Font Size" {{SIZE_CAPTION_SMALL}} Wrap 1 FontProperties FontProperties { Font "{{FONT}}" } }
TextWidgetClass { Name "Label_objectGuardEvery" Slot FrameWidgetSlot { Anchor 0 0 0 0 PositionX 28 OffsetLeft 28 PositionY 225 OffsetTop 225 SizeX 936 OffsetRight -964 SizeY 26 OffsetBottom -251 } Color {{COLOR_TEXT}} Text "Guard every Nth eligible site (1-4)" "Font Size" {{SIZE_LABEL}} "Min Font Size" {{SIZE_LABEL}} Wrap 1 FontProperties FontProperties { Font "{{FONT}}" } } TextWidgetClass { Name "Label_objectGuardEvery" Slot FrameWidgetSlot { Anchor 0 0 0 0 PositionX 28 OffsetLeft 28 PositionY 225 OffsetTop 225 SizeX 936 OffsetRight -964 SizeY 26 OffsetBottom -251 } Color {{COLOR_TEXT}} Text "Guard spacing" "Font Size" {{SIZE_LABEL}} "Min Font Size" {{SIZE_LABEL}} Wrap 1 FontProperties FontProperties { Font "{{FONT}}" } }
ButtonWidgetClass : "{DA43C77A0D1E59F8}UI/layouts/ERR/AdminValue.layout" { Name "objectGuardEvery" Slot FrameWidgetSlot { Anchor 0 0 0 0 PositionX 28 OffsetLeft 28 PositionY 255 OffsetTop 255 SizeX 130 OffsetRight -158 SizeY 38 OffsetBottom -293 } components { SCR_EditBoxComponent "{547290FFBD5B33E9}" { m_sLabel "" } } } ButtonWidgetClass : "{75C912A1C89BE6C2}UI/layouts/WidgetLibrary/Buttons/WLib_ButtonText.layout" { Name "Choice_objectGuardEvery_1" Slot FrameWidgetSlot { Anchor 0 0 0 0 PositionX 28 OffsetLeft 28 PositionY 255 OffsetTop 255 SizeX 222 OffsetRight -250 SizeY 38 OffsetBottom -293 } components { SCR_ButtonTextComponent "{5548F0143AE99095}" { m_sText "Every site" } } }
ButtonWidgetClass : "{75C912A1C89BE6C2}UI/layouts/WidgetLibrary/Buttons/WLib_ButtonText.layout" { Name "Apply_objectGuardEvery" Slot FrameWidgetSlot { Anchor 0 0 0 0 PositionX 170 OffsetLeft 170 PositionY 255 OffsetTop 255 SizeX 110 OffsetRight -280 SizeY 38 OffsetBottom -293 } components { SCR_ButtonTextComponent "{5548F0143AE99095}" { m_sText "Apply" } } } ButtonWidgetClass : "{75C912A1C89BE6C2}UI/layouts/WidgetLibrary/Buttons/WLib_ButtonText.layout" { Name "Choice_objectGuardEvery_2" Slot FrameWidgetSlot { Anchor 0 0 0 0 PositionX 266 OffsetLeft 266 PositionY 255 OffsetTop 255 SizeX 222 OffsetRight -488 SizeY 38 OffsetBottom -293 } components { SCR_ButtonTextComponent "{5548F0143AE99095}" { m_sText "Every 2nd" } } }
ButtonWidgetClass : "{75C912A1C89BE6C2}UI/layouts/WidgetLibrary/Buttons/WLib_ButtonText.layout" { Name "Choice_objectGuardEvery_3" Slot FrameWidgetSlot { Anchor 0 0 0 0 PositionX 504 OffsetLeft 504 PositionY 255 OffsetTop 255 SizeX 222 OffsetRight -726 SizeY 38 OffsetBottom -293 } components { SCR_ButtonTextComponent "{5548F0143AE99095}" { m_sText "Every 3rd" } } }
ButtonWidgetClass : "{75C912A1C89BE6C2}UI/layouts/WidgetLibrary/Buttons/WLib_ButtonText.layout" { Name "Choice_objectGuardEvery_4" Slot FrameWidgetSlot { Anchor 0 0 0 0 PositionX 742 OffsetLeft 742 PositionY 255 OffsetTop 255 SizeX 222 OffsetRight -964 SizeY 38 OffsetBottom -293 } components { SCR_ButtonTextComponent "{5548F0143AE99095}" { m_sText "Every 4th" } } }
TextWidgetClass { Name "Saved_objectGuardEvery" Slot FrameWidgetSlot { Anchor 0 0 0 0 PositionX 28 OffsetLeft 28 PositionY 296 OffsetTop 296 SizeX 936 OffsetRight -964 SizeY 22 OffsetBottom -318 } Color {{COLOR_TEXT}} Text "Waiting for saved value" "Font Size" {{SIZE_CAPTION}} "Min Font Size" {{SIZE_CAPTION}} Wrap 1 FontProperties FontProperties { Font "{{FONT}}" } } TextWidgetClass { Name "Saved_objectGuardEvery" Slot FrameWidgetSlot { Anchor 0 0 0 0 PositionX 28 OffsetLeft 28 PositionY 296 OffsetTop 296 SizeX 936 OffsetRight -964 SizeY 22 OffsetBottom -318 } Color {{COLOR_TEXT}} Text "Waiting for saved value" "Font Size" {{SIZE_CAPTION}} "Min Font Size" {{SIZE_CAPTION}} Wrap 1 FontProperties FontProperties { Font "{{FONT}}" } }
TextWidgetClass { Name "Help_objectGuardEvery" Slot FrameWidgetSlot { Anchor 0 0 0 0 PositionX 28 OffsetLeft 28 PositionY 320 OffsetTop 320 SizeX 936 OffsetRight -964 SizeY 26 OffsetBottom -346 } Color {{COLOR_TEXT}} Text "1 = every site; 2 = every second; 3 = every third; 4 = every fourth." "Font Size" {{SIZE_CAPTION_SMALL}} "Min Font Size" {{SIZE_CAPTION_SMALL}} Wrap 1 FontProperties FontProperties { Font "{{FONT}}" } } TextWidgetClass { Name "Help_objectGuardEvery" Slot FrameWidgetSlot { Anchor 0 0 0 0 PositionX 28 OffsetLeft 28 PositionY 320 OffsetTop 320 SizeX 936 OffsetRight -964 SizeY 26 OffsetBottom -346 } Color {{COLOR_TEXT}} Text "1 = every site; 2 = every second; 3 = every third; 4 = every fourth." "Font Size" {{SIZE_CAPTION_SMALL}} "Min Font Size" {{SIZE_CAPTION_SMALL}} Wrap 1 FontProperties FontProperties { Font "{{FONT}}" } }
ButtonWidgetClass : "{75C912A1C89BE6C2}UI/layouts/WidgetLibrary/Buttons/WLib_ButtonText.layout" { Name "GuardEvery_1" Slot FrameWidgetSlot { Anchor 0 0 0 0 PositionX 292 OffsetLeft 292 PositionY 255 OffsetTop 255 SizeX 155 OffsetRight -447 SizeY 38 OffsetBottom -293 } components { SCR_ButtonTextComponent "{5548F0143AE99095}" { m_sText "Every site" } } } TextWidgetClass { Name "Label_objectGuardHQMode" Slot FrameWidgetSlot { Anchor 0 0 0 0 PositionX 28 OffsetLeft 28 PositionY 350 OffsetTop 350 SizeX 936 OffsetRight -964 SizeY 26 OffsetBottom -376 } Color {{COLOR_TEXT}} Text "HQ participation" "Font Size" {{SIZE_LABEL}} "Min Font Size" {{SIZE_LABEL}} Wrap 1 FontProperties FontProperties { Font "{{FONT}}" } }
ButtonWidgetClass : "{75C912A1C89BE6C2}UI/layouts/WidgetLibrary/Buttons/WLib_ButtonText.layout" { Name "GuardEvery_2" Slot FrameWidgetSlot { Anchor 0 0 0 0 PositionX 459 OffsetLeft 459 PositionY 255 OffsetTop 255 SizeX 155 OffsetRight -614 SizeY 38 OffsetBottom -293 } components { SCR_ButtonTextComponent "{5548F0143AE99095}" { m_sText "Every 2nd" } } } ButtonWidgetClass : "{75C912A1C89BE6C2}UI/layouts/WidgetLibrary/Buttons/WLib_ButtonText.layout" { Name "Choice_objectGuardHQMode_0" Slot FrameWidgetSlot { Anchor 0 0 0 0 PositionX 28 OffsetLeft 28 PositionY 380 OffsetTop 380 SizeX 304 OffsetRight -332 SizeY 38 OffsetBottom -418 } components { SCR_ButtonTextComponent "{5548F0143AE99095}" { m_sText "Hold positions" } } }
ButtonWidgetClass : "{75C912A1C89BE6C2}UI/layouts/WidgetLibrary/Buttons/WLib_ButtonText.layout" { Name "GuardEvery_3" Slot FrameWidgetSlot { Anchor 0 0 0 0 PositionX 626 OffsetLeft 626 PositionY 255 OffsetTop 255 SizeX 155 OffsetRight -781 SizeY 38 OffsetBottom -293 } components { SCR_ButtonTextComponent "{5548F0143AE99095}" { m_sText "Every 3rd" } } } ButtonWidgetClass : "{75C912A1C89BE6C2}UI/layouts/WidgetLibrary/Buttons/WLib_ButtonText.layout" { Name "Choice_objectGuardHQMode_1" Slot FrameWidgetSlot { Anchor 0 0 0 0 PositionX 344 OffsetLeft 344 PositionY 380 OffsetTop 380 SizeX 304 OffsetRight -648 SizeY 38 OffsetBottom -418 } components { SCR_ButtonTextComponent "{5548F0143AE99095}" { m_sText "Half respond to HQ" } } }
ButtonWidgetClass : "{75C912A1C89BE6C2}UI/layouts/WidgetLibrary/Buttons/WLib_ButtonText.layout" { Name "GuardEvery_4" Slot FrameWidgetSlot { Anchor 0 0 0 0 PositionX 793 OffsetLeft 793 PositionY 255 OffsetTop 255 SizeX 155 OffsetRight -948 SizeY 38 OffsetBottom -293 } components { SCR_ButtonTextComponent "{5548F0143AE99095}" { m_sText "Every 4th" } } } ButtonWidgetClass : "{75C912A1C89BE6C2}UI/layouts/WidgetLibrary/Buttons/WLib_ButtonText.layout" { Name "Choice_objectGuardHQMode_2" Slot FrameWidgetSlot { Anchor 0 0 0 0 PositionX 660 OffsetLeft 660 PositionY 380 OffsetTop 380 SizeX 304 OffsetRight -964 SizeY 38 OffsetBottom -418 } components { SCR_ButtonTextComponent "{5548F0143AE99095}" { m_sText "All respond to HQ" } } }
TextWidgetClass { Name "Label_objectGuardHQMode" Slot FrameWidgetSlot { Anchor 0 0 0 0 PositionX 28 OffsetLeft 28 PositionY 350 OffsetTop 350 SizeX 936 OffsetRight -964 SizeY 26 OffsetBottom -376 } Color {{COLOR_TEXT}} Text "HQ participation (0-2)" "Font Size" {{SIZE_LABEL}} "Min Font Size" {{SIZE_LABEL}} Wrap 1 FontProperties FontProperties { Font "{{FONT}}" } }
ButtonWidgetClass : "{DA43C77A0D1E59F8}UI/layouts/ERR/AdminValue.layout" { Name "objectGuardHQMode" Slot FrameWidgetSlot { Anchor 0 0 0 0 PositionX 28 OffsetLeft 28 PositionY 380 OffsetTop 380 SizeX 130 OffsetRight -158 SizeY 38 OffsetBottom -418 } components { SCR_EditBoxComponent "{547290FFBD5B33E9}" { m_sLabel "" } } }
ButtonWidgetClass : "{75C912A1C89BE6C2}UI/layouts/WidgetLibrary/Buttons/WLib_ButtonText.layout" { Name "Apply_objectGuardHQMode" Slot FrameWidgetSlot { Anchor 0 0 0 0 PositionX 170 OffsetLeft 170 PositionY 380 OffsetTop 380 SizeX 110 OffsetRight -280 SizeY 38 OffsetBottom -418 } components { SCR_ButtonTextComponent "{5548F0143AE99095}" { m_sText "Apply" } } }
TextWidgetClass { Name "Saved_objectGuardHQMode" Slot FrameWidgetSlot { Anchor 0 0 0 0 PositionX 28 OffsetLeft 28 PositionY 421 OffsetTop 421 SizeX 936 OffsetRight -964 SizeY 22 OffsetBottom -443 } Color {{COLOR_TEXT}} Text "Waiting for saved value" "Font Size" {{SIZE_CAPTION}} "Min Font Size" {{SIZE_CAPTION}} Wrap 1 FontProperties FontProperties { Font "{{FONT}}" } } TextWidgetClass { Name "Saved_objectGuardHQMode" Slot FrameWidgetSlot { Anchor 0 0 0 0 PositionX 28 OffsetLeft 28 PositionY 421 OffsetTop 421 SizeX 936 OffsetRight -964 SizeY 22 OffsetBottom -443 } Color {{COLOR_TEXT}} Text "Waiting for saved value" "Font Size" {{SIZE_CAPTION}} "Min Font Size" {{SIZE_CAPTION}} Wrap 1 FontProperties FontProperties { Font "{{FONT}}" } }
TextWidgetClass { Name "Help_objectGuardHQMode" Slot FrameWidgetSlot { Anchor 0 0 0 0 PositionX 28 OffsetLeft 28 PositionY 445 OffsetTop 445 SizeX 936 OffsetRight -964 SizeY 26 OffsetBottom -471 } Color {{COLOR_TEXT}} Text "0 = hold positions; 1 = half hold and half respond; 2 = all can respond." "Font Size" {{SIZE_CAPTION_SMALL}} "Min Font Size" {{SIZE_CAPTION_SMALL}} Wrap 1 FontProperties FontProperties { Font "{{FONT}}" } } TextWidgetClass { Name "Help_objectGuardHQMode" Slot FrameWidgetSlot { Anchor 0 0 0 0 PositionX 28 OffsetLeft 28 PositionY 445 OffsetTop 445 SizeX 936 OffsetRight -964 SizeY 26 OffsetBottom -471 } Color {{COLOR_TEXT}} Text "Choose which guards can leave their posts to respond to HQ." "Font Size" {{SIZE_CAPTION_SMALL}} "Min Font Size" {{SIZE_CAPTION_SMALL}} Wrap 1 FontProperties FontProperties { Font "{{FONT}}" } }
ButtonWidgetClass : "{75C912A1C89BE6C2}UI/layouts/WidgetLibrary/Buttons/WLib_ButtonText.layout" { Name "GuardHQ_0" Slot FrameWidgetSlot { Anchor 0 0 0 0 PositionX 292 OffsetLeft 292 PositionY 380 OffsetTop 380 SizeX 210 OffsetRight -502 SizeY 38 OffsetBottom -418 } components { SCR_ButtonTextComponent "{5548F0143AE99095}" { m_sText "Hold positions" } } }
ButtonWidgetClass : "{75C912A1C89BE6C2}UI/layouts/WidgetLibrary/Buttons/WLib_ButtonText.layout" { Name "GuardHQ_1" Slot FrameWidgetSlot { Anchor 0 0 0 0 PositionX 514 OffsetLeft 514 PositionY 380 OffsetTop 380 SizeX 210 OffsetRight -724 SizeY 38 OffsetBottom -418 } components { SCR_ButtonTextComponent "{5548F0143AE99095}" { m_sText "Half to HQ" } } }
ButtonWidgetClass : "{75C912A1C89BE6C2}UI/layouts/WidgetLibrary/Buttons/WLib_ButtonText.layout" { Name "GuardHQ_2" Slot FrameWidgetSlot { Anchor 0 0 0 0 PositionX 736 OffsetLeft 736 PositionY 380 OffsetTop 380 SizeX 210 OffsetRight -946 SizeY 38 OffsetBottom -418 } components { SCR_ButtonTextComponent "{5548F0143AE99095}" { m_sText "All to HQ" } } }
} } } }
+2 -2
View File
@@ -1,7 +1,7 @@
FrameWidgetClass { "Is Visible" {{VISIBLE_SettingsPage}} Name "SettingsPage" Slot FrameWidgetSlot { Anchor 0 0 0 0 PositionX 220 OffsetLeft 220 PositionY 160 OffsetTop 160 SizeX 1000 OffsetRight -1220 SizeY 532 OffsetBottom -692 } { FrameWidgetClass { "Is Visible" {{VISIBLE_SettingsPage}} Name "SettingsPage" Slot FrameWidgetSlot { Anchor 0 0 0 0 PositionX 220 OffsetLeft 220 PositionY 160 OffsetTop 160 SizeX 1000 OffsetRight -1220 SizeY 532 OffsetBottom -692 } {
TextWidgetClass { Name "Label_startMode" Slot FrameWidgetSlot { Anchor 0 0 0 0 PositionX 28 OffsetLeft 28 PositionY 4 OffsetTop 4 SizeX 456 OffsetRight -484 SizeY 22 OffsetBottom -26 } Color {{COLOR_TEXT}} Text "Next start (Prison or Crash)" "Font Size" {{SIZE_BODY}} "Min Font Size" {{SIZE_BODY}} Wrap 1 FontProperties FontProperties { Font "{{FONT}}" } } TextWidgetClass { Name "Label_startMode" Slot FrameWidgetSlot { Anchor 0 0 0 0 PositionX 28 OffsetLeft 28 PositionY 4 OffsetTop 4 SizeX 456 OffsetRight -484 SizeY 22 OffsetBottom -26 } Color {{COLOR_TEXT}} Text "Next start (Prison or Crash)" "Font Size" {{SIZE_BODY}} "Min Font Size" {{SIZE_BODY}} Wrap 1 FontProperties FontProperties { Font "{{FONT}}" } }
ButtonWidgetClass : "{DA43C77A0D1E59F8}UI/layouts/ERR/AdminValue.layout" { Name "startMode" Slot FrameWidgetSlot { Anchor 0 0 0 0 PositionX 28 OffsetLeft 28 PositionY 28 OffsetTop 28 SizeX 180 OffsetRight -208 SizeY 32 OffsetBottom -60 } components { SCR_EditBoxComponent "{547290FFBD5B33E9}" { m_sLabel "" } } } ButtonWidgetClass : "{75C912A1C89BE6C2}UI/layouts/WidgetLibrary/Buttons/WLib_ButtonText.layout" { Name "Choice_startMode_prison" Slot FrameWidgetSlot { Anchor 0 0 0 0 PositionX 28 OffsetLeft 28 PositionY 28 OffsetTop 28 SizeX 220 OffsetRight -248 SizeY 32 OffsetBottom -60 } components { SCR_ButtonTextComponent "{5548F0143AE99095}" { m_sText "Prison" } } }
ButtonWidgetClass : "{75C912A1C89BE6C2}UI/layouts/WidgetLibrary/Buttons/WLib_ButtonText.layout" { Name "Apply_startMode" Slot FrameWidgetSlot { Anchor 0 0 0 0 PositionX 220 OffsetLeft 220 PositionY 28 OffsetTop 28 SizeX 100 OffsetRight -320 SizeY 32 OffsetBottom -60 } components { SCR_ButtonTextComponent "{5548F0143AE99095}" { m_sText "Apply" } } } ButtonWidgetClass : "{75C912A1C89BE6C2}UI/layouts/WidgetLibrary/Buttons/WLib_ButtonText.layout" { Name "Choice_startMode_crash" Slot FrameWidgetSlot { Anchor 0 0 0 0 PositionX 264 OffsetLeft 264 PositionY 28 OffsetTop 28 SizeX 220 OffsetRight -484 SizeY 32 OffsetBottom -60 } components { SCR_ButtonTextComponent "{5548F0143AE99095}" { m_sText "Crash" } } }
TextWidgetClass { Name "Saved_startMode" Slot FrameWidgetSlot { Anchor 0 0 0 0 PositionX 28 OffsetLeft 28 PositionY 64 OffsetTop 64 SizeX 456 OffsetRight -484 SizeY 28 OffsetBottom -92 } Color {{COLOR_TEXT}} Text "Waiting for server" "Font Size" {{SIZE_CAPTION_SMALL}} "Min Font Size" {{SIZE_CAPTION_SMALL}} Wrap 1 FontProperties FontProperties { Font "{{FONT}}" } } TextWidgetClass { Name "Saved_startMode" Slot FrameWidgetSlot { Anchor 0 0 0 0 PositionX 28 OffsetLeft 28 PositionY 64 OffsetTop 64 SizeX 456 OffsetRight -484 SizeY 28 OffsetBottom -92 } Color {{COLOR_TEXT}} Text "Waiting for server" "Font Size" {{SIZE_CAPTION_SMALL}} "Min Font Size" {{SIZE_CAPTION_SMALL}} Wrap 1 FontProperties FontProperties { Font "{{FONT}}" } }
TextWidgetClass { Name "Help_startMode" Slot FrameWidgetSlot { Anchor 0 0 0 0 PositionX 28 OffsetLeft 28 PositionY 92 OffsetTop 92 SizeX 456 OffsetRight -484 SizeY 28 OffsetBottom -120 } Color {{COLOR_TEXT}} Text "Starting scenario for the next round." "Font Size" {{SIZE_CAPTION_SMALL}} "Min Font Size" {{SIZE_CAPTION_SMALL}} Wrap 1 FontProperties FontProperties { Font "{{FONT}}" } } TextWidgetClass { Name "Help_startMode" Slot FrameWidgetSlot { Anchor 0 0 0 0 PositionX 28 OffsetLeft 28 PositionY 92 OffsetTop 92 SizeX 456 OffsetRight -484 SizeY 28 OffsetBottom -120 } Color {{COLOR_TEXT}} Text "Starting scenario for the next round." "Font Size" {{SIZE_CAPTION_SMALL}} "Min Font Size" {{SIZE_CAPTION_SMALL}} Wrap 1 FontProperties FontProperties { Font "{{FONT}}" } }
TextWidgetClass { Name "Label_radioDefenceSeconds" Slot FrameWidgetSlot { Anchor 0 0 0 0 PositionX 508 OffsetLeft 508 PositionY 4 OffsetTop 4 SizeX 456 OffsetRight -964 SizeY 22 OffsetBottom -26 } Color {{COLOR_TEXT}} Text "Radio defence (30-1800 seconds)" "Font Size" {{SIZE_BODY}} "Min Font Size" {{SIZE_BODY}} Wrap 1 FontProperties FontProperties { Font "{{FONT}}" } } TextWidgetClass { Name "Label_radioDefenceSeconds" Slot FrameWidgetSlot { Anchor 0 0 0 0 PositionX 508 OffsetLeft 508 PositionY 4 OffsetTop 4 SizeX 456 OffsetRight -964 SizeY 22 OffsetBottom -26 } Color {{COLOR_TEXT}} Text "Radio defence (30-1800 seconds)" "Font Size" {{SIZE_BODY}} "Min Font Size" {{SIZE_BODY}} Wrap 1 FontProperties FontProperties { Font "{{FONT}}" } }
+9 -28
View File
@@ -1,7 +1,7 @@
FrameWidgetClass { "Is Visible" {{VISIBLE_WorldPage}} Name "WorldPage" Slot FrameWidgetSlot { Anchor 0 0 0 0 PositionX 220 OffsetLeft 220 PositionY 160 OffsetTop 160 SizeX 1000 OffsetRight -1220 SizeY 532 OffsetBottom -692 } { FrameWidgetClass { "Is Visible" {{VISIBLE_WorldPage}} Name "WorldPage" Slot FrameWidgetSlot { Anchor 0 0 0 0 PositionX 220 OffsetLeft 220 PositionY 160 OffsetTop 160 SizeX 1000 OffsetRight -1220 SizeY 532 OffsetBottom -692 } {
TextWidgetClass { TextWidgetClass {
Name "WorldHelp" Slot FrameWidgetSlot { Anchor 0 0 0 0 PositionX 28 OffsetLeft 28 PositionY 6 OffsetTop 6 SizeX 936 OffsetRight -964 SizeY 50 OffsetBottom -56 } Name "WorldHelp" Slot FrameWidgetSlot { Anchor 0 0 0 0 PositionX 28 OffsetLeft 28 PositionY 6 OffsetTop 6 SizeX 936 OffsetRight -964 SizeY 50 OffsetBottom -56 }
Color {{COLOR_TEXT}} Text "Time and weather apply next round. View distance applies now. Press Apply to save." "Font Size" {{SIZE_INTRO}} "Min Font Size" {{SIZE_INTRO}} Wrap 1 Color {{COLOR_TEXT}} Text "Time and weather apply next round. View distance applies now. Weather buttons save immediately; use Apply for edited values." "Font Size" {{SIZE_INTRO}} "Min Font Size" {{SIZE_INTRO}} Wrap 1
FontProperties FontProperties { Font "{{FONT}}" } FontProperties FontProperties { Font "{{FONT}}" }
} }
TextWidgetClass { TextWidgetClass {
@@ -131,8 +131,8 @@ ButtonWidgetClass : "{75C912A1C89BE6C2}UI/layouts/WidgetLibrary/Buttons/WLib_But
} }
} }
TextWidgetClass { TextWidgetClass {
Name "Label_weatherProfile" Slot FrameWidgetSlot { Anchor 0 0 0 0 PositionX 28 OffsetLeft 28 PositionY 322 OffsetTop 322 SizeX 368 OffsetRight -396 SizeY 28 OffsetBottom -350 } Name "Label_weatherProfile" Slot FrameWidgetSlot { Anchor 0 0 0 0 PositionX 28 OffsetLeft 28 PositionY 322 OffsetTop 322 SizeX 168 OffsetRight -196 SizeY 28 OffsetBottom -350 }
Color {{COLOR_TEXT}} Text "Weather (authored / clear / overcast / rain)" "Font Size" {{SIZE_LABEL}} "Min Font Size" {{SIZE_LABEL}} Wrap 1 FontProperties FontProperties { Color {{COLOR_TEXT}} Text "Weather" "Font Size" {{SIZE_LABEL}} "Min Font Size" {{SIZE_LABEL}} Wrap 1 FontProperties FontProperties {
Font "{{FONT}}" Font "{{FONT}}"
} }
} }
@@ -144,34 +144,15 @@ TextWidgetClass {
} }
TextWidgetClass { TextWidgetClass {
Name "Help_weatherProfile" Slot FrameWidgetSlot { Anchor 0 0 0 0 PositionX 28 OffsetLeft 28 PositionY 378 OffsetTop 378 SizeX 936 OffsetRight -964 SizeY 20 OffsetBottom -398 } Name "Help_weatherProfile" Slot FrameWidgetSlot { Anchor 0 0 0 0 PositionX 28 OffsetLeft 28 PositionY 378 OffsetTop 378 SizeX 936 OffsetRight -964 SizeY 20 OffsetBottom -398 }
Color {{COLOR_MUTED}} Text "Use authored, clear, overcast or rain. Random chooses one of the three weather types next round." "Font Size" {{SIZE_CAPTION}} "Min Font Size" {{SIZE_CAPTION}} Wrap 1 Color {{COLOR_MUTED}} Text "Map default keeps authored weather. Random chooses clear, overcast or rain each round." "Font Size" {{SIZE_CAPTION}} "Min Font Size" {{SIZE_CAPTION}} Wrap 1
FontProperties FontProperties { Font "{{FONT}}" } FontProperties FontProperties { Font "{{FONT}}" }
} }
ButtonWidgetClass : "{DA43C77A0D1E59F8}UI/layouts/ERR/AdminValue.layout" { ButtonWidgetClass : "{75C912A1C89BE6C2}UI/layouts/WidgetLibrary/Buttons/WLib_ButtonText.layout" { Name "Choice_weatherProfile_authored" Slot FrameWidgetSlot { Anchor 0 0 0 0 PositionX 208 OffsetLeft 208 PositionY 322 OffsetTop 322 SizeX 140 OffsetRight -348 SizeY 32 OffsetBottom -354 } components { SCR_ButtonTextComponent "{5548F0143AE99095}" { m_sText "Map default" } } }
Name "weatherProfile" Slot FrameWidgetSlot { Anchor 0 0 0 0 PositionX 408 OffsetLeft 408 PositionY 322 OffsetTop 322 SizeX 240 OffsetRight -648 SizeY 42 OffsetBottom -364 } ButtonWidgetClass : "{75C912A1C89BE6C2}UI/layouts/WidgetLibrary/Buttons/WLib_ButtonText.layout" { Name "Choice_weatherProfile_clear" Slot FrameWidgetSlot { Anchor 0 0 0 0 PositionX 362 OffsetLeft 362 PositionY 322 OffsetTop 322 SizeX 140 OffsetRight -502 SizeY 32 OffsetBottom -354 } components { SCR_ButtonTextComponent "{5548F0143AE99095}" { m_sText "Clear" } } }
components { ButtonWidgetClass : "{75C912A1C89BE6C2}UI/layouts/WidgetLibrary/Buttons/WLib_ButtonText.layout" { Name "Choice_weatherProfile_overcast" Slot FrameWidgetSlot { Anchor 0 0 0 0 PositionX 516 OffsetLeft 516 PositionY 322 OffsetTop 322 SizeX 140 OffsetRight -656 SizeY 32 OffsetBottom -354 } components { SCR_ButtonTextComponent "{5548F0143AE99095}" { m_sText "Overcast" } } }
SCR_EditBoxComponent "{547290FFBD5B33E9}" { ButtonWidgetClass : "{75C912A1C89BE6C2}UI/layouts/WidgetLibrary/Buttons/WLib_ButtonText.layout" { Name "Choice_weatherProfile_rain" Slot FrameWidgetSlot { Anchor 0 0 0 0 PositionX 670 OffsetLeft 670 PositionY 322 OffsetTop 322 SizeX 140 OffsetRight -810 SizeY 32 OffsetBottom -354 } components { SCR_ButtonTextComponent "{5548F0143AE99095}" { m_sText "Rain" } } }
m_sLabel "" ButtonWidgetClass : "{75C912A1C89BE6C2}UI/layouts/WidgetLibrary/Buttons/WLib_ButtonText.layout" { Name "Choice_weatherProfile_random" Slot FrameWidgetSlot { Anchor 0 0 0 0 PositionX 824 OffsetLeft 824 PositionY 322 OffsetTop 322 SizeX 140 OffsetRight -964 SizeY 32 OffsetBottom -354 } components { SCR_ButtonTextComponent "{5548F0143AE99095}" { m_sText "Random" } } }
}
}
}
ButtonWidgetClass : "{75C912A1C89BE6C2}UI/layouts/WidgetLibrary/Buttons/WLib_ButtonText.layout" {
Name "Apply_weatherProfile" Slot FrameWidgetSlot { Anchor 0 0 0 0 PositionX 660 OffsetLeft 660 PositionY 322 OffsetTop 322 SizeX 112 OffsetRight -772 SizeY 42 OffsetBottom -364 }
components {
SCR_ButtonTextComponent "{5548F0143AE99095}" {
m_sText "Apply"
}
}
}
ButtonWidgetClass : "{75C912A1C89BE6C2}UI/layouts/WidgetLibrary/Buttons/WLib_ButtonText.layout" {
Name "Random_weatherProfile" Slot FrameWidgetSlot { Anchor 0 0 0 0 PositionX 784 OffsetLeft 784 PositionY 322 OffsetTop 322 SizeX 180 OffsetRight -964 SizeY 42 OffsetBottom -364 }
components {
SCR_ButtonTextComponent "{5548F0143AE99095}" {
m_sText "Random"
}
}
}
TextWidgetClass { TextWidgetClass {
Name "Label_viewDistanceMetres" Slot FrameWidgetSlot { Anchor 0 0 0 0 PositionX 28 OffsetLeft 28 PositionY 406 OffsetTop 406 SizeX 368 OffsetRight -396 SizeY 28 OffsetBottom -434 } Name "Label_viewDistanceMetres" Slot FrameWidgetSlot { Anchor 0 0 0 0 PositionX 28 OffsetLeft 28 PositionY 406 OffsetTop 406 SizeX 368 OffsetRight -396 SizeY 28 OffsetBottom -434 }
Color {{COLOR_TEXT}} Text "View distance (500-10000 m / default)" "Font Size" {{SIZE_LABEL}} "Min Font Size" {{SIZE_LABEL}} Wrap 1 FontProperties FontProperties { Color {{COLOR_TEXT}} Text "View distance (500-10000 m / default)" "Font Size" {{SIZE_LABEL}} "Min Font Size" {{SIZE_LABEL}} Wrap 1 FontProperties FontProperties {