Skip to content

Commit

Permalink
feat: allows to edit hidden abilities
Browse files Browse the repository at this point in the history
  • Loading branch information
Arley Pádua authored and Arley Pádua committed Oct 15, 2024
1 parent 6a491e4 commit c7fb974
Show file tree
Hide file tree
Showing 4 changed files with 64 additions and 2 deletions.
6 changes: 5 additions & 1 deletion src/PKHeX.Facade/Pokemons/Pokemon.cs
Original file line number Diff line number Diff line change
Expand Up @@ -81,7 +81,11 @@ public ItemDefinition HeldItem
set => pokemon.HeldItem = value.Id;
}

public AbilityDefinition Ability => AbilityRepository.Instance.Get(pokemon.Ability);
public AbilityDefinition Ability
{
get => AbilityRepository.Instance.Get(pokemon.Ability);
set => pokemon.Ability = value.Id;
}

public int Friendship
{
Expand Down
2 changes: 2 additions & 0 deletions src/PKHeX.Facade/Repositories/AbilityRepository.cs
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,8 @@ private AbilityRepository()

public AbilityDefinition Get(int id) => _abilities.GetValueOrDefault(id)
?? AbilityDefinition.None;

public List<AbilityDefinition> All => _abilities.Values.ToList();
}

public record AbilityDefinition(int Id, string Name)
Expand Down
11 changes: 10 additions & 1 deletion src/PKHeX.Web/Components/Pokemons/PokemonDescription.razor
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,10 @@
SelectedItemChanged="HandleHeldItemChanged"/>
</DescriptionsItem>
<DescriptionsItem Title="Ability">
@Pokemon.Ability.Name
<AbilitySelect
SelectedAbilityId="Pokemon.Ability.Id"
SelectedAbilityChanged="HandleAbilityChanged"
/>
</DescriptionsItem>
<DescriptionsItem>
<TitleTemplate>
Expand Down Expand Up @@ -192,4 +195,10 @@
return OnPokemonChanged.InvokeAsync(Pokemon);
}

private Task HandleAbilityChanged(AbilityDefinition ability)
{
Pokemon.Ability = ability;
return OnPokemonChanged.InvokeAsync(Pokemon);
}

}
47 changes: 47 additions & 0 deletions src/PKHeX.Web/Components/Selects/AbilitySelect.razor
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
@using PKHeX.Facade.Repositories

<Select TItem="AbilityDefinition"
TItemValue="int?"
DataSource="@_items"
@bind-Value="@SelectedAbilityId"
OnSelectedItemChanged="SelectedAbilityChangedInternal"
LabelName="@nameof(AbilityDefinition.Name)"
ValueName="@nameof(AbilityDefinition.Id)"
Placeholder="Form"
DefaultActiveFirstOption="false"
EnableSearch
EnableVirtualization>
<LabelTemplate>
@context.Name
</LabelTemplate>
<ItemTemplate>
@context.Name
</ItemTemplate>
</Select>

@code {
[Parameter] public int? SelectedAbilityId { get; set; }
[Parameter] public EventCallback<AbilityDefinition> SelectedAbilityChanged { get; set; }
[Parameter] public bool IgnoreRenderingEvents { get; set; }

private bool _dataSourceJustLoaded = true;

private readonly IEnumerable<AbilityDefinition> _items = AbilityRepository.Instance.All;

private Task SelectedAbilityChangedInternal(AbilityDefinition arg)
{
if (_dataSourceJustLoaded)
{
_dataSourceJustLoaded = false;
return Task.CompletedTask;
}

return SelectedAbilityChanged.InvokeAsync(arg);
}

protected override void OnInitialized()
{
_dataSourceJustLoaded = IgnoreRenderingEvents;
}

}

0 comments on commit c7fb974

Please sign in to comment.