mirror of
https://github.com/kwsch/PKHeX
synced 2024-11-27 06:20:25 +00:00
d3c2d77d11
Disallow max moves from Sketch Hide dmax moves from legal dropdown lists Pass ushort for moves for validating memories Internal class for move pp (hide empty class from dll users)
69 lines
2.6 KiB
C#
69 lines
2.6 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
|
|
namespace PKHeX.Core;
|
|
|
|
/// <summary>
|
|
/// Localizing Memory strings
|
|
/// </summary>
|
|
/// <remarks>
|
|
/// <see cref="IMemoryOT"/> and <see cref="IMemoryHT"/> parameters build strings.
|
|
/// </remarks>
|
|
public sealed class MemoryStrings
|
|
{
|
|
private readonly GameStrings s;
|
|
|
|
public MemoryStrings(GameStrings strings)
|
|
{
|
|
s = strings;
|
|
memories = new Lazy<List<ComboItem>>(GetMemories);
|
|
none = new Lazy<List<ComboItem>>(() => Util.GetCBList(new[] {string.Empty}));
|
|
species = new Lazy<List<ComboItem>>(() => Util.GetCBList(s.specieslist));
|
|
item6 = new Lazy<List<ComboItem>>(() => GetItems(EntityContext.Gen6));
|
|
item8 = new Lazy<List<ComboItem>>(() => GetItems(EntityContext.Gen8));
|
|
genloc = new Lazy<List<ComboItem>>(() => Util.GetCBList(s.genloc));
|
|
moves = new Lazy<List<ComboItem>>(() => Util.GetCBList(s.movelist));
|
|
specific = new Lazy<List<ComboItem>>(() => Util.GetCBList(s.metXY_00000, Locations6.Met0));
|
|
}
|
|
|
|
private List<ComboItem> GetItems(EntityContext context)
|
|
{
|
|
var permit = Memories.GetMemoryItemParams(context);
|
|
var asInt = permit.ToArray();
|
|
return Util.GetCBList(s.itemlist, asInt);
|
|
}
|
|
|
|
private readonly Lazy<List<ComboItem>> memories;
|
|
private readonly Lazy<List<ComboItem>> none, species, item6, item8, genloc, moves, specific;
|
|
|
|
public List<ComboItem> Memory => memories.Value;
|
|
public List<ComboItem> None => none.Value;
|
|
public List<ComboItem> Moves => moves.Value;
|
|
public List<ComboItem> Items6 => item6.Value;
|
|
public List<ComboItem> Items8 => item8.Value;
|
|
public List<ComboItem> GeneralLocations => genloc.Value;
|
|
public List<ComboItem> SpecificLocations => specific.Value;
|
|
public List<ComboItem> Species => species.Value;
|
|
|
|
private List<ComboItem> GetMemories()
|
|
{
|
|
var mems = s.memories.AsSpan(0);
|
|
var list = new List<ComboItem> {new(mems[0], 0)}; // none at top
|
|
Util.AddCBWithOffset(list, mems[1..], 1); // sorted the rest
|
|
return list;
|
|
}
|
|
|
|
public ReadOnlySpan<string> GetMemoryQualities() => s.intensity;
|
|
public ReadOnlySpan<string> GetMemoryFeelings(int memoryGen) => memoryGen >= 8 ? s.feeling8 : s.feeling6;
|
|
|
|
public List<ComboItem> GetArgumentStrings(MemoryArgType type, int memoryGen) => type switch
|
|
{
|
|
MemoryArgType.Species => Species,
|
|
MemoryArgType.GeneralLocation => GeneralLocations,
|
|
MemoryArgType.Item => memoryGen == 6 ? Items6 : Items8,
|
|
MemoryArgType.Move => Moves,
|
|
MemoryArgType.SpecificLocation => SpecificLocations,
|
|
_ => None,
|
|
};
|
|
}
|