Skip to content

Commit

Permalink
Revert "Reverted button parent management"
Browse files Browse the repository at this point in the history
This reverts commit 80a6c35.
  • Loading branch information
Quboid committed Jun 20, 2023
1 parent 80a6c35 commit 4cd3d38
Show file tree
Hide file tree
Showing 6 changed files with 205 additions and 160 deletions.
5 changes: 3 additions & 2 deletions NetworkAnarchy/ModInfo.cs
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@

namespace NetworkAnarchy
{
public class ModInfo : LoadingExtensionBase, IUserMod
public class ModInfo : LoadingExtensionBase, IUserMod
{
public ModInfo()
{
Expand Down Expand Up @@ -162,6 +162,7 @@ public void DestroyMod()

if (NetworkAnarchy.instance != null)
{
UIView.Find<UIPanel>("OptionsBar")?.RemoveUIComponent(NetworkAnarchy.m_toolOptionButton);
GameObject.Destroy(NetworkAnarchy.m_toolOptionButton.m_toolOptionsPanel.gameObject);
GameObject.Destroy(NetworkAnarchy.m_toolOptionButton.m_toolOptionsPanel);
NetworkAnarchy.m_toolOptionButton.m_toolOptionsPanel = null;
Expand Down Expand Up @@ -254,4 +255,4 @@ internal static string GetString(object o)
//}

public class Log : QLoggerStatic { }
}
}
263 changes: 153 additions & 110 deletions NetworkAnarchy/NA_GUI.cs
Original file line number Diff line number Diff line change
Expand Up @@ -31,8 +31,7 @@ public void OnGUI()
// $"pressed:{OptionsKeymapping.toggleAnarchy.IsPressed()}, pressedE:{OptionsKeymapping.toggleAnarchy.IsPressed(e)}, pressedEv:{OptionsKeymapping.toggleAnarchy.IsPressed(e)}");

// Allow Anarchy and Collision shortcuts even if the panel isn't visible (not handled by UUI)
if (OptionsKeymapping.toggleAnarchy.IsPressed(e))
{
if (OptionsKeymapping.toggleAnarchy.IsPressed(e)) {
var was = Anarchy;
ToggleAnarchy();
Log.Debug($"Hotkey: toggleAnarchy {Anarchy} (was:{was})");
Expand Down Expand Up @@ -102,108 +101,79 @@ public void OnGUI()
}

// Checking key presses
if (OptionsKeymapping.elevationUp.IsPressed(e))
{
if (OptionsKeymapping.elevationUp.IsPressed(e)) {
var was = m_elevation;
m_elevation += Mathf.RoundToInt(256f * elevationStep / 12f);
UpdateElevation();
//Log.Debug($"Hotkey: elevationUp {m_elevation} (was:{was})");
e.Use();
}
else if (OptionsKeymapping.elevationDown.IsPressed(e))
{
} else if (OptionsKeymapping.elevationDown.IsPressed(e)) {
var was = m_elevation;
m_elevation -= Mathf.RoundToInt(256f * elevationStep / 12f);
UpdateElevation();
//Log.Debug($"Hotkey: elevationDown {m_elevation} (was:{was})");
e.Use();
}
else if (OptionsKeymapping.elevationStepUp.IsPressed(e))
{
} else if (OptionsKeymapping.elevationStepUp.IsPressed(e)) {
var was = elevationStep;
if (elevationStep < 12)
{
if (elevationStep < 12) {
elevationStep++;
m_toolOptionButton.UpdateButton();
}
//Log.Debug($"Hotkey: elevationStepUp {elevationStep} (was:{was})");
e.Use();
}
else if (OptionsKeymapping.elevationStepDown.IsPressed(e))
{
} else if (OptionsKeymapping.elevationStepDown.IsPressed(e)) {
var was = elevationStep;
if (elevationStep > 1)
{
if (elevationStep > 1) {
elevationStep--;
m_toolOptionButton.UpdateButton();
}
//Log.Debug($"Hotkey: elevationStepDown {elevationStep} (was:{was})");
e.Use();
}
else if (OptionsKeymapping.modesCycleRight.IsPressed(e))
{
} else if (OptionsKeymapping.modesCycleRight.IsPressed(e)) {
var was = m_mode;
if (m_mode < Modes.Tunnel)
{
if (m_mode < Modes.Tunnel) {
mode++;
}
else
{
} else {
mode = Modes.Normal;
}

m_toolOptionButton.UpdateButton();
//Log.Debug($"Hotkey: modesCycleRight {m_mode} (was:{was})");
e.Use();
}
else if (OptionsKeymapping.modesCycleLeft.IsPressed(e))
{
} else if (OptionsKeymapping.modesCycleLeft.IsPressed(e)) {
var was = m_mode;
if (m_mode > Modes.Normal)
{
if (m_mode > Modes.Normal) {
mode--;
}
else
{
} else {
mode = Modes.Tunnel;
}

m_toolOptionButton.UpdateButton();
//Log.Debug($"Hotkey: modesCycleLeft {m_mode} (was:{was})");
e.Use();
}
else if (OptionsKeymapping.elevationReset.IsPressed(e))
{
} else if (OptionsKeymapping.elevationReset.IsPressed(e)) {
var was = m_elevation;
m_elevation = 0;
UpdateElevation();
m_toolOptionButton.UpdateButton();
//Log.Debug($"Hotkey: elevationReset {m_elevation} (was:{was})");
e.Use();
}
else if (OptionsKeymapping.toggleBending.IsPressed(e))
{
} else if (OptionsKeymapping.toggleBending.IsPressed(e)) {
var was = Bending;
ToggleBending();
//Log.Debug($"Hotkey: toggleBending {Bending} (was:{was})");
e.Use();
}
else if (OptionsKeymapping.toggleSnapping.IsPressed(e))
{
} else if (OptionsKeymapping.toggleSnapping.IsPressed(e)) {
var was = NodeSnapping;
ToggleSnapping();
//Log.Debug($"Hotkey: toggleSnapping {NodeSnapping} (was:{was})");
e.Use();
}
else if (OptionsKeymapping.toggleStraightSlope.IsPressed(e))
{
} else if (OptionsKeymapping.toggleStraightSlope.IsPressed(e)) {
var was = StraightSlope;
ToggleStraightSlope();
//Log.Debug($"Hotkey: toggleStraightSlope {StraightSlope} (was:{was})");
e.Use();
}
else if (OptionsKeymapping.toggleGrid.IsPressed(e))
{
} else if (OptionsKeymapping.toggleGrid.IsPressed(e)) {
var was = Grid;
ToggleGrid();
//Log.Debug($"Hotkey: toggleGrid {Grid} (was:{was})");
Expand Down Expand Up @@ -260,18 +230,88 @@ private void CreateToolOptionsButton()

try
{
m_toolOptionButton = UIView.GetAView().AddUIComponent(typeof(UIToolOptionsButton)) as UIToolOptionsButton;
UIPanel optionBar = UIView.Find<UIPanel>("OptionsBar");

if (optionBar == null)
{
Log.Warning("OptionBar not found!", "[NA31.1]");
return;
}

optionBar.autoLayout = true;
optionBar.autoLayoutDirection = LayoutDirection.Horizontal;

// Save existing optionsBar components, clear list
IList<UIComponent> components = new List<UIComponent>();
foreach (UIComponent comp in optionBar.components)
{
components.Add(comp);
}
optionBar.components.Clear();

// Add NA button to empty list
m_toolOptionButton = optionBar.AddUIComponent(typeof(UIToolOptionsButton)) as UIToolOptionsButton;

// Re-add components after NA button
foreach (UIComponent comp in components)
{
optionBar.components.Add(comp);
}

if (m_toolOptionButton == null)
{
Log.Warning("Couldn't create label", "[NA31]");
Log.Warning("Couldn't create label", "[NA31.2]");
return;
}

// Configure NA button
m_toolOptionButton.autoSize = false;
m_toolOptionButton.size = new Vector2(36, 36);
m_toolOptionButton.position = Vector2.zero;
m_toolOptionButton.isVisible = false;

// Iterate networks' option panels
RoadsOptionPanel[] panels = optionBar.GetComponentsInChildren<RoadsOptionPanel>();
foreach (RoadsOptionPanel panel in panels)
{
// Remove vanilla elevation button
((UIPanel)panel.component).autoLayout = true;
UIComponent button = panel.component.Find<UIComponent>("ElevationStep");
if (button == null)
{
continue;
}
button.size = Vector2.zero;
button.isVisible = false;
button.enabled = false;

// Some networks' panels have the Snapping button menu after the ToolMode panel for some reason
if (panel.component.components.Count > 1)
{
if (panel.component.components[0].name == "ToolMode" && panel.component.components[1].name == "SnappingToggle")
{
UIComponent buffer = panel.component.components[0];
panel.component.components[0] = panel.component.components[1];
panel.component.components[1] = buffer;
}
}

//// Add Upgrade button if needed (e.g. powerlines)
//var list = new List<NetTool.Mode>(panel.m_Modes);
//if (m_upgradeButtonTemplate != null && !list.Contains(NetTool.Mode.Upgrade))
//{
// UITabstrip toolMode = panel.component.Find<UITabstrip>("ToolMode");
// if (toolMode != null)
// {
// list.Add(NetTool.Mode.Upgrade);
// panel.m_Modes = list.ToArray();

// toolMode.AddTab("Upgrade", m_upgradeButtonTemplate, false);

// Log.Debug($"Upgrade button added for {panel.name}.", "[NA17]");
// }
//}
}
}
catch (Exception e)
{
Expand Down Expand Up @@ -299,70 +339,73 @@ private void CreateToolOptionsButton()
// }
//}

private void AttachToolOptionsButton(NetPrefab prefab)
{
DoesVanillaElevationButtonExist = false;

RoadsOptionPanel[] panels = GameObject.FindObjectsOfType<RoadsOptionPanel>();

foreach (RoadsOptionPanel panel in panels)
{
// Find the visible RoadsOptionPanel
if (panel.component.isVisible)
{
UIComponent button = panel.component.Find<UIComponent>("ElevationStep");
if (button == null)
{
continue;
}

// Put the main button in ElevationStep
m_toolOptionButton.transform.SetParent(button.transform);

IsButtonInOptionsBar = false;
button.tooltip = null;
DoesVanillaElevationButtonExist = true;

// Add Upgrade button if needed (e.g. powerlines)
var list = new List<NetTool.Mode>(panel.m_Modes);
if (!list.Contains(NetTool.Mode.Upgrade))
{
Log.Debug($"Adding upgrade button for {ModInfo.GetString(prefab)}", "[NA51]");
}
if (m_upgradeButtonTemplate != null && prefab != null && prefab.HasVariation && !list.Contains(NetTool.Mode.Upgrade))
{
UITabstrip toolMode = panel.component.Find<UITabstrip>("ToolMode");
if (toolMode != null)
{
list.Add(NetTool.Mode.Upgrade);
panel.m_Modes = list.ToArray();
//private void AttachToolOptionsButton(NetPrefab prefab)
//{
// return;
// DoesVanillaElevationButtonExist = false;

toolMode.AddTab("Upgrade", m_upgradeButtonTemplate, false);
// RoadsOptionPanel[] panels = GameObject.FindObjectsOfType<RoadsOptionPanel>();

Log.Debug("Upgrade button added.", "[NA17]");
}
}
// foreach (RoadsOptionPanel panel in panels)
// {
// // Find the visible RoadsOptionPanel
// if (panel.component.isVisible)
// {
// UIComponent button = panel.component.Find<UIComponent>("ElevationStep");
// if (button == null)
// {
// continue;
// }

Log.Debug($"ELEVATION STEP - Button placed on elevation button\n" +
$" button:{ModInfo.GetString(button)}\n" +
$" parent:{ModInfo.GetString(m_toolOptionButton.parent)}\n" +
$" tfrm.parent:{ModInfo.GetString(m_toolOptionButton.transform.parent)})", "[NA49]");
return;
}
}
// button.isVisible = false;

// No visible RoadsOptionPanel found. Put the main button in OptionsBar instead
UIPanel optionBar = UIView.Find<UIPanel>("OptionsBar");
// // Put the main button in ElevationStep
// //m_toolOptionButton.transform.SetParent(button.transform);

// //IsButtonInOptionsBar = false;
// //button.tooltip = null;
// //DoesVanillaElevationButtonExist = true;

// //// Add Upgrade button if needed (e.g. powerlines)
// //var list = new List<NetTool.Mode>(panel.m_Modes);
// //if (!list.Contains(NetTool.Mode.Upgrade))
// //{
// // Log.Debug($"Adding upgrade button for {ModInfo.GetString(prefab)}", "[NA51]");
// //}
// //if (m_upgradeButtonTemplate != null && prefab != null && prefab.HasVariation && !list.Contains(NetTool.Mode.Upgrade))
// //{
// // UITabstrip toolMode = panel.component.Find<UITabstrip>("ToolMode");
// // if (toolMode != null)
// // {
// // list.Add(NetTool.Mode.Upgrade);
// // panel.m_Modes = list.ToArray();

// // toolMode.AddTab("Upgrade", m_upgradeButtonTemplate, false);

// // Log.Debug("Upgrade button added.", "[NA17]");
// // }
// //}

// //Log.Debug($"ELEVATION STEP - Button placed on elevation button\n" +
// // $" button:{ModInfo.GetString(button)}\n" +
// // $" parent:{ModInfo.GetString(m_toolOptionButton.parent)}\n" +
// // $" tfrm.parent:{ModInfo.GetString(m_toolOptionButton.transform.parent)})", "[NA49]");
// //return;
// }
// }

if (optionBar == null)
{
Log.Warning("OptionBar not found!", "[NA18]");
return;
}
m_toolOptionButton.transform.SetParent(optionBar.transform);
Log.Debug($"MAIN OPTIONS\nButton placed on main options bar ({m_toolOptionButton.parent})", "[NA50]");
IsButtonInOptionsBar = true;
}
// // No visible RoadsOptionPanel found. Put the main button in OptionsBar instead
// //UIPanel optionBar = UIView.Find<UIPanel>("OptionsBar");

// //if (optionBar == null)
// //{
// // Log.Warning("OptionBar not found!", "[NA18]");
// // return;
// //}
// //m_toolOptionButton.transform.SetParent(optionBar.transform);
// //Log.Debug($"MAIN OPTIONS\nButton placed on main options bar ({m_toolOptionButton.parent})", "[NA50]");
// IsButtonInOptionsBar = true;
//}

public static UITextureAtlas GetAtlas(string name)
{
Expand All @@ -376,4 +419,4 @@ public static UITextureAtlas GetAtlas(string name)
return UIView.GetAView().defaultAtlas;
}
}
}
}
Loading

0 comments on commit 4cd3d38

Please sign in to comment.