Should only use Util.getIndex when a BindingSource is set with a
retrievable value. The method will now throw an exception instead of
handling it to let the programmer know that the wrong fetch method was
used.
Fixes crash with one character executable name. Used command line
argument 0 to detect filename instead of Process.GetCurrentProcess()
System.Media added to using, no more System.ETC within the main form.
Moved a lot of shortcut/button functions to the main menu; should be
much neater in terms of presentation.
Split up Box Load/Dump.
Tweaked the Translation function in Util to properly find every
menustrip items.
Translation files updated with new Menu layout.
Also made the form always launch in max size, thus removing the 'Toggle
Box Interface' option.
Transition from modifying byte arrays to just having objects mediate the
conversion.
Farewell pk2pk!
The PK# objects can convert up to the next generation through their own
methods; doing this required having class structures for all generations
:)
Program should now be able to handle imported PGFs; due to no gen5 save
data being available, that data has to be fabricated. User has to enter
in their OT/ID/Version details, but a skeleton to make it legal is the
default data.
Memories won't be modified if the window has it disabled
Geolocations won't be modified if the Pokemon is an event Pokemon and is
so-far untraded.
Misc change: initializing boxes won't do unnecessary calcs.
Shift click setting is not accessible without the hotkey, not going to
add it as a Right Click Menu.
Main had to expose more methods (to access info from tabs); standardized
all references to the database path as well.
formInitialized is for closing the splash screen and showing the main
form.
fieldsInitialized is for setting up and not running updates until fields
are ready to be updated.
Arceus is now the initial species instead of language dependent
(Abomasnow).
No longer short circuits to true when loading a blank file on startup.
Accomplished by storing the old value, temporarily setting to false and
then setting back when finished.
Thanks AibotNya for bringing this to my attention!
No functionality is changed; just clearing up some mud.
(306 is to allow 10px on each side of the tab control)
Added an Edited property for the save
blank slot (encrypted) is initialized once and can be used elsewhere
instead of constantly being recreated for no reason.
Fixed having 32 boxes for non-saves
All SAV editing forms now set the Edited flag when saving->close.
Probably breaks a thing or two... time to get testing after this new
commit.
Wrapping the stored 'savefile' into an object which handles its use
allows a clearer separation of function and easier maintenance or future
updates.
May eventually move all get/sets for each form to allow property
fetching from any window, all logic handled within the class.
There's a few ways to finish implementing, as the program needs a way to
access Trainer Information on the fly. Quick and dirty way is to add new
global variables and set them when a save file is loaded, and a cleaner
way would be to move the 'savefile' variable into the sav class and do
all accessing from there.
Not yet decided on which. For now, the added items and code still do
nothing.
Removed unneeded picturebox array (duplicate of slotpictureboxes)
Removed temporary variable 'picturebox', just straight up compare to
null.
Deleting now instantly sets the picture to null, instead of generating
the image. (might not have been the best idea if I somehow decided to
change slot filling)
Empty slots now instantly return null (empty) for their image instead of
doing layering.
Eggs cannot have memories, and have all edits disabled.
When a pk6 is saved, memories will be cleared if they should not be
present.
Fixed empty regions showing up with data
Fixed not being able to edit the first georegion for an untraded Pokemon
All lock-outs for editing should be correct now.
'pkx' array was dummied out, resulting in the pk6 data not receiving the
party stats for writing.
Old bug: Having a Moveset with 1--4 (gap of two) would only remove one
of the blank move slots. Added method in the PK6 class for the (now
correct) fix-code; other fixes that are done when saving are now done in
separate methods as well.
Same functionality as the previous commit's adding of Max/Min stats for
IV/EV; this one should be easier to do (Control click the textbox to
max, alt to minimize/zero).
Removed SavePKX / OpenPKX; they are only used inside one method and
don't need to be persistent.
Control to modify IVs, Alt to modify EVs
Left click to set to 31 (or max remaining EVs)
Right click to set to 0.
Feels much better with the Key being the IV/EV switch, not the
left/right click (for left/right column editing).
Think of it as L(oad)/R(eset) 👍
Can't find any more problems; found an existing bug when opening the
Memory editor where it did not fetch the current Friendship or set the
final Friendship back.
Introduced the fully editable PK6 class object, which is now used by
PKHeX's pk6 editor, as well as updated the Box Data Report. Readability
should be increased as no
Includes bug fixes:
Odaxis' report regarding Event Flag Editor
Showdown sets using "Trait" instead of "Ability" (old old style) now can
be read.
Imported showdown sets will not use the imported gender label (instead
uses the current style, same 'value')
If the user were to set to the last slot, the setParty method would
trickle the data down, but the getQuickFiller would then make a sprite
appear in the slot it was trickled from.
Since setParty refreshes the party sprites, there's no need to do it for
anything but a party slot.
Remove numerous inter-form dependencies, remove hard-coded offsets,
update a few spots to use better programming practices.
Should increase the readability of PKHeX's source code.
I should really just remove this filetype as it is nearly 2 years old
and no new data can be obtained. I'm unsure if buff gets resized so this
will only copy as much data as is required to load the PKX.
Trade Packets: Actually load to the stored array and populate instead of
doing nothing.
boxdata/pcdata/BattleVideo: Sets the Pokédex flags.
BattleVideo: Widens the form on load like the other box-import methods.
Played around with a few solutions, was happiest with (the probably
slower) linq as I didn't feel like using regex.
Supports copy/paste as all the filtering is done when the text changes;
any successful update will refresh the value in the save file.
Set will now import gender and set nickname properly, also will now
import Showdown's stat descriptions.
Latest OT will now write only enough bytes and won't overwrite any
previous names, leading to trash bytes. Fun.