PKHeX/PKHeX.WinForms/Controls/PKM Editor/SizeCP.cs

136 lines
4 KiB
C#
Raw Normal View History

using System;
using System.Globalization;
using System.Windows.Forms;
using PKHeX.Core;
namespace PKHeX.WinForms.Controls
{
public partial class SizeCP : UserControl
{
private IScaledSize? ss;
private PB7? pkm;
private bool Loading;
2019-02-04 04:28:03 +00:00
2018-11-27 03:06:51 +00:00
public SizeCP()
{
InitializeComponent();
Initialized = true;
}
private readonly bool Initialized;
2019-11-16 01:34:18 +00:00
private static readonly string[] SizeClass = Enum.GetNames(typeof(PokeSize));
public void LoadPKM(PKM pk)
{
pkm = pk as PB7;
2019-11-16 01:34:18 +00:00
ss = pk as IScaledSize;
if (ss == null)
return;
2018-11-18 03:57:53 +00:00
TryResetStats();
}
2018-11-18 03:57:53 +00:00
public void TryResetStats()
{
2019-11-16 01:34:18 +00:00
if (!Initialized)
2018-11-27 03:06:51 +00:00
return;
2019-11-16 01:34:18 +00:00
if (pkm != null && CHK_Auto.Checked)
pkm.ResetCalculatedValues();
2018-11-26 23:42:40 +00:00
LoadStoredValues();
}
private void LoadStoredValues()
{
Loading = true;
2019-11-16 01:34:18 +00:00
if (ss != null)
{
NUD_HeightScalar.Value = ss.HeightScalar;
NUD_WeightScalar.Value = ss.WeightScalar;
}
if (pkm != null)
{
MT_CP.Text = Math.Min(65535, pkm.Stat_CP).ToString();
TB_HeightAbs.Text = pkm.HeightAbsolute.ToString(CultureInfo.InvariantCulture);
TB_WeightAbs.Text = pkm.WeightAbsolute.ToString(CultureInfo.InvariantCulture);
2019-11-16 01:34:18 +00:00
}
Loading = false;
}
private void UpdateFlagState(object sender, EventArgs e)
{
if (!CHK_Auto.Checked)
return;
pkm?.ResetCalculatedValues();
LoadStoredValues();
}
private void MT_CP_TextChanged(object sender, EventArgs e)
{
if (int.TryParse(MT_CP.Text, out var cp) && pkm != null)
pkm.Stat_CP = Math.Min(65535, cp);
}
private void NUD_HeightScalar_ValueChanged(object sender, EventArgs e)
{
if (ss != null)
{
ss.HeightScalar = (byte) NUD_HeightScalar.Value;
L_SizeH.Text = SizeClass[(int)PokeSizeUtil.GetSizeRating(ss.HeightScalar)];
}
2019-11-16 01:34:18 +00:00
if (!CHK_Auto.Checked || Loading || pkm == null)
return;
pkm.ResetHeight();
TB_HeightAbs.Text = pkm.HeightAbsolute.ToString("F8");
}
private void NUD_WeightScalar_ValueChanged(object sender, EventArgs e)
{
if (ss != null)
{
ss.WeightScalar = (byte) NUD_WeightScalar.Value;
L_SizeW.Text = SizeClass[(int)PokeSizeUtil.GetSizeRating(ss.WeightScalar)];
}
2019-11-16 01:34:18 +00:00
if (!CHK_Auto.Checked || Loading || pkm == null)
return;
pkm.ResetWeight();
TB_WeightAbs.Text = pkm.WeightAbsolute.ToString("F8");
}
private void TB_HeightAbs_TextChanged(object sender, EventArgs e)
{
if (pkm == null)
return;
if (CHK_Auto.Checked)
pkm.ResetHeight();
else if (float.TryParse(TB_HeightAbs.Text, out var result))
pkm.HeightAbsolute = result;
}
private void TB_WeightAbs_TextChanged(object sender, EventArgs e)
{
if (pkm == null)
return;
if (CHK_Auto.Checked)
pkm.ResetWeight();
else if (float.TryParse(TB_WeightAbs.Text, out var result))
pkm.WeightAbsolute = result;
}
2019-11-16 01:34:18 +00:00
public void ToggleVisibility(PKM pk)
{
var pb7 = pk is PB7;
FLP_CP.Visible = L_CP.Visible = TB_HeightAbs.Visible = TB_WeightAbs.Visible = pb7;
}
private void ClickScalarEntry(object sender, EventArgs e)
{
if (sender is not NumericUpDown nud || ModifierKeys != Keys.Control)
return;
nud.Value = PokeSizeUtil.GetRandomScalar();
}
}
}