Add Erase button for TileSpawnWindow (#5488)

* Add Erase button for TileSpawnWindow

Small QoL for mappers. Basically, it just selects space tile on "Erase" button toggled.

* Remove copy paste. Conevrt this into method
This commit is contained in:
MilenVolf
2024-10-13 16:55:57 +03:00
committed by GitHub
parent 1c1343466e
commit ba7d1452c1
4 changed files with 49 additions and 13 deletions

View File

@@ -4,9 +4,16 @@ entity-spawn-window-title = Entity Spawn Panel
entity-spawn-window-search-bar-placeholder = search
entity-spawn-window-clear-button = Clear
entity-spawn-window-replace-button-text = Replace
entity-spawn-window-erase-button-text = Erase Mode
entity-spawn-window-override-menu-tooltip = Override placement
## TileSpawnWindow
tile-spawn-window-title = Place Tiles
## Console
console-line-edit-placeholder = Command Here
## Common Used
window-erase-button-text = Erase Mode

View File

@@ -27,6 +27,7 @@ public sealed class TileSpawningUIController : UIController
private readonly List<ITileDefinition> _shownTiles = new();
private bool _clearingTileSelections;
private bool _eraseTile;
public override void Initialize()
{
@@ -35,6 +36,37 @@ public sealed class TileSpawningUIController : UIController
_placement.PlacementChanged += ClearTileSelection;
}
private void StartTilePlacement(int tileType)
{
var newObjInfo = new PlacementInformation
{
PlacementOption = "AlignTileAny",
TileType = tileType,
Range = 400,
IsTile = true
};
_placement.BeginPlacing(newObjInfo);
}
private void OnTileEraseToggled(ButtonToggledEventArgs args)
{
if (_window == null || _window.Disposed)
return;
_placement.Clear();
if (args.Pressed)
{
_eraseTile = true;
StartTilePlacement(0);
}
else
_eraseTile = false;
args.Button.Pressed = args.Pressed;
}
public void ToggleWindow()
{
EnsureWindow();
@@ -60,6 +92,8 @@ public sealed class TileSpawningUIController : UIController
_window.SearchBar.OnTextChanged += OnTileSearchChanged;
_window.TileList.OnItemSelected += OnTileItemSelected;
_window.TileList.OnItemDeselected += OnTileItemDeselected;
_window.EraseButton.Pressed = _eraseTile;
_window.EraseButton.OnToggled += OnTileEraseToggled;
BuildTileList();
}
@@ -76,6 +110,7 @@ public sealed class TileSpawningUIController : UIController
_clearingTileSelections = true;
_window.TileList.ClearSelected();
_clearingTileSelections = false;
_window.EraseButton.Pressed = false;
}
private void OnTileClearPressed(ButtonEventArgs args)
@@ -102,16 +137,7 @@ public sealed class TileSpawningUIController : UIController
private void OnTileItemSelected(ItemList.ItemListSelectedEventArgs args)
{
var definition = _shownTiles[args.ItemIndex];
var newObjInfo = new PlacementInformation
{
PlacementOption = "AlignTileAny",
TileType = definition.TileId,
Range = 400,
IsTile = true
};
_placement.BeginPlacing(newObjInfo);
StartTilePlacement(definition.TileId);
}
private void OnTileItemDeselected(ItemList.ItemListDeselectedEventArgs args)

View File

@@ -13,7 +13,7 @@
</ScrollContainer>
<BoxContainer Orientation="Horizontal">
<Button Name="ReplaceButton" Access="Public" ToggleMode="True" Text="{Loc entity-spawn-window-replace-button-text}"/>
<Button Name="EraseButton" Access="Public" ToggleMode="True" Text="{Loc entity-spawn-window-erase-button-text}"/>
<Button Name="EraseButton" Access="Public" ToggleMode="True" Text="{Loc window-erase-button-text}"/>
<OptionButton Name="OverrideMenu" Access="Public" HorizontalExpand="True" ToolTip="{Loc entity-spawn-window-override-menu-tooltip}" />
</BoxContainer>
<Label Name="RotationLabel" Access="Public"/>

View File

@@ -1,6 +1,6 @@
<TileSpawnWindow
xmlns="https://spacestation14.io"
Title="Place Tiles"
Title="{Loc tile-spawn-window-title}"
SetSize="300 300"
MinSize="300 200">
<BoxContainer Orientation="Vertical">
@@ -9,5 +9,8 @@
<Button Name="ClearButton" Access="Public" Text="Clear"/>
</BoxContainer>
<ItemList Name="TileList" Access="Public" VerticalExpand="True"/>
<BoxContainer Orientation="Horizontal">
<Button Name="EraseButton" Access="Public" ToggleMode="True" Text="{Loc window-erase-button-text}"/>
</BoxContainer>
</BoxContainer>
</TileSpawnWindow>