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
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
@@ -47,13 +47,17 @@ class ERR_AdminMenu : ChimeraMenuBase
m_Controller = SCR_PlayerController.Cast(GetGame().GetPlayerController());
m_Mode = ERR_GameMode.Cast(GetGame().GetGameMode());
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 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())
{
array<string> choices = ERR_AdminMenuFields.Choices(key);
if (!choices.IsEmpty())
{
foreach (string choice : choices) names.Insert("Choice_" + key + "_" + choice);
continue;
}
names.Insert("Apply_" + 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_RestartEmptyState = -1;
protected int m_TelemetryState = -1;
protected int m_CrashLootState = -1;
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(), "SitesOn", "SitesOff", m_SitesState);
ERR_SelectionStyle.Pair(GetRootWidget(), "SelfEpiOn", "SelfEpiOff", m_SelfEpiState);
@@ -172,17 +179,19 @@ class ERR_AdminMenu : ChimeraMenuBase
foreach (SCR_ButtonBaseComponent button : m_Buttons)
{
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;
string key = name.Substring(prefix, name.Length() - prefix);
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.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 == "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 == "TelemetryOff") button.SetEnabled(m_Ready && m_TelemetryState == 1);
else if (name == "RestartEmptyOn") button.SetEnabled(m_Ready && m_RestartEmptyState == 0);
@@ -199,7 +208,7 @@ class ERR_AdminMenu : ChimeraMenuBase
{
if (!authorized) { Close(); 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)
{
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) + ")");
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")
{
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;
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 == "viewDistanceMetres") ERR_SelectionStyle.Choice(SCR_ButtonTextComponent.GetButtonText("Default_viewDistanceMetres", GetRootWidget()), saved == "0");
if (key == "objectGuardEvery")
for (int density = 1; density <= 4; density++)
ERR_SelectionStyle.Choice(SCR_ButtonTextComponent.GetButtonText("GuardEvery_" + density.ToString(), GetRootWidget()), saved.ToInt() == density);
if (key == "objectGuardHQMode")
for (int policy = 0; policy <= 2; policy++)
ERR_SelectionStyle.Choice(SCR_ButtonTextComponent.GetButtonText("GuardHQ_" + policy.ToString(), GetRootWidget()), saved.ToInt() == policy);
array<string> choices = ERR_AdminMenuFields.Choices(key);
foreach (string choice : choices)
ERR_SelectionStyle.Choice(SCR_ButtonTextComponent.GetButtonText("Choice_" + key + "_" + choice, GetRootWidget()), choice == ERR_AdminMenuFields.SavedChoice(key, saved));
string value = ERR_AdminMenuFields.Display(key, saved);
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()));
else if (key == "aiDoctrine" || key == "aiShadow") SetText("Saved_" + key, "Next round: " + value);
else SetText("Saved_" + key, "Saved: " + value);
if (!choices.IsEmpty()) continue;
// Existing fields retain all draft text, including a temporarily empty edit.
if (!m_InitializedFields.Contains(key))
{
@@ -393,16 +407,14 @@ class ERR_AdminMenu : ChimeraMenuBase
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 (name.IndexOf("GuardHQ_") == 0) guardKey = "objectGuardHQMode";
if (!m_HQ || !m_AvailableFields.Contains(guardKey)) return;
int guardPrefix = name.IndexOf("_") + 1;
SCR_EditBoxComponent guardEdit = SCR_EditBoxComponent.GetEditBoxComponent(guardKey, GetRootWidget());
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 (!m_AvailableFields.Contains(choiceKey) || !ERR_AdminMenuFields.Available(choiceKey, m_HQ, m_Intel)) return;
int choicePrefix = choiceKey.Length() + 8;
string choice = name.Substring(choicePrefix, name.Length() - choicePrefix);
m_ClickDelay = 0.3; SetText("Feedback", "Saving selection for next round...");
m_Controller.ERR_AdminSubmit(ERR_AdminMenuFields.Command(choiceKey, choice), true); return;
}
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_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 (m_TelemetryState < 0) return;
@@ -3,7 +3,29 @@ class ERR_AdminMenuFields
{
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)
{
+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 } {
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 "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_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 "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 "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" } }
@@ -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 } {
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 }
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" }
}
TextWidgetClass {
@@ -640,8 +640,8 @@ ButtonWidgetClass : "{75C912A1C89BE6C2}UI/layouts/WidgetLibrary/Buttons/WLib_But
}
}
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 }
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 {
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" "Font Size" 20 "Min Font Size" 20 Wrap 1 FontProperties FontProperties {
Font "{3E7733BAC8C831F6}UI/Fonts/RobotoCondensed/RobotoCondensed_Regular.fnt"
}
}
@@ -653,34 +653,15 @@ 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 }
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" }
}
ButtonWidgetClass : "{DA43C77A0D1E59F8}UI/layouts/ERR/AdminValue.layout" {
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 }
components {
SCR_EditBoxComponent "{547290FFBD5B33E9}" {
m_sLabel ""
}
}
}
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"
}
}
}
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" } } }
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" } } }
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" } } }
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" } } }
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" } } }
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 }
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" } } }
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 "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" } }
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 "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" } } }
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 : "{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 "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 "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" } } }
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 "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 "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" } } }
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 "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 "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 "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 "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 "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" } }
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" } } }
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" } }
} }
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" } }
@@ -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 } {
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 "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" } }
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 "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" } } }
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 : "{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 "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 "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" } }
@@ -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 "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 "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_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 "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 "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" } }
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 "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_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 "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 "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" } }
+28 -2
View File
@@ -12,7 +12,7 @@ navigation = source.with_name('ERR_AdminMenuPages.c')
layout = BASE / 'addons/core/UI/layouts/ERR/AdminMenu.layout'
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('))
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.
# Native layouts place child widget declarations inside an anonymous Children
# 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())
assert 'RandomDay_startTimeMinutes' 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'))
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
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'
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:
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))
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
@@ -66,14 +75,19 @@ menu_format = body(ROOT/'addons/core/Scripts/Game/ERR/00_Core/ERR_JournalText.c'
follow = body(fields, 'static bool FollowJournal(')
command = body(fields, 'static string Command(')
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)
run(r'''
#include <cassert>
#include <string>
#include <vector>
#include <algorithm>
struct string : std::string {
using std::string::string;
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();}
int Length(){return size();}
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();}}
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 {
''' + menu_format + r'''
};
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() {
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";
assert(Fields::JournalText(raw)=="No. 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 "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 "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_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 "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 "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}}" } }
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 "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_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 "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 "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}}" } }
+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 } {
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 "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}}" } }
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 "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" } } }
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 : "{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 "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 "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}}" } }
+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" } } }
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 "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}}" } }
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 "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" } } }
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 : "{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 "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 "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" } } }
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 "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 "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" } } }
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 "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 "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 "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 "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 "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}}" } }
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" } } }
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}}" } }
} }
+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 } {
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 "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_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 "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 "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}}" } }
+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 } {
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 }
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}}" }
}
TextWidgetClass {
@@ -131,8 +131,8 @@ ButtonWidgetClass : "{75C912A1C89BE6C2}UI/layouts/WidgetLibrary/Buttons/WLib_But
}
}
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 }
Color {{COLOR_TEXT}} Text "Weather (authored / clear / overcast / rain)" "Font Size" {{SIZE_LABEL}} "Min Font Size" {{SIZE_LABEL}} Wrap 1 FontProperties FontProperties {
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" "Font Size" {{SIZE_LABEL}} "Min Font Size" {{SIZE_LABEL}} Wrap 1 FontProperties FontProperties {
Font "{{FONT}}"
}
}
@@ -144,34 +144,15 @@ 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 }
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}}" }
}
ButtonWidgetClass : "{DA43C77A0D1E59F8}UI/layouts/ERR/AdminValue.layout" {
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 }
components {
SCR_EditBoxComponent "{547290FFBD5B33E9}" {
m_sLabel ""
}
}
}
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"
}
}
}
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" } } }
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" } } }
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" } } }
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" } } }
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" } } }
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 }
Color {{COLOR_TEXT}} Text "View distance (500-10000 m / default)" "Font Size" {{SIZE_LABEL}} "Min Font Size" {{SIZE_LABEL}} Wrap 1 FontProperties FontProperties {