@implements IDisposable
@foreach (var hotkey in hotkeys) { if (hotkey.IsHidden) { continue; } var color = hotkey.KeyText.Equals("SPACE") && KeyService.IsHoldingSpace() || KeyService.GetAllPressedKeys().Contains(hotkey.KeyText) ? "#0a0f12" : hotkey.GetColor(); var x = hotkey.PositionX * Size; var y = hotkey.PositionY * Size; var border = "1px solid black"; if (hotkey.KeyText.Equals(_key)) { border = "5px solid black"; } if (hotkey.KeyText.Equals(_controlGroup)) { border = "5px solid green"; } if (hotkey.KeyText.Equals("SPACE") && KeyService.IsHoldingSpace()) { border = "5px solid green"; }
@hotkey.KeyText @foreach (var entity in data.Values) { if (!BuildOrderService.MeetsRequirements(entity, 9000)) { continue; } if (InvalidKey(entity, hotkey) || InvalidKeyGroup(entity, hotkey) || InvalidHoldSpace(entity)) { continue; } if (InvalidFaction(entity) || InvalidVanguard(entity) || InvalidNonVanguard(entity)) { continue; } var isVanguard = entity.Vanguard() != null; var style = isVanguard ? "font-weight: bold;" : "";
@entity.Info()?.Name
}
}
@code { [Parameter] public int Size { get; set; } = 100; [Inject] public IKeyService KeyService { get; set; } [Inject] public IBuildOrderService BuildOrderService { get; set; } [Inject] public IImmortalSelectionService FilterService { get; set; } readonly Dictionary data = EntityModel.GetDictionary(); readonly List hotkeys = HotkeyModel.GetAll(); public string _controlGroup = "C"; public string _key = ""; protected override void OnInitialized() { base.OnInitialized(); KeyService.Subscribe(OnKeyPressed); FilterService.Subscribe(StateHasChanged); } void IDisposable.Dispose() { KeyService.Unsubscribe(OnKeyPressed); FilterService.Unsubscribe(StateHasChanged); } // Move to Filter Service bool InvalidFaction(EntityModel entity) { if (entity.Faction() != null && entity.Faction()?.Faction != FilterService.GetFactionType() && FilterService.GetFactionType() != FactionType.Any) { return true; } return false; } // Move to Filter Service bool InvalidVanguard(EntityModel entity) { if (entity.Vanguard() != null && entity.Vanguard()?.Immortal != FilterService.GetImmortalType() && FilterService.GetImmortalType() != ImmortalType.Any) { return true; } return false; } // Move to Filter Service bool InvalidNonVanguard(EntityModel entity) { if (entity.Replaceds().Count > 0) { var isReplaced = false; foreach (var replaced in entity.Replaceds()) { if (FilterService.GetImmortalType() == replaced.Immortal) { isReplaced = true; break; } } if (isReplaced) { return true; } } return false; } bool InvalidRequirements(EntityModel entity) { return !BuildOrderService.MeetsRequirements(entity, 9000); } bool InvalidKey(EntityModel entity, HotkeyModel key) { if (entity.Hotkey()?.Hotkey == key.KeyText) { return false; } return true; } bool InvalidKeyGroup(EntityModel entity, HotkeyModel key) { if (entity.Hotkey()?.HotkeyGroup == _controlGroup) { return false; } return true; } bool InvalidKey(EntityModel entity) { if (entity.Hotkey()?.Hotkey == _key) { return false; } return true; } bool InvalidKeyGroup(EntityModel entity) { if (entity.Hotkey()?.HotkeyGroup == _controlGroup) { return false; } return true; } bool InvalidHoldSpace(EntityModel entity) { if (entity.Hotkey()?.HoldSpace == KeyService.IsHoldingSpace()) { return false; } return true; } void OnKeyPressed() { if (KeyService.GetAllPressedKeys().Contains("Z")) { _controlGroup = "Z"; } if (KeyService.GetAllPressedKeys().Contains("TAB")) { _controlGroup = "TAB"; } if (KeyService.GetAllPressedKeys().Contains("C")) { _controlGroup = "C"; } if (KeyService.GetAllPressedKeys().Contains("D")) { _controlGroup = "D"; } if (KeyService.GetAllPressedKeys().Contains("1")) { _controlGroup = "1"; } //TODO This could be better. Duplicated code if (KeyService.GetAllPressedKeys().Contains("2")) { _controlGroup = "2"; } if (KeyService.GetAllPressedKeys().Contains("SHIFT")) { _controlGroup = "SHIFT"; } if (KeyService.GetAllPressedKeys().Contains("CONTROL")) { _controlGroup = "CONTROL"; } if (KeyService.GetAllPressedKeys().Count > 0) { _key = KeyService.GetAllPressedKeys().First(); } StateHasChanged(); } }