mirror of
https://github.com/kwsch/PKHeX
synced 2024-11-24 13:03:06 +00:00
a48642cb32
Previously only date was editable and the time was not considered. New logic takes first datetime, removes seconds, then adds the second datetime's seconds. Since the second datetime's date is 2000, 1, 1, the resulting value is just totalseconds (since midnight) regardless of date (which is the first datetime).
649 lines
No EOL
29 KiB
C#
649 lines
No EOL
29 KiB
C#
using System;
|
|
using System.Drawing;
|
|
using System.Linq;
|
|
using System.Windows.Forms;
|
|
|
|
namespace PKHeX
|
|
{
|
|
public partial class SAV_Trainer : Form
|
|
{
|
|
private readonly SAV6 SAV = new SAV6(Main.SAV.Data);
|
|
public SAV_Trainer()
|
|
{
|
|
InitializeComponent();
|
|
if (!Main.unicode)
|
|
try { TB_OTName.Font = PKX.getPKXFont(11); }
|
|
catch (Exception e) { Util.Alert("Font loading failed...", e.ToString()); }
|
|
|
|
Util.TranslateInterface(this, Main.curlanguage);
|
|
|
|
MaisonRecords = new[]
|
|
{
|
|
TB_MCSN,TB_MCSS,TB_MBSN,TB_MBSS,
|
|
TB_MCDN,TB_MCDS,TB_MBDN,TB_MBDS,
|
|
TB_MCTN,TB_MCTS,TB_MBTN,TB_MBTS,
|
|
TB_MCRN,TB_MCRS,TB_MBRN,TB_MBRS,
|
|
TB_MCMN,TB_MCMS,TB_MBMN,TB_MBMS,
|
|
};
|
|
|
|
L_MultiplayerSprite.Enabled = CB_MultiplayerSprite.Enabled = Main.SAV.ORAS;
|
|
L_Style.Visible = TB_Style.Visible = SAV.XY;
|
|
if (!SAV.XY)
|
|
TC_Editor.TabPages.Remove(Tab_Appearance);
|
|
if (SAV.ORASDEMO)
|
|
{
|
|
TC_Editor.TabPages.Remove(Tab_Maison);
|
|
TC_Editor.TabPages.Remove(Tab_Multiplayer);
|
|
}
|
|
|
|
editing = true;
|
|
getComboBoxes();
|
|
getTextBoxes();
|
|
getBadges();
|
|
|
|
statdata = new[] {
|
|
"0x000", "0x000", // Steps taken?
|
|
"0x004", "0x004", // Minutes Played / Pokemon Encountered?
|
|
"0x008", "0x008",
|
|
"0x00C", "0x00C",
|
|
"0x010", "0x010",
|
|
"0x014", "0x014",
|
|
"0x018", "0x018",
|
|
"0x01C", "Pokémon Captured",
|
|
"0x020", "0x020",
|
|
"0x024", "Eggs Hatched",
|
|
"0x028", "Pokémon Evolved",
|
|
"0x02C", "0x02C",
|
|
"0x030", "~People Passed", // I think the following ones are Passerby actions...
|
|
"0x034", "0x034",
|
|
"0x038", "0x038",
|
|
"0x03C", "0x03C",
|
|
"0x040", "Link Trades",
|
|
"0x044", "Link Battles",
|
|
"0x048", "Link Battle Wins",
|
|
"0x04C", "0x04C",
|
|
"0x050", "0x050",
|
|
"0x054", "0x054",
|
|
"0x058", "0x058",
|
|
"0x05C", "0x05C",
|
|
"0x060", "0x060",
|
|
"0x064", "0x064",
|
|
"0x068", "0x068",
|
|
"0x06C", "0x06C",
|
|
"0x070", "0x070",
|
|
"0x074", "0x074",
|
|
"0x078", "0x078",
|
|
"0x07C", "0x07C",
|
|
"0x080", "0x080",
|
|
"0x084", "0x084",
|
|
"0x088", "BP Earned",
|
|
"0x08C", "0x08C",
|
|
"0x090", "0x090",
|
|
"0x094", "0x094",
|
|
"0x098", "0x098",
|
|
"0x09C", "0x09C",
|
|
"0x0A0", "0x0A0",
|
|
"0x0A4", "0x0A4",
|
|
"0x0A8", "0x0A8",
|
|
"0x0AC", "0x0AC",
|
|
"0x0B0", "0x0B0",
|
|
"0x0B4", "0x0B4",
|
|
"0x0B8", "0x0B8",
|
|
"0x0BC", "0x0BC",
|
|
"0x0C0", "0x0C0",
|
|
"0x0C4", "0x0C4",
|
|
"0x0C8", "0x0C8",
|
|
"0x0CC", "0x0CC",
|
|
"0x0D0", "0x0D0",
|
|
"0x0D4", "0x0D4",
|
|
"0x0D8", "0x0D8",
|
|
"0x0DC", "0x0DC",
|
|
"0x0E0", "0x0E0",
|
|
"0x0E4", "0x0E4",
|
|
"0x0E8", "0x0E8",
|
|
"0x0EC", "Nice! Received",
|
|
"0x0F0", "Birthday Wishes",
|
|
"0x0F4", "Total People Met Online",
|
|
"0x0F8", "0x0F8",
|
|
//"0x0FC", "Current Pokemiles",
|
|
"0x100", "Obtained Pokemiles",
|
|
"0x104", "0x104",
|
|
"0x108", "0x108",
|
|
"0x10C", "Super Training Clears",
|
|
"0x110", "Judge Evaluations",
|
|
"0x114", "0x114",
|
|
"0x118", "0x118", // Link Trades?
|
|
"0x11C", "Link Battle", // Wins", // ?
|
|
"0x120", "0x120", // Link Battle Losses?
|
|
"0x124", "0x124",
|
|
"0x128", "0x128",
|
|
"0x12C", "0x12C",
|
|
"0x130", "0x130",
|
|
"0x134", "0x134",
|
|
"0x138", "0x138",
|
|
"0x13C", "0x13C",
|
|
"0x140", "Flags Captured",
|
|
"0x144", "0x144",
|
|
"0x148", "0x148",
|
|
"0x14C", "0x14C",
|
|
"0x150", "0x150",
|
|
"0x154", "0x154",
|
|
"0x158", "0x158",
|
|
"0x15C", "0x15C",
|
|
"0x160", "0x160",
|
|
"0x164", "0x164",
|
|
"0x168", "0x168",
|
|
"0x16C", "0x16C",
|
|
"0x170", "0x170",
|
|
"0x174", "0x174",
|
|
"0x178", "0x178",
|
|
"0x17C", "0x17C",
|
|
"0x180", "0x180",
|
|
"0x184", "0x184",
|
|
"0x188", "0x188",
|
|
"0x18C", "0x18C",
|
|
"0x190", "0x190",
|
|
"0x194", "0x194",
|
|
"0x198", "0x198",
|
|
"0x19C", "0x19C",
|
|
"0x1A0", "0x1A0",
|
|
"0x1A4", "0x1A4",
|
|
"0x1A8", "0x1A8",
|
|
"0x1AC", "0x1AC",
|
|
"0x1B0", "0x1B0",
|
|
"0x1B4", "0x1B4",
|
|
"0x1B8", "0x1B8",
|
|
"0x1BC", "Battle Tests",
|
|
"0x1C0", "0x1C0",
|
|
"0x1C4", "0x1C4",
|
|
"0x1C8", "0x1C8",
|
|
"0x1CC", "0x1CC",
|
|
"0x1D0", "0x1D0",
|
|
"0x1D4", "0x1D4",
|
|
"0x1D8", "0x1D8",
|
|
"0x1DC", "0x1DC",
|
|
"0x1E0", "0x1E0",
|
|
"0x1E4", "0x1E4",
|
|
"0x1E8", "0x1E8",
|
|
"0x1EC", "0x1EC",
|
|
"0x1F0", "0x1F0",
|
|
"0x1F4", "0x1F4",
|
|
"0x1F8", "0x1F8",
|
|
"0x1FC", "0x1FC",
|
|
"0x200", "0x200",
|
|
"0x204", "0x204",
|
|
"0x208", "0x208",
|
|
"0x20C", "0x20C",
|
|
"0x210", "0x210",
|
|
"0x214", "0x214",
|
|
"0x218", "0x218",
|
|
"0x21C", "0x21C",
|
|
"0x220", "0x220",
|
|
"0x224", "0x224",
|
|
"0x228", "0x228",
|
|
"0x22C", "0x22C",
|
|
"0x230", "0x230",
|
|
"0x234", "0x234",
|
|
"0x238", "0x238",
|
|
"0x23C", "0x23C",
|
|
"0x240", "0x240",
|
|
"0x244", "0x244",
|
|
"0x248", "0x248",
|
|
"0x24C", "0x24C",
|
|
"0x250", "0x250",
|
|
"0x254", "0x254",
|
|
"0x258", "0x258",
|
|
}; // Offset, Title. Horrible implementation, but works.
|
|
|
|
CB_Stats.Items.Clear();
|
|
for (int i = 0; i < statdata.Length / 2; i++)
|
|
CB_Stats.Items.Add(statdata[2 * i + 1]);
|
|
CB_Stats.SelectedIndex = 0;
|
|
}
|
|
private readonly string[] statdata;
|
|
private bool editing;
|
|
private readonly ToolTip Tip1 = new ToolTip(), Tip2 = new ToolTip();
|
|
private readonly MaskedTextBox[] MaisonRecords;
|
|
|
|
private void getComboBoxes()
|
|
{
|
|
var dsregion_list = new[] {
|
|
new { Text = "NA/SA", Value = 1 },
|
|
new { Text = "EUR", Value = 2 },
|
|
new { Text = "JPN", Value = 0 },
|
|
new { Text = "CN", Value = 4 },
|
|
new { Text = "KOR", Value = 5 },
|
|
new { Text = "TW", Value = 6 }
|
|
};
|
|
|
|
var language_list = new[] {
|
|
new { Text = "ENG", Value = 2 },
|
|
new { Text = "JPN", Value = 1 },
|
|
new { Text = "FRE", Value = 3 },
|
|
new { Text = "ITA", Value = 4 },
|
|
new { Text = "GER", Value = 5 },
|
|
new { Text = "SPA", Value = 7 },
|
|
new { Text = "KOR", Value = 8 }
|
|
};
|
|
|
|
CB_3DSReg.DisplayMember = "Text";
|
|
CB_3DSReg.ValueMember = "Value";
|
|
CB_3DSReg.DataSource = dsregion_list;
|
|
CB_Language.DisplayMember = "Text";
|
|
CB_Language.ValueMember = "Value";
|
|
CB_Language.DataSource = language_list;
|
|
|
|
CB_Country.DisplayMember = "Text";
|
|
CB_Country.ValueMember = "Value";
|
|
CB_Region.DisplayMember = "Text";
|
|
CB_Region.ValueMember = "Value";
|
|
Main.setCountrySubRegion(CB_Country, "countries");
|
|
|
|
var oras_sprite_list = new[] {
|
|
//new { Text = "Calem", Value = 00 },
|
|
//new { Text = "Serena", Value = 01 },
|
|
new { Text = "Sycamore", Value = 02 },
|
|
new { Text = "Diantha", Value = 03 },
|
|
new { Text = "Wikstrom", Value = 04 },
|
|
new { Text = "Malva", Value = 05 },
|
|
new { Text = "Drasna", Value = 06 },
|
|
new { Text = "Siebold", Value = 07 },
|
|
new { Text = "Viola", Value = 08 },
|
|
new { Text = "Grant", Value = 09 },
|
|
new { Text = "Korrina", Value = 10 },
|
|
new { Text = "Ramos", Value = 11 },
|
|
new { Text = "Clemont", Value = 12 },
|
|
new { Text = "Valerie", Value = 13 },
|
|
new { Text = "Olympia", Value = 14 },
|
|
new { Text = "Wulfric", Value = 15 },
|
|
new { Text = "Youngster (XY)", Value = 16 },
|
|
//new { Text = "(None)", Value = 17 },
|
|
new { Text = "Lass (XY)", Value = 18 },
|
|
new { Text = "Lady (XY)", Value = 19 },
|
|
new { Text = "Schoolgirl (XY)", Value = 20 },
|
|
new { Text = "Battle Girl (XY)", Value = 21 },
|
|
new { Text = "Schoolboy (XY)", Value = 22 },
|
|
new { Text = "Rich Boy (XY)", Value = 23 },
|
|
new { Text = "Female Ace Trainer (XY)", Value = 24 },
|
|
//new { Text = "(None)", Value = 25 },
|
|
new { Text = "Female Ranger (XY)", Value = 26 },
|
|
new { Text = "Male Ace Trainer (XY)", Value = 27 },
|
|
new { Text = "Male Ranger (XY)", Value = 28 },
|
|
new { Text = "Madame", Value = 29 },
|
|
new { Text = "Monsieur", Value = 30 },
|
|
new { Text = "Black Belt (XY)", Value = 31 },
|
|
new { Text = "Male Punk (XY)", Value = 32 },
|
|
new { Text = "Fairy Tale Girl (XY)", Value = 33 },
|
|
new { Text = "Shauna", Value = 34 },
|
|
new { Text = "Tierno", Value = 35 },
|
|
new { Text = "Trevor", Value = 36 },
|
|
new { Text = "Brendan", Value = 37 },
|
|
new { Text = "May", Value = 38 },
|
|
//new { Text = "(None)", Value = 39 },
|
|
new { Text = "Hiker", Value = 40 },
|
|
new { Text = "Aroma Lady", Value = 41 },
|
|
new { Text = "Male Schoolkid", Value = 42 },
|
|
new { Text = "Female Schoolkid", Value = 43 },
|
|
new { Text = "Black Belt (ORAS)", Value = 44 },
|
|
new { Text = "Battle Girl (ORAS)", Value = 45 },
|
|
new { Text = "Pokemaniac (ORAS)", Value = 46 },
|
|
new { Text = "Fairy Tale Girl (ORAS)", Value = 47 },
|
|
new { Text = "Victor Winstrate", Value = 48 },
|
|
new { Text = "Victoria Winstrate", Value = 49 },
|
|
new { Text = "Male Ranger (ORAS)", Value = 50 },
|
|
new { Text = "Female Ranger (ORAS)", Value = 51 },
|
|
new { Text = "Male Swimmer (ORAS)", Value = 52 },
|
|
new { Text = "Hex Maniac", Value = 53 },
|
|
new { Text = "Male Ace Trainer (ORAS)", Value = 54 },
|
|
new { Text = "Female Ace Trainer (ORAS)", Value = 55 },
|
|
new { Text = "Street Thug", Value = 56 },
|
|
new { Text = "Delinquent", Value = 57 },
|
|
new { Text = "Male Expert", Value = 58 },
|
|
new { Text = "Female Expert", Value = 59 },
|
|
new { Text = "Lady (ORAS)", Value = 60 },
|
|
new { Text = "Rich Boy (ORAS)", Value = 61 },
|
|
new { Text = "Ninja Boy", Value = 62 },
|
|
new { Text = "Beauty (ORAS)", Value = 63 },
|
|
new { Text = "Guitarist", Value = 64 },
|
|
new { Text = "Lass (ORAS)", Value = 65 },
|
|
new { Text = "Male Breeder (ORAS)", Value = 66 },
|
|
new { Text = "Female Breeder (ORAS)", Value = 67 },
|
|
new { Text = "Camper", Value = 68 },
|
|
new { Text = "Picnicker", Value = 69 },
|
|
new { Text = "Wally", Value = 70 },
|
|
new { Text = "Steven", Value = 71 },
|
|
new { Text = "Maxie", Value = 72 },
|
|
new { Text = "Archie", Value = 73 },
|
|
new { Text = "Pokécenter", Value = 0x80 },
|
|
new { Text = "Gift", Value = 0x81 },
|
|
};
|
|
|
|
CB_MultiplayerSprite.DisplayMember = "Text";
|
|
CB_MultiplayerSprite.ValueMember = "Value";
|
|
CB_MultiplayerSprite.DataSource = oras_sprite_list;
|
|
|
|
L_Vivillon.Text = Main.specieslist[666] + ":";
|
|
Main.setForms(666, CB_Vivillon);
|
|
}
|
|
private void getBadges()
|
|
{
|
|
// Fetch Badges
|
|
Bitmap[] bma = Main.SAV.ORAS ?
|
|
new[] {
|
|
Properties.Resources.badge_01, // ORAS Badges
|
|
Properties.Resources.badge_02,
|
|
Properties.Resources.badge_03,
|
|
Properties.Resources.badge_04,
|
|
Properties.Resources.badge_05,
|
|
Properties.Resources.badge_06,
|
|
Properties.Resources.badge_07,
|
|
Properties.Resources.badge_08,
|
|
} :
|
|
new [] {
|
|
Properties.Resources.badge_1, // XY Badges
|
|
Properties.Resources.badge_2,
|
|
Properties.Resources.badge_3,
|
|
Properties.Resources.badge_4,
|
|
Properties.Resources.badge_5,
|
|
Properties.Resources.badge_6,
|
|
Properties.Resources.badge_7,
|
|
Properties.Resources.badge_8,
|
|
};
|
|
CheckBox[] cba = { CHK_Badge1, CHK_Badge2, CHK_Badge3, CHK_Badge4, CHK_Badge5, CHK_Badge6, CHK_Badge7, CHK_Badge8, };
|
|
PictureBox[] pba = { PB_Badge1, PB_Badge2, PB_Badge3, PB_Badge4, PB_Badge5, PB_Badge6, PB_Badge7, PB_Badge8, };
|
|
|
|
for (int i = 0; i < 8; i++)
|
|
pba[i].Image = Util.ChangeOpacity(bma[i], !cba[i].Checked ? 0.1 : 1);
|
|
}
|
|
private void getTextBoxes()
|
|
{
|
|
int badgeval = SAV.Badges;
|
|
CheckBox[] cba = { CHK_Badge1, CHK_Badge2, CHK_Badge3, CHK_Badge4, CHK_Badge5, CHK_Badge6, CHK_Badge7, CHK_Badge8, };
|
|
for (int i = 0; i < 8; i++)
|
|
cba[i].Checked = (badgeval & 1 << i) != 0;
|
|
|
|
// Get Data
|
|
string OT_NAME = SAV.OT;
|
|
|
|
CB_Game.SelectedIndex = SAV.Game - 0x18;
|
|
CB_Gender.SelectedIndex = SAV.Gender;
|
|
|
|
// Display Data
|
|
TB_OTName.Text = OT_NAME;
|
|
|
|
MT_TID.Text = SAV.TID.ToString("00000");
|
|
MT_SID.Text = SAV.SID.ToString("00000");
|
|
MT_Money.Text = SAV.Money.ToString();
|
|
|
|
TB_Saying1.Text = SAV.Saying1;
|
|
TB_Saying2.Text = SAV.Saying2;
|
|
TB_Saying3.Text = SAV.Saying3;
|
|
TB_Saying4.Text = SAV.Saying4;
|
|
TB_Saying5.Text = SAV.Saying5;
|
|
|
|
CB_Country.SelectedValue = SAV.Country;
|
|
CB_Region.SelectedValue = SAV.SubRegion;
|
|
CB_3DSReg.SelectedValue = SAV.ConsoleRegion;
|
|
CB_Language.SelectedValue = SAV.Language;
|
|
|
|
// Maison Data
|
|
for (int i = 0; i < MaisonRecords.Length; i++)
|
|
MaisonRecords[i].Text = SAV.getMaisonStat(i).ToString();
|
|
|
|
NUD_M.Value = SAV.M;
|
|
// Sanity Check Map Coordinates
|
|
if (!GB_Map.Enabled || SAV.X%0.5 != 0 || SAV.Z%0.5 != 0 || SAV.Y%0.5 != 0)
|
|
GB_Map.Enabled = false;
|
|
else try
|
|
{
|
|
NUD_X.Value = (decimal)SAV.X;
|
|
NUD_Z.Value = (decimal)SAV.Z;
|
|
NUD_Y.Value = (decimal)SAV.Y;
|
|
}
|
|
catch { GB_Map.Enabled = false; }
|
|
|
|
// Load BP and PokeMiles
|
|
TB_BP.Text = SAV.BP.ToString();
|
|
TB_PM.Text = SAV.getPSSStat(0xFC/4).ToString();
|
|
|
|
TB_Style.Text = SAV.Style.ToString();
|
|
|
|
// Load Play Time
|
|
MT_Hours.Text = Main.SAV.PlayedHours.ToString();
|
|
MT_Minutes.Text = Main.SAV.PlayedMinutes.ToString();
|
|
MT_Seconds.Text = Main.SAV.PlayedSeconds.ToString();
|
|
|
|
// Load PSS Sprite
|
|
CB_MultiplayerSprite.SelectedValue = SAV.Sprite;
|
|
PB_Sprite.Image = (Image)Properties.Resources.ResourceManager.GetObject("tr_" + SAV.Sprite.ToString("00"));
|
|
|
|
if (SAV.XY)
|
|
{
|
|
// Load Clothing Data
|
|
int hat = SAV.Data[SAV.TrainerCard + 0x31] >> 3;
|
|
int haircolor = SAV.Data[SAV.TrainerCard + 0x31] & 7;
|
|
MT_Hat.Text = hat.ToString();
|
|
MT_HairColor.Text = haircolor.ToString();
|
|
MT_14030.Text = SAV.Data[SAV.TrainerCard + 0x30].ToString();
|
|
MT_14031.Text = SAV.Data[SAV.TrainerCard + 0x31].ToString();
|
|
MT_14032.Text = SAV.Data[SAV.TrainerCard + 0x32].ToString();
|
|
MT_14033.Text = SAV.Data[SAV.TrainerCard + 0x33].ToString();
|
|
MT_14034.Text = SAV.Data[SAV.TrainerCard + 0x34].ToString();
|
|
MT_14035.Text = SAV.Data[SAV.TrainerCard + 0x35].ToString();
|
|
MT_14036.Text = SAV.Data[SAV.TrainerCard + 0x36].ToString();
|
|
MT_14037.Text = SAV.Data[SAV.TrainerCard + 0x37].ToString();
|
|
MT_14038.Text = SAV.Data[SAV.TrainerCard + 0x38].ToString();
|
|
MT_14039.Text = SAV.Data[SAV.TrainerCard + 0x39].ToString();
|
|
MT_1403A.Text = SAV.Data[SAV.TrainerCard + 0x3A].ToString();
|
|
MT_1403B.Text = SAV.Data[SAV.TrainerCard + 0x3B].ToString();
|
|
MT_1403C.Text = SAV.Data[SAV.TrainerCard + 0x3C].ToString();
|
|
MT_1403D.Text = SAV.Data[SAV.TrainerCard + 0x3D].ToString();
|
|
MT_1403E.Text = SAV.Data[SAV.TrainerCard + 0x3E].ToString();
|
|
MT_1403F.Text = SAV.Data[SAV.TrainerCard + 0x3F].ToString();
|
|
}
|
|
|
|
CB_Vivillon.SelectedIndex = SAV.Vivillon;
|
|
CAL_LastSavedDate.Value = new DateTime(SAV.LastSavedYear, SAV.LastSavedMonth, SAV.LastSavedDay);
|
|
CAL_LastSavedTime.Value = new DateTime(2000, 1, 1, SAV.LastSavedHour, SAV.LastSavedMinute, 0);
|
|
CAL_AdventureStartDate.Value = new DateTime(2000, 1, 1).AddSeconds(SAV.SecondsToStart);
|
|
CAL_AdventureStartTime.Value = new DateTime(2000, 1, 1).AddSeconds(SAV.SecondsToStart % 86400);
|
|
}
|
|
private void save()
|
|
{
|
|
SAV.Game = (byte)(CB_Game.SelectedIndex + 0x18);
|
|
SAV.Gender = (byte)CB_Gender.SelectedIndex;
|
|
|
|
SAV.TID = (ushort)Util.ToUInt32(MT_TID.Text);
|
|
SAV.SID = (ushort)Util.ToUInt32(MT_SID.Text);
|
|
SAV.Money = Util.ToUInt32(MT_Money.Text);
|
|
SAV.SubRegion = Util.getIndex(CB_Region);
|
|
SAV.Country = Util.getIndex(CB_Country);
|
|
SAV.ConsoleRegion = Util.getIndex(CB_3DSReg);
|
|
SAV.Language = Util.getIndex(CB_Language);
|
|
|
|
SAV.OT = TB_OTName.Text;
|
|
|
|
SAV.Saying1 = TB_Saying1.Text;
|
|
SAV.Saying2 = TB_Saying2.Text;
|
|
SAV.Saying3 = TB_Saying3.Text;
|
|
SAV.Saying4 = TB_Saying4.Text;
|
|
SAV.Saying5 = TB_Saying5.Text;
|
|
|
|
// Copy Maison Data in
|
|
for (int i = 0; i < MaisonRecords.Length; i++)
|
|
SAV.setMaisonStat(i, ushort.Parse(MaisonRecords[i].Text));
|
|
|
|
// Copy Position
|
|
if (GB_Map.Enabled)
|
|
{
|
|
SAV.M = (int)NUD_M.Value;
|
|
SAV.X = (float)NUD_X.Value;
|
|
SAV.Z = (float)NUD_Z.Value;
|
|
SAV.Y = (float)NUD_Y.Value;
|
|
}
|
|
|
|
SAV.BP = ushort.Parse(TB_BP.Text);
|
|
// Set Current PokéMiles
|
|
SAV.setPSSStat(0xFC / 4, Util.ToUInt32(TB_PM.Text));
|
|
// Set Max Obtained Pokémiles
|
|
SAV.setPSSStat(0x100 / 4, Util.ToUInt32(TB_PM.Text));
|
|
SAV.Style = byte.Parse(TB_Style.Text);
|
|
|
|
// Copy Badges
|
|
int badgeval = 0;
|
|
CheckBox[] cba = { CHK_Badge1, CHK_Badge2, CHK_Badge3, CHK_Badge4, CHK_Badge5, CHK_Badge6, CHK_Badge7, CHK_Badge8, };
|
|
for (int i = 0; i < 8; i++)
|
|
badgeval |= (cba[i].Checked ? 1 : 0) << i;
|
|
SAV.Badges = badgeval;
|
|
|
|
// Save PlayTime
|
|
SAV.PlayedHours = ushort.Parse(MT_Hours.Text);
|
|
SAV.PlayedMinutes = ushort.Parse(MT_Minutes.Text)%60;
|
|
SAV.PlayedSeconds = ushort.Parse(MT_Seconds.Text)%60;
|
|
|
|
// Sprite
|
|
SAV.Sprite = Convert.ToByte(CB_MultiplayerSprite.SelectedValue);
|
|
|
|
// Appearance
|
|
if (SAV.XY)
|
|
{
|
|
SAV.Data[SAV.TrainerCard + 0x30] = byte.Parse(MT_14030.Text);
|
|
SAV.Data[SAV.TrainerCard + 0x31] = (byte)(byte.Parse(MT_HairColor.Text) | (byte.Parse(MT_Hat.Text) << 3));
|
|
SAV.Data[SAV.TrainerCard + 0x32] = byte.Parse(MT_14032.Text);
|
|
SAV.Data[SAV.TrainerCard + 0x33] = byte.Parse(MT_14033.Text);
|
|
SAV.Data[SAV.TrainerCard + 0x34] = byte.Parse(MT_14034.Text);
|
|
SAV.Data[SAV.TrainerCard + 0x35] = byte.Parse(MT_14035.Text);
|
|
SAV.Data[SAV.TrainerCard + 0x36] = byte.Parse(MT_14036.Text);
|
|
SAV.Data[SAV.TrainerCard + 0x37] = byte.Parse(MT_14037.Text);
|
|
SAV.Data[SAV.TrainerCard + 0x38] = byte.Parse(MT_14038.Text);
|
|
SAV.Data[SAV.TrainerCard + 0x39] = byte.Parse(MT_14039.Text);
|
|
SAV.Data[SAV.TrainerCard + 0x3A] = byte.Parse(MT_1403A.Text);
|
|
SAV.Data[SAV.TrainerCard + 0x3B] = byte.Parse(MT_1403B.Text);
|
|
SAV.Data[SAV.TrainerCard + 0x3C] = byte.Parse(MT_1403C.Text);
|
|
SAV.Data[SAV.TrainerCard + 0x3D] = byte.Parse(MT_1403D.Text);
|
|
SAV.Data[SAV.TrainerCard + 0x3E] = byte.Parse(MT_1403E.Text);
|
|
SAV.Data[SAV.TrainerCard + 0x3F] = byte.Parse(MT_1403F.Text);
|
|
}
|
|
|
|
// Vivillon
|
|
SAV.Vivillon = CB_Vivillon.SelectedIndex;
|
|
|
|
int seconds = (int)(CAL_AdventureStartDate.Value - new DateTime(2000, 1, 1)).TotalSeconds;
|
|
seconds -= seconds%86400;
|
|
seconds += (int)(CAL_AdventureStartTime.Value - new DateTime(2000, 1, 1)).TotalSeconds;
|
|
SAV.SecondsToStart = seconds;
|
|
|
|
SAV.LastSavedYear = CAL_LastSavedDate.Value.Year;
|
|
SAV.LastSavedMonth = CAL_LastSavedDate.Value.Month;
|
|
SAV.LastSavedDay = CAL_LastSavedDate.Value.Day;
|
|
SAV.LastSavedHour = CAL_LastSavedTime.Value.Hour;
|
|
SAV.LastSavedMinute = CAL_LastSavedTime.Value.Minute;
|
|
}
|
|
|
|
private void clickOT(object sender, MouseEventArgs e)
|
|
{
|
|
TextBox tb = !(sender is TextBox) ? TB_OTName : sender as TextBox;
|
|
// Special Character Form
|
|
if (ModifierKeys != Keys.Control)
|
|
return;
|
|
|
|
if (Application.OpenForms.Cast<Form>().Any(form => form.Name == typeof(f2_Text).Name))
|
|
{ Util.Alert("Window is already open."); return; }
|
|
new f2_Text(tb).Show();
|
|
}
|
|
private void showTSV(object sender, EventArgs e)
|
|
{
|
|
uint TID = Util.ToUInt32(MT_TID.Text);
|
|
uint SID = Util.ToUInt32(MT_SID.Text);
|
|
uint tsv = PKX.getTSV(TID, SID);
|
|
Tip1.SetToolTip(MT_TID, "TSV: " + tsv.ToString("0000"));
|
|
Tip2.SetToolTip(MT_SID, "TSV: " + tsv.ToString("0000"));
|
|
}
|
|
|
|
private void B_Cancel_Click(object sender, EventArgs e)
|
|
{
|
|
Close();
|
|
}
|
|
private void B_Save_Click(object sender, EventArgs e)
|
|
{
|
|
save();
|
|
Main.SAV.Data = SAV.Data;
|
|
Main.SAV.Edited = true;
|
|
Close();
|
|
}
|
|
private void B_MaxCash_Click(object sender, EventArgs e)
|
|
{
|
|
MT_Money.Text = "9,999,999";
|
|
}
|
|
private void changeBadge(object sender, EventArgs e)
|
|
{
|
|
getBadges();
|
|
}
|
|
private void changeSpecial(object sender, EventArgs e)
|
|
{
|
|
MaskedTextBox box = sender as MaskedTextBox;
|
|
int val = Util.ToInt32(box.Text);
|
|
|
|
if (box == MT_HairColor)
|
|
box.Text = (val > 7 ? 7 : val).ToString();
|
|
if (box == MT_Hat)
|
|
box.Text = (val > 31 ? 31 : val).ToString();
|
|
}
|
|
private void change255(object sender, EventArgs e)
|
|
{
|
|
MaskedTextBox box = sender as MaskedTextBox;
|
|
if (box.Text == "") box.Text = "0";
|
|
if (Util.ToInt32(box.Text) > 255) box.Text = "255";
|
|
}
|
|
private void changeFFFF(object sender, EventArgs e)
|
|
{
|
|
MaskedTextBox box = sender as MaskedTextBox;
|
|
if (box.Text == "") box.Text = "0";
|
|
if (Util.ToInt32(box.Text) > 65535) box.Text = "65535";
|
|
}
|
|
private void changeStat(object sender, EventArgs e)
|
|
{
|
|
editing = true;
|
|
int offset = Convert.ToInt32(statdata[CB_Stats.SelectedIndex * 2].Substring(2), 16);
|
|
MT_Stat.Text = SAV.getPSSStat(offset/4).ToString();
|
|
L_Offset.Text = "0x" + offset.ToString("X3");
|
|
editing = false;
|
|
}
|
|
private void changeStatVal(object sender, EventArgs e)
|
|
{
|
|
if (editing) return;
|
|
int offset = Convert.ToInt32(statdata[CB_Stats.SelectedIndex * 2].Substring(2), 16);
|
|
SAV.setPSSStat(offset/4, uint.Parse(MT_Stat.Text));
|
|
}
|
|
private void giveAllAccessories(object sender, EventArgs e)
|
|
{
|
|
new byte[]
|
|
{
|
|
0xFE,0xFF,0xFF,0x7E,0xFF,0xFD,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
|
|
0xFF,0xEF,0xFF,0xFF,0xFF,0xF9,0xFF,0xFB,0xFF,0xF7,0xFF,0xFF,0x0F,0x00,0x00,0x00,
|
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0xFF,
|
|
0xFF,0x7E,0xFF,0xFD,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xEF,
|
|
0xFF,0xFF,0xFF,0xF9,0xFF,0xFB,0xFF,0xF7,0xFF,0xFF,0x0F,0x00,0x00,0x00,0x00,0x00,
|
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
|
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
|
|
}.CopyTo(SAV.Data, SAV.Accessories);
|
|
}
|
|
|
|
private void updateCountry(object sender, EventArgs e)
|
|
{
|
|
if (Util.getIndex(sender as ComboBox) > 0)
|
|
Main.setCountrySubRegion(CB_Region, "sr_" + Util.getIndex(sender as ComboBox).ToString("000"));
|
|
}
|
|
private void toggleBadge(object sender, EventArgs e)
|
|
{
|
|
int val = Convert.ToInt16(((PictureBox)sender).Name.Last().ToString()) - 1;
|
|
CheckBox[] chka = { CHK_Badge1, CHK_Badge2, CHK_Badge3, CHK_Badge4, CHK_Badge5, CHK_Badge6, CHK_Badge7, CHK_Badge8 };
|
|
chka[val].Checked = !chka[val].Checked;
|
|
}
|
|
|
|
private void CB_Multi_SelectedIndexChanged(object sender, EventArgs e)
|
|
{
|
|
PB_Sprite.Image = (Image)Properties.Resources.ResourceManager.GetObject(Main.SAV.ORAS || Main.SAV.ORASDEMO ? "tr_" + Util.getIndex(CB_MultiplayerSprite).ToString("00") : "tr_00");
|
|
}
|
|
}
|
|
} |