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.
Rewrote LayerImage & ChangeOpacity to be faster (graphics & lockbits
instead of manual pixel by pixel changing)
Removed control based string conversion methods
Used linq to parse hex instead of Numerics
No need to shuffle 11*, just have the precomputed final shuffle values
and redirect.
Rearrangement removes PKX/PGT interaction (now only refers to past gen
code base)
Adding two offset ptrs is bad; only use one! Guess I originally intended
to have languageflags be a shift of the PokeDex ptr, but that's not
right!
Thanks DeadSkullzJr!
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
:)
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.
Fixed reported bugs by Wanderer1391; found a bunch more as a side effect
of refactoring. Didn't like how so many values were hard coded so I
moved them all into the SAV6 class for easier r/w.
Re-enabled the Map Coordinate editing for non-ramsavs.
Updated the Map Coordinate display to the ingame coordinate style (using
NumericUpDowns), the coordinates for player.X and player.Y are divided
by 18 to get the current cell coordinates.
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).
Allows it to be easier used by comboboxes; SelectedValue = (byte) does
not work.
Instead of having these cast to int whenever used, this way is more
preferable.
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.
Friendship and Affection are still not modified.
This may cause an issue with users who edit mons with their OT as
current handler and set friendship to 255, and the program makes the HT
with 0 friendship.
Can't really code in an alert as it'd be an annoyance for users. Gotta
think about it more :)
When initializing with a zero-byte array (ie, starting the program and
just having blank data), the box/party have specific offsets.
Also got rid of the silly default switch cases which can just be
achieved earlier.
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.
This makes it so that the program can turn off these methods for every
instance unless the implemented method explicitly says otherwise.
Nullable boolzzz
Properly init offsets for inventory, and fix for genderless bit writing.
ORAS PokeDex editor does not save bools for the current entry when
closing the form; fix will be provided in a later commit.
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.
I don't have TradeFriendshipAffection called by anything; or any of
these methods for that matter. Need to find a solution so that the user
can turn ON/OFF these types of modifications (and ensure that PKHeX
doesn't overwrite any user data).