private void Initialize(IList <CombatActButton> buttons) { var acts = _combatActModule.GetCurrentCombatActs(); var actsOrdered = acts.OrderBy(x => x.Constrains is null) .ThenBy(x => x.Stats.Duration) .ThenBy(x => x.Constrains?.EnergyCost) .ThenBy(x => x.Scheme?.Sid) .Take(MAX_COMBAT_ACT_COUNT).ToArray(); foreach (var act in actsOrdered) { var tags = act.Scheme?.Stats?.Tags?.Where(x => x != null)?.Select(x => x !)?.ToArray() ?? Array.Empty <string>(); var button = new CombatActButton(_uiContentStorage.GetButtonTexture(), _uiContentStorage.GetCombatActIconTexture(act.Scheme?.Sid, tags), selectedMarkerTexture: _uiContentStorage.GetSelectedButtonMarkerTexture(), _buttonGroup, act, new Rectangle(0, 0, COMBAT_ACT_BUTTON_SIZE, COMBAT_ACT_BUTTON_SIZE)); button.OnClick += (s, e) => { _sectorUiState.TacticalAct = act; _buttonGroup.Selected = (CombatActButton?)s; }; if (act == _sectorUiState.TacticalAct) { _buttonGroup.Selected = button; } buttons.Add(button); } }