mirror of
https://github.com/kwsch/PKHeX.git
synced 2026-04-25 08:10:48 -05:00
Extract SV Runtime Language get/set
Useful for get to check if things are misaligned in a save file. If future games continue doing this, then we can reuse the enum.
This commit is contained in:
parent
a41f32c66b
commit
92d49e858f
|
|
@ -6,6 +6,7 @@ namespace PKHeX.Core;
|
|||
/// <summary>
|
||||
/// Base class for a savegame data reader.
|
||||
/// </summary>
|
||||
[TypeConverter(typeof(ExpandableObjectConverter))]
|
||||
public abstract class SaveBlock<T>(T sav, Memory<byte> raw) : IDataIndirect where T : SaveFile
|
||||
{
|
||||
protected readonly T SAV = sav;
|
||||
|
|
|
|||
|
|
@ -46,36 +46,14 @@ public int Language
|
|||
Data[0x07] = (byte)value;
|
||||
|
||||
// For runtime language, the game has different indexes (not even shifted like previous games, just different)
|
||||
var runtimeLanguage = GetRuntimeLanguage((LanguageID)value);
|
||||
SAV.SetValue(SaveBlockAccessor9SV.KGameLanguage, (int)runtimeLanguage); // Int32
|
||||
RuntimeLanguageId = RuntimeLanguageExtensions.GetRuntimeLanguage((LanguageID)value);
|
||||
}
|
||||
}
|
||||
|
||||
private static RuntimeLanguage GetRuntimeLanguage(LanguageID value) => value switch
|
||||
public RuntimeLanguage RuntimeLanguageId
|
||||
{
|
||||
LanguageID.Japanese => RuntimeLanguage.Japanese,
|
||||
LanguageID.English => RuntimeLanguage.English,
|
||||
LanguageID.Spanish => RuntimeLanguage.Spanish,
|
||||
LanguageID.German => RuntimeLanguage.German,
|
||||
LanguageID.French => RuntimeLanguage.French,
|
||||
LanguageID.Italian => RuntimeLanguage.Italian,
|
||||
LanguageID.Korean => RuntimeLanguage.Korean,
|
||||
LanguageID.ChineseS => RuntimeLanguage.ChineseS,
|
||||
LanguageID.ChineseT => RuntimeLanguage.ChineseT,
|
||||
_ => RuntimeLanguage.English, // Default to English
|
||||
};
|
||||
|
||||
private enum RuntimeLanguage
|
||||
{
|
||||
Japanese = 0,
|
||||
English = 1,
|
||||
Spanish = 2,
|
||||
German = 3,
|
||||
French = 4,
|
||||
Italian = 5,
|
||||
Korean = 6,
|
||||
ChineseS = 7,
|
||||
ChineseT = 8,
|
||||
get => (RuntimeLanguage)SAV.GetValue<int>(SaveBlockAccessor9SV.KGameLanguage);
|
||||
set => SAV.SetValue(SaveBlockAccessor9SV.KGameLanguage, (int)value);
|
||||
}
|
||||
|
||||
private Span<byte> OriginalTrainerTrash => Data.Slice(0x10, 0x1A);
|
||||
|
|
|
|||
31
PKHeX.Core/Saves/Substructures/Gen9/RuntimeLanguage.cs
Normal file
31
PKHeX.Core/Saves/Substructures/Gen9/RuntimeLanguage.cs
Normal file
|
|
@ -0,0 +1,31 @@
|
|||
namespace PKHeX.Core;
|
||||
|
||||
public enum RuntimeLanguage
|
||||
{
|
||||
Japanese = 0,
|
||||
English = 1,
|
||||
Spanish = 2,
|
||||
German = 3,
|
||||
French = 4,
|
||||
Italian = 5,
|
||||
Korean = 6,
|
||||
ChineseS = 7,
|
||||
ChineseT = 8,
|
||||
}
|
||||
|
||||
public static class RuntimeLanguageExtensions
|
||||
{
|
||||
public static RuntimeLanguage GetRuntimeLanguage(LanguageID value) => value switch
|
||||
{
|
||||
LanguageID.Japanese => RuntimeLanguage.Japanese,
|
||||
LanguageID.English => RuntimeLanguage.English,
|
||||
LanguageID.Spanish => RuntimeLanguage.Spanish,
|
||||
LanguageID.German => RuntimeLanguage.German,
|
||||
LanguageID.French => RuntimeLanguage.French,
|
||||
LanguageID.Italian => RuntimeLanguage.Italian,
|
||||
LanguageID.Korean => RuntimeLanguage.Korean,
|
||||
LanguageID.ChineseS => RuntimeLanguage.ChineseS,
|
||||
LanguageID.ChineseT => RuntimeLanguage.ChineseT,
|
||||
_ => RuntimeLanguage.English, // Default to English
|
||||
};
|
||||
}
|
||||
Loading…
Reference in New Issue
Block a user