PKHeX/PKHeX.Avalonia/ViewModels/Subforms/SAVPokeBlockORASViewModel.cs
montanon 7f44bc2e1e Add Gen 5-6 subform dialogs
17 generation-specific subforms:

Gen 5: Misc5, Pokedex5, DLC5, UnityTower5, CGearImage5
Gen 6: Trainer6, SecretBase6, PokedexXY, PokedexORAS,
       HallOfFame6, SuperTrain6, Link6, OPower6, Pokepuff6,
       BerryFieldXY, PokeBlockORAS, Roamer6
2026-03-18 15:32:35 -03:00

75 lines
1.8 KiB
C#

using System.Collections.ObjectModel;
using CommunityToolkit.Mvvm.ComponentModel;
using CommunityToolkit.Mvvm.Input;
using PKHeX.Core;
namespace PKHeX.Avalonia.ViewModels.Subforms;
/// <summary>
/// Model for a single PokeBlock entry in ORAS.
/// </summary>
public partial class PokeBlock6Model : ObservableObject
{
public int Index { get; }
public string Label { get; }
[ObservableProperty]
private uint _count;
public PokeBlock6Model(int index, string label, uint count)
{
Index = index;
Label = label;
_count = count;
}
}
/// <summary>
/// ViewModel for the Gen 6 ORAS PokeBlock editor.
/// Edits the 12 pokeblock counts.
/// </summary>
public partial class SAVPokeBlockORASViewModel : SaveEditorViewModelBase
{
private readonly SAV6AO _origin;
private readonly SAV6AO _sav;
public ObservableCollection<PokeBlock6Model> Blocks { get; } = [];
public SAVPokeBlockORASViewModel(SAV6AO sav) : base(sav)
{
_sav = (SAV6AO)(_origin = sav).Clone();
var contest = _sav.Contest;
var blockNames = GameInfo.Strings.pokeblocks;
for (int i = 0; i < Contest6.CountBlock; i++)
{
var label = (94 + i < blockNames.Length) ? blockNames[94 + i] : $"Block {i}";
Blocks.Add(new PokeBlock6Model(i, label, contest.GetBlockCount(i)));
}
}
[RelayCommand]
private void GiveAll()
{
foreach (var block in Blocks)
block.Count = 999;
}
[RelayCommand]
private void ClearAll()
{
foreach (var block in Blocks)
block.Count = 0;
}
[RelayCommand]
private void Save()
{
var contest = _sav.Contest;
foreach (var block in Blocks)
contest.SetBlockCount(block.Index, block.Count);
_origin.CopyChangesFrom(_sav);
Modified = true;
}
}