Tools should extend BaseTool to provide interfaces
Tools can provide their own cli arguments and customizations
Tools main methods should execute their backend entry point
Reorganized gradle scripts into subproject directories
Reformatted gradle scripts to be more consistent
Created :server subproject group
Deleted :mpqlib subproject due to inactivity
Hopefully this is a step in the right direction
Changed to standard gradle src directory structure
Changed some working directories to work properly with gradle tasks
Changed MPQViewer asset path to empty string
Removed dangling byte[] data refs within CharData for serialization
Removed dangling FileHandle file refs within CharData and D2S
Removed some methods within D2S which should not be required anymore
Reduced visibility of D2SReader96#readD2S -- should be package-private
Created D2SWriter with D2SWriterStub to temp hold D2S data refs until serialization is finished
D2SWriter will eventually contain code to serialize CharData to byte[]
Changed D2S.MercData int xp to long experience (is really a uint32)
Created some public accessor fields within D2S to grab basic version agnostic info
Created some deprecated public accessor fields within D2S until CharacterPreview is fixed
Will deprecate and replace some com.riiablo.save classes eventually
D2S acts only as a tuple
D2SReader has significantly more robust debugging tools than com.riiablo.save.D2S
Added Riiablo#getDifficultyString(int) to get the debug difficulty string
Added D2SReaderTool used to debug D2S files and diagnose format issues
Added support for distinct vendor inventories
No inventory component yet -- generated each time vendor loaded
Moved VendorPanel inventory management to Npc for time being (from UI to a system)
Modified VendorPanel#config signature to include inventory item list
Created VendorGenerator#generate(String) to generate an inventory for a specified vendor
Added ItemGenerator and VendorGenerator systems to various engines