private List<PlayerInfo> _playerList = new();
private readonly List<PlayerInfo> _sortedPlayerList = new();
- public event Action<PlayerInfo?>? OnSelectionChanged;
+ public event Action<PlayerInfo>? OnSelectionChanged;
public IReadOnlyList<PlayerInfo> PlayerInfo => _playerList;
public Func<PlayerInfo, string, string>? OverrideText;
BackgroundPanel.PanelOverride = new StyleBoxFlat {BackgroundColor = new Color(32, 32, 40)};
}
- private void PlayerListItemPressed(BaseButton.ButtonEventArgs args, ListData data)
+ private void PlayerListItemPressed(BaseButton.ButtonEventArgs? args, ListData? data)
{
- if (data is not PlayerListData {Info: var selectedPlayer})
+ if (args == null || data is not PlayerListData {Info: var selectedPlayer})
return;
if (args.Event.Function == EngineKeyFunctions.UIClick)
{
_window?.BuildEntityList(uid, component);
}
- public void InteractWithItem(BaseButton.ButtonEventArgs args, ListData cData)
+ public void InteractWithItem(BaseButton.ButtonEventArgs? args, ListData? cData)
{
- if (cData is not EntityListData { Uid: var entity })
+ if (args == null || cData is not EntityListData { Uid: var entity })
return;
if (args.Event.Function == EngineKeyFunctions.UIClick)
}
public bool Toggle { get; set; }
public Action<ListData, ListContainerButton>? GenerateItem;
- public Action<BaseButton.ButtonEventArgs, ListData>? ItemPressed;
+ public Action<BaseButton.ButtonEventArgs?, ListData?>? ItemPressed;
public IReadOnlyList<ListData> Data => _data;
private const int DefaultSeparation = 3;
_data = data.ToList();
_updateChildren = true;
InvalidateArrange();
+
+ if (_selected != null && !data.Contains(_selected))
+ {
+ _selected = null;
+ ItemPressed?.Invoke(null, null);
+ }
}
public void DirtyList()