PKHeX/PKHeX.WinForms/Controls/PKM Editor/EditPK2.cs
Kurt d4452ce3af SK2 coerce to load to a hint language
This format won't be supported cleanly, so let's just try to allow language detection to work as best as it can without storing metadata in the SK2 bytes.
2020-10-04 14:42:48 -07:00

65 lines
1.8 KiB
C#

using System;
using PKHeX.Core;
namespace PKHeX.WinForms.Controls
{
public partial class PKMEditor
{
private void PopulateFieldsPK2()
{
if (!(Entity is GBPKM pk2) || !(Entity is ICaughtData2 c2))
throw new FormatException(nameof(Entity));
if (Entity is SK2 sk2)
{
var sav = RequestSaveFile;
CoerceStadium2Language(sk2, sav);
}
LoadMisc1(pk2);
LoadMisc2(pk2);
TID_Trainer.LoadIDValues(pk2);
TB_MetLevel.Text = c2.Met_Level.ToString();
CB_MetLocation.SelectedValue = c2.Met_Location;
CB_MetTimeOfDay.SelectedIndex = c2.Met_TimeOfDay;
// Attempt to detect language
CB_Language.SelectedValue = pk2.GuessedLanguage();
LoadPartyStats(pk2);
UpdateStats();
}
private static void CoerceStadium2Language(SK2 sk2, SaveFile sav)
{
if (sk2.Japanese == (sav.Language == 1))
return;
var la = new LegalityAnalysis(sk2);
if (la.Valid || !sk2.IsPossible(sav.Language == 1))
return;
sk2.SwapLanguage();
la = new LegalityAnalysis(sk2);
if (!la.Valid) // fail
sk2.SwapLanguage();
}
private GBPKM PreparePK2()
{
if (!(Entity is GBPKM pk2) || !(Entity is ICaughtData2 c2))
throw new FormatException(nameof(Entity));
SaveMisc1(pk2);
SaveMisc2(pk2);
c2.Met_Level = Util.ToInt32(TB_MetLevel.Text);
c2.Met_Location = WinFormsUtil.GetIndex(CB_MetLocation);
c2.Met_TimeOfDay = CB_MetTimeOfDay.SelectedIndex;
SavePartyStats(pk2);
pk2.FixMoves();
return pk2;
}
}
}