Commit graph

72 commits

Author SHA1 Message Date
Kurt
32d8225023 Fix drag slot equality check
prevents deleting party slots if a slot is dragged into its original
slot (X->X); Equals check only checked reference
2019-11-24 06:42:41 -08:00
Kurt
b6f2dd623e Fix external drag restoring of image
Closes #2476
2019-11-22 22:22:30 -08:00
Kurt
025cf69eeb Switch pkm export formats to party format
Now dumps party format bytes
Cons: more space
Pros: stats are retained, especially when users drag-drop.

Closes #2419
2019-11-16 14:03:25 -08:00
Kurt
cefb56a749 Sword/Shield Update 2019-11-15 17:52:08 -08:00
Kurt
02420d3e93
PKHeX.Core Nullable cleanup (#2401)
* Handle some nullable cases

Refactor MysteryGift into a second abstract class (backed by a byte array, or fake data)
Make some classes have explicit constructors instead of { } initialization

* Handle bits more obviously without null

* Make SaveFile.BAK explicitly readonly again

* merge constructor methods to have readonly fields

* Inline some properties

* More nullable handling

* Rearrange box actions

define straightforward classes to not have any null properties

* Make extrabyte reference array immutable

* Move tooltip creation to designer

* Rearrange some logic to reduce nesting

* Cache generated fonts
* Split mystery gift album purpose
* Handle more tooltips
* Disallow null setters
* Don't capture RNG object, only type enum

* Unify learnset objects
Now have readonly properties which are never null
don't new() empty learnsets (>800 Learnset objects no longer created,
total of 2400 objects since we also new() a move & level array)
optimize g1/2 reader for early abort case

* Access rewrite
Initialize blocks in a separate object, and get via that object
removes a couple hundred "might be null" warnings since blocks are now readonly getters
some block references have been relocated, but interfaces should expose all that's needed
put HoF6 controls in a groupbox, and disable

* Readonly personal data
* IVs non nullable for mystery gift
* Explicitly initialize forced encounter moves
* Make shadow objects readonly & non-null
Put murkrow fix in binary data resource, instead of on startup
* Assign dex form fetch on constructor
Fixes legality parsing edge cases
also handle cxd parse for valid; exit before exception is thrown in FrameGenerator

* Remove unnecessary null checks
* Keep empty value until init
SetPouch sets the value to an actual one during load, but whatever

* Readonly team lock data
* Readonly locks
Put locked encounters at bottom (favor unlocked)

* Mail readonly data / offset
Rearrange some call flow and pass defaults
Add fake classes for SaveDataEditor mocking
Always party size, no need to check twice in stat editor
use a fake save file as initial data for savedata editor, and for
gamedata (wow i found a usage)
constrain eventwork editor to struct variable types (uint, int, etc),
thus preventing null assignment errors
2019-10-16 18:47:31 -07:00
Kurt
7819c16792 Use slice operation instead of linq chain
Reuse IsRangeAll for smdemo detect
reset dragdrop on dropping folder (early returned)
2019-09-23 15:13:22 -07:00
Kurt
6d8ff992e2
Clean up / fix external drag in (#2383)
* stash

* Consolidate some logic
2019-09-03 19:54:41 -07:00
Kurt
b81a1e1e29 Refactoring
Increase abstraction for arbitrary slot get/set operations, and fracture
SAV4 behavior for each game type.

Adds: Undo/Redo of party slot changes
Fixes: Fixed Gen5 daycare slot 2 reading, and EXP reading
Fixes: Some slot color glitchiness
Fixed: Box layout editor now hides the flag label if no flags are
present
Fixed: Gen7 box flags are now shown (unknown purpose lol)
Changed: savefile objects are generally smaller (removed a few shared
offset fields)
2019-09-02 19:30:58 -07:00
Kurt
bf6c25eca7 Break up SlotChangeManager logic
A little bit cleaner when the logic is separated
Keep an abstraction of BoxEdit to cache the current box contents.
Already fetched to show sprites; any future fetches (for preview text /
hover sprite) can reuse the already fetched pkm data.

Should probably rewrite this stuff completely, but effort better spent
elsewhere
2019-08-20 19:50:28 -07:00
Kurt
39f5500d8a Show summary tooltip on mouse enter
Thanks SadisticMystic for the suggestion!
2019-08-14 22:51:49 -07:00
Kurt
a608e0b252 Minor clean
Remove some unnecessary properties from SaveFile
Enumerate checksum flag results for GC memcard checking
Remove unnecessary checks on savefile type
Add some documentation
Decapitalize some method parameters
2019-07-14 15:06:45 -07:00
Kurt
9861128b63 Minor img processing update
Extract magic pixel shifting numbers for layering imgs -- SWSH will
likely use the large boxsprites, as hinted by LGPE's upsizing.
Remove new[] color array creation, just pass byte values
break up glowedges into steps
2019-04-22 22:25:14 -07:00
Kurt
bb8cf5d3d8 Simplify get/decrypt pkm access 2019-03-29 19:43:33 -07:00
Kurt
d1f6a5a3ff Misc clean
no functional change
2019-02-15 11:46:46 -08:00
Kurt
19ae752937 Extract color config to separate class 2019-02-09 13:15:37 -08:00
Kurt
2d774ac7cc Allow dynamic default savefile type load
Make extrabytes a pkm property (don't mutate array pls)
reconfigure startup loading to only initialize after initial load of sav
& pkm (using blanks if not provided)
2018-12-19 22:10:32 -08:00
Kurt
ff649009ca Misc tweaks
misc perf adjustments
add utility for slot locked check (without box argument, absolute slot
index)
localize dragdrop strings
increase dragdrop file delete delay (dropping files into discord waits
until you confirm; 10s gives enough time to hit confirm)
2018-12-17 11:17:19 -08:00
Kurt
efb9b7eba2 Misc cleanup
removes clickonce logic/reference
2018-12-10 20:32:08 -08:00
Kurt
bca8924437 Add favorite flag editing
Closes #2199
2018-12-04 18:38:47 -08:00
Kurt
3cd45cf5c4 Continue extracting logic 2018-09-16 12:44:00 -07:00
Matt
789449f4d6 Fix alt form cries from not playing (#2119) 2018-09-12 10:37:13 -07:00
Kurt
d8c355cf64 use sprite resource name instead of species-form
Closes #2113
2018-09-07 19:11:22 -07:00
Kurt
f35712fcf2 Extract experience logic to separate file
add exp bar logic, unused.
2018-07-29 17:43:30 -07:00
Kurt
5d4c3d3390 Update slot drag / view/set/delete behavior 2018-07-28 09:56:13 -07:00
Kurt
2e88da9d3c Make BitmapAnimator usage single-object
Don't unlock/lock the GlowBase bitmap repeatedly; store the bytes
separately for frame generating. Fixes any memory access exceptions
(unlock->unlock due to program lag).
Do more preprocessing of egg glow sprites for cleaner appearance (now
glow inside sprite)

extract glow method for easier reuse
2018-07-27 19:59:14 -07:00
Kurt
c8563a3737 Respacening
Style guidelines, handle a bunch of files
no functional change
2018-07-26 19:34:27 -07:00
Kurt
7d4309970c Stop animation on box change
slot glow can bleed into another box
2018-07-25 19:50:44 -07:00
Kurt
c24a48e815 Remove picturebox references
sprite gen is more than adequate
2018-07-25 19:23:48 -07:00
Kurt
64284eafef Add pk1/pk2 direct import checks
dragdrop: check
import files from folder: check
no other paths convert afaik

Closes #2074
2018-07-24 15:49:00 -07:00
Kurt
922cbdf583 Add glow animation to slothover 2018-07-22 20:04:28 -07:00
Kurt
3c4ba0d52b Misc cleanup 2018-07-22 17:26:19 -07:00
Kurt
e1365c837c Glow sprite edges
Continue using the hover frost effect on the edges too
doesn't really play well with the colorized slot image since it's 1px,
whatever.
2018-07-21 21:55:37 -07:00
Kurt
c7175fbdb4 Misc reorg
bye bye SAVUtil and PKMUtil
2018-07-20 21:32:33 -07:00
Kurt
fae36e2086 Add layerimage overload
transparency=1 is no opacity change
remove Rectangle use, just provide coordinates (looks to be simpler in
the .net src too)
2018-07-14 18:43:46 -07:00
Kurt
5d20c79568 Add showdownset localization for slot previews
Localization only for game strings (not Ability/Nature/Stat/etc labels)
feels kinda goofy but it works
2018-07-13 19:13:25 -07:00
Kurt
abe3567174 Update db search
search caused cross thread exception due to ConfigurAwait not returning
context
finish await -> update controls with after restoring context.

don't rebox results 2x lmao; keep results as list due to other Remove
operations being present in other events.
2018-05-24 21:22:44 -07:00
Kurt
13fe1a2948 Ignore redirected load request results on dragdrop
Closes #1964 ; any redirected load request has its own 'fail to load'
message.

(dragdrop a save file on a box slot; message is no longer presented that
'could not set to this slot').
2018-05-24 19:05:13 -07:00
Kurt
4d0007f49b Show nature of pk1/2 via slothover
derived via EXP%25 as if it were converted to pk7.
#1954
2018-05-20 18:33:38 -07:00
Kurt
95b4d0820d Minor reorganization
amount of pkm obj classes is pretty high, move the static utility
classes to another folder

breaks usage of pkm.ShowdownText; removes a dependency from PKM.
2018-05-18 19:33:11 -07:00
Kurt
b798da9b03 Use altform first
Closes #1947
2018-05-15 15:23:31 -07:00
Evan Dixon
bbdb94007e Simplify logic in PlayCry (#1944)
Local functions are cool and all, but for something this simple, it just hurts readability and makes things needlessly complex.
2018-05-14 20:04:15 -07:00
Kurt
663ec5c536 Add sound path
Closes #1943
2018-05-14 15:46:36 -07:00
Kurt
28ef791014 Update hovered slot on box change
using keyboard instead of mouse can change box without moving mouse
outside the slot picturebox
trigger an update when the box is changed, but only if the updating
parent has the hovered child (ie a boxviewer changing box while hovering
the main window won't re-cry the main window slot since it wasn't
updated)
Closes #1940

add some gender threshold properties to personalinfo
2018-05-13 08:14:46 -07:00
Kurt
19f2420670 Add settings for slotText & slotCry
Closes #1939
2018-05-12 20:04:58 -07:00
Kurt
e2f11edc43 Refactoring
discards, Array.Find over FirstOrDefault
2018-05-12 08:41:29 -07:00
Kurt
5a3c8f4147 Remove trailing whitespace 2018-05-12 08:41:29 -07:00
Kurt
c2644cc9f0 Flag gendered pkm without gender
for lack of a better message
#1936

add some docs & trycatch bad wavs
2018-05-11 21:05:15 -07:00
Kurt
4fdff9581f Add forme specific cry detect
dex-form.wav
if not found, reverts to none (dex.wav)

47be96e92d (commitcomment-28950071)
2018-05-11 17:40:00 -07:00
Kurt
b933677c44 Stop sounds on leaving
yeah moving your mouse out and having pkm cries exploding in ur ears is
fun ;)
2018-05-11 17:05:42 -07:00
Kurt
47be96e92d Add feature: pkm cries on sprite hover
Years ago a branch was made to play a pkm's cry when its sprite was
hovered over, to assist users who are less fortunate in the ocular
department. Since a pkm's sprite is not text, playing the pkm's cry
helps the user identify what is in each data slot.

To enable the feature, put a folder named "sounds" in the same folder as
the executable; name all pkmcry files after the species national dex
number (no padding zeros), with an extension .wav
2018-05-11 16:58:29 -07:00