PKHeX/Subforms/Save Editors/Gen6/SAV_SuperTrain.cs

151 lines
5.9 KiB
C#
Raw Normal View History

2014-07-31 22:06:48 +00:00
using System;
using System.Linq;
2014-07-31 22:06:48 +00:00
using System.Windows.Forms;
namespace PKHeX
{
public partial class SAV_SuperTrain : Form
{
public SAV_SuperTrain()
2014-07-31 22:06:48 +00:00
{
trba = Main.trainingbags;
2014-07-31 22:06:48 +00:00
trba[0] = "---";
offsetTime = SAV.SuperTrain + 0x08;
offsetSpec = SAV.SuperTrain + 0x188;
offsetVal = SAV.SuperTrain + 0x18A;
2014-07-31 22:06:48 +00:00
InitializeComponent();
Util.TranslateInterface(this, Main.curlanguage);
string[] stages = Main.trainingstage;
2014-07-31 22:06:48 +00:00
listBox1.Items.Clear();
for (int i = 0; i < 30; i++)
listBox1.Items.Add((i + 1).ToString("00") + " - " + stages[i + 2]);
2014-11-22 07:23:48 +00:00
2014-07-31 22:06:48 +00:00
setup();
}
2016-02-10 08:33:42 +00:00
private readonly SAV6 SAV = new SAV6(Main.SAV.Data);
private readonly string[] trba;
private readonly int offsetVal;
private readonly int offsetTime;
private readonly int offsetSpec;
2014-07-31 22:06:48 +00:00
private void setup()
{
dataGridView1.Rows.Clear();
dataGridView1.Columns.Clear();
{
CB_Species.DisplayMember = "Text";
CB_Species.ValueMember = "Value";
CB_Species.DataSource = new BindingSource(Main.SpeciesDataSource.Where(s => s.Value <= SAV.MaxSpeciesID), null);
2014-07-31 22:06:48 +00:00
CB_S2.DisplayMember = "Text";
CB_S2.ValueMember = "Value";
CB_S2.DataSource = new BindingSource(Main.SpeciesDataSource.Where(s => s.Value <= SAV.MaxSpeciesID), null);
2014-07-31 22:06:48 +00:00
}
listBox1.SelectedIndex = 0;
fillTrainingBags();
CB_S2.SelectedValue = (int)BitConverter.ToUInt16(SAV.Data, offsetSpec + 4 * 30);
TB_Time1.Text = BitConverter.ToSingle(SAV.Data, offsetTime + 4 * 30).ToString();
TB_Time2.Text = BitConverter.ToSingle(SAV.Data, offsetTime + 4 * 31).ToString();
2014-07-31 22:06:48 +00:00
}
private void fillTrainingBags()
{
DataGridViewColumn dgvIndex = new DataGridViewTextBoxColumn();
{
dgvIndex.HeaderText = "Slot";
dgvIndex.DisplayIndex = 0;
dgvIndex.Width = 25;
dgvIndex.ReadOnly = true;
dgvIndex.DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;
}
DataGridViewComboBoxColumn dgvBag = new DataGridViewComboBoxColumn
2014-07-31 22:06:48 +00:00
{
DisplayStyle = DataGridViewComboBoxDisplayStyle.Nothing
};
{
foreach (string t in trba)
if (t.Length > 0)
dgvBag.Items.Add(t);
2014-11-22 07:23:48 +00:00
2014-07-31 22:06:48 +00:00
dgvBag.DisplayIndex = 1;
dgvBag.Width = 135;
dgvBag.FlatStyle = FlatStyle.Flat;
}
dataGridView1.Columns.Add(dgvIndex);
dataGridView1.Columns.Add(dgvBag);
dataGridView1.Rows.Add(12);
int offset = SAV.SuperTrain + 0x308;
2014-07-31 22:06:48 +00:00
for (int i = 0; i < 12; i++)
{
dataGridView1.Rows[i].Cells[0].Value = (i + 1).ToString();
dataGridView1.Rows[i].Cells[1].Value = trba[SAV.Data[offset + i]];
2014-07-31 22:06:48 +00:00
}
}
private void dropclick(object sender, DataGridViewCellEventArgs e)
{
try
{
if (e.ColumnIndex != 1) return;
ComboBox comboBox = (ComboBox)dataGridView1.EditingControl;
comboBox.DroppedDown = true;
2014-07-31 22:06:48 +00:00
}
catch { }
2014-07-31 22:06:48 +00:00
}
private void changeListRecordSelection(object sender, EventArgs e)
{
int index = listBox1.SelectedIndex;
if (index < 0) return;
TB_Time.Text = BitConverter.ToSingle(SAV.Data, offsetTime + 4 * index).ToString();
TB_Unk.Text = BitConverter.ToUInt16(SAV.Data, offsetVal + 4 * index).ToString();
CB_Species.SelectedValue = (int)BitConverter.ToUInt16(SAV.Data, offsetSpec + 4 * index);
2014-07-31 22:06:48 +00:00
}
private void B_Save_Click(object sender, EventArgs e)
{
// Copy Bags
2014-12-12 05:45:01 +00:00
byte[] bagarray = new byte[12];
2014-07-31 22:06:48 +00:00
int emptyslots = 0;
for (int i = 0; i < 12; i++)
{
string bag = dataGridView1.Rows[i].Cells[1].Value.ToString();
if (Array.IndexOf(trba, bag) == 0)
{
emptyslots++;
continue;
}
bagarray[i - emptyslots] = (byte)Array.IndexOf(trba, bag);
}
try { BitConverter.GetBytes(float.Parse(TB_Time1.Text)).CopyTo(SAV.Data, offsetTime + 4 * 30); } catch { }
try { BitConverter.GetBytes(float.Parse(TB_Time2.Text)).CopyTo(SAV.Data, offsetTime + 4 * 31); } catch { }
BitConverter.GetBytes((ushort)Util.getIndex(CB_S2)).CopyTo(SAV.Data, offsetSpec + 4 * 30);
bagarray.CopyTo(SAV.Data, SAV.SuperTrain + 0x308);
Array.Copy(SAV.Data, Main.SAV.Data, Main.SAV.Data.Length);
Main.SAV.Edited = true;
Close();
2014-07-31 22:06:48 +00:00
}
private void B_Cancel_Click(object sender, EventArgs e)
{
Close();
2014-07-31 22:06:48 +00:00
}
private void changeRecordSpecies(object sender, EventArgs e)
{
int index = listBox1.SelectedIndex;
if (index < 0) return;
BitConverter.GetBytes(Util.getIndex(CB_Species)).CopyTo(SAV.Data, offsetSpec + 4 * index);
2014-07-31 22:06:48 +00:00
}
private void changeRecordVal(object sender, EventArgs e)
{
int index = listBox1.SelectedIndex;
if (index < 0) return;
try { BitConverter.GetBytes(ushort.Parse(TB_Unk.Text)).CopyTo(SAV.Data, offsetVal + 4 * index); } catch { }
2014-07-31 22:06:48 +00:00
}
private void changeRecordTime(object sender, EventArgs e)
{
int index = listBox1.SelectedIndex;
if (index < 0) return;
try { BitConverter.GetBytes(float.Parse(TB_Time.Text)).CopyTo(SAV.Data, offsetTime + 4 * index); } catch { }
2014-07-31 22:06:48 +00:00
}
}
}