You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
270 lines
7.2 KiB
270 lines
7.2 KiB
@implements IDisposable |
|
|
|
<InputPanelComponent> |
|
<div class="keyContainer"> |
|
@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"; |
|
} |
|
|
|
<div style="position:relative; |
|
cursor:pointer; |
|
top:@y.ToString()px; |
|
left:@x.ToString()px; |
|
width: 0px; |
|
height: 0px;"> |
|
|
|
<div @onclick="x => { if (hotkey.KeyText.Equals(HotKeyType.SPACE.ToString())) { if (KeyService.IsHoldingSpace()) { KeyService.RemovePressedKey(hotkey.KeyText); } else { KeyService.AddPressedKey(hotkey.KeyText); } } else { KeyService.AddPressedKey(hotkey.KeyText); KeyService.RemovePressedKey(hotkey.KeyText); }}" style="background-color:@color; |
|
border: @border; |
|
width: @Size.ToString()px; |
|
height: @Size.ToString()px; |
|
overflow: hidden; |
|
padding: 4px;"> |
|
@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.VanguardAdded() != null; |
|
var style = isVanguard ? "font-weight: bold;" : ""; |
|
|
|
<div style="@style">@entity.Info()?.Name</div> |
|
} |
|
</div> |
|
</div> |
|
} |
|
</div> |
|
</InputPanelComponent> |
|
|
|
<style> |
|
.keyContainer { |
|
width: 400px; |
|
max-width: 95vw; |
|
height: 400px; |
|
outline: 3px solid black; |
|
border-radius: 8px; |
|
background-color: #282A30; |
|
margin: auto; |
|
} |
|
|
|
@@media only screen and (max-width: 1025px) { |
|
.keyContainer { |
|
transform: scale(0.85) translateX(-20px); |
|
background-color: transparent; |
|
outline: none; |
|
} |
|
} |
|
</style> |
|
|
|
@code { |
|
|
|
[Parameter] |
|
public int Size { get; set; } = 100; |
|
|
|
[Inject] |
|
public IKeyService KeyService { get; set; } = default!; |
|
|
|
[Inject] |
|
public IBuildOrderService BuildOrderService { get; set; } = default!; |
|
|
|
[Inject] |
|
public IImmortalSelectionService FilterService { get; set; } = default!; |
|
|
|
readonly Dictionary<string, EntityModel> data = EntityModel.GetDictionary(); |
|
readonly List<HotkeyModel> 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.VanguardAdded() != null && entity.VanguardAdded()?.ImmortalId != 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.ImmortalId) |
|
{ |
|
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(); |
|
} |
|
|
|
} |