flush write cache and then erases it
align performs a flush and returns ByteOutput view
Reduced visibility of writeSigned and writeUnsigned
Implemented write signed methods
Implemented writeRaw method
Added getters for bitsCached and cache fields with package visibility
BitInput not always required, mostly only ByteInput is used
Removed specialized BitInput constructors from ByteInput
ByteInput#unalign will allocate a BitInput of readableBytes size
BitInput#readSlice will allocate a BitInput of specified size
Moved Actor-related fields to ItemWrapper
ItemWrapper unfortunately remains a field within Item (see #91)
Renamed INSTORE and created Item#flags2 field to track riiablo item flags
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
Created vendor generator which uses reflection to access item data and generate items
Added stub item generation for armor and weapons
Changed visibility of ItemGrid#addItem to protected (from public)
ItemGrid#addItem vis will revert when drain function is moved up class hierarchy
Modified signatures of VendorGrid#place* methods and function
VendorGrid#place* now returns boolean if the item can be placed
VendorGrid#place* stores available coords in input coords parameter
Added columns for base item vendor entries and noted issue with hratli
Added Excel#getEntryClass to retrieve the entry class type via reflection
VendorPanel populates tabs using "akara" columns
Added basic support for VendorPanel VendorGrid items
Added very basic ItemGenerator class to create Item instances
VendorPanel tabs now support distinct grid objects
VendorPanel will display the grid for the active tab
Added basic sort and layout function in VendorGrid to place items
VendorPanel MISC tab has sample data injected
Added Map#material(int,int) and Map#material(Vector2)
FootstepEmitter uses internal trigger frames instead of AnimationListener
Only works for Riiablo.game.player entity
This should be a good starting point for adding support for other entities
Added support for hotspot offset
Added methods that support setting a cursor with a specific page in a DC
Setting cursor to predefined cursor DC automatically applies hotspot
Interacting with NPC menus will now show the vendor panel
Added support for configuring panel buttons using flags
Added blank buttons for each vendor action (even if unused)
SpellsPanel is now a CharData.SkillListener and is event based
SpellsPanel no longer statically generates it's data when created
Created SpellsPanel.SpellButton impl which wraps each class-specific spell
SpellsPanel.SpellButton has an update method to be called whenever the wrapped spell changes
Label for spell button level moved to child of button and relative to button location
Added Label(LabelStyle) constructor for labels that are defaulted to empty
Created ProfilerManager passive system to act as a manager and factory for SystemProfiler instances
Changed SystemProfiler static functions to be a ProfilerManager instance via injection
Fixed some UI bugs within SystemProfiler GUI including incorrect width
Added reference to ProfilerSystem within CursorMovementSystem to block input events when profiler GUI is open
Removed ProfilerSystem#dispose() -- ProfilerManager has it's own dispose method
Reduced visibility of SystemProfiler constructors -- instances should only be created by ProfilerManager
SystemProfiler#initialize() will no longer add the instances to a struct -- automatically added when created by ProfilerManager factory
Implemented averaging of network latency samples via NetworkProfiler
NetworkProfiler handles the interfacing between Profiler plugin and Pinger system
Created IntervalBaseSystem which is a copy of IntervalSystem without dependency on any Aspect
Added support for a PacketListener for Pinger system (receives callbacks for received ping packets)
Created actual SystemProfiler instances for sampling CPU and GPU frame times
CPU and GPU frame times are now graphed with each system (adding them should give total frame time)
Added sample field to SystemProfiler to store value of last call to SystemProfiler#sample(long)
Removed CPU and GPU profiling from ProfilerSystem
Rewrote artemis-odb-contrib/contrib-plugin-profiler
Profiler was too restrictive and privated many useful fields and had static methods, yuk
Profiler plugin will always run and the key will only hide the UI (and set it as GPU system)
Profiler plugin will maybe be modified in the future to be more extensible
Extended profiler plugin to support tagging systems as GPU systems
I'd like to know which systems are slow and track CPU/GPU bottlenecks on mobile
Added Ping to Networking fbs
Created Riiablo.ping long to store current ping in ms
Changed Client draw fps to draw Riiablo.ping below fps
Created Pinger system which manages Riiablo.ping and sending and receiving Ping packets
Riiablo.ping is really more like RTT+frame_time and should be ironed out better
Created issue #77 related to the work done in this commit and deficiencies to be addressed
Removed Deleted component and associated flatbuffers classes
Created Flags component along with added a bitflags field to EntitySync flatbuffers table
It seems plausible more flags will be needed in the future aside from marking an entity as deleted
ItemController interface changed to be an engine-operable interface
Removed ItemController interface from CharData
Changed ItemController#groundToCursor(Item) to #groundToCursor(int) to pick up an item wrapper entity
ItemManager now handles item entity creation/deletion (may change)
ClientItemManager changed to operate upon Riiablo.charData and is for clients
CursorMovementSystem now uses ItemController instead of handling item drop and packeting directly
Item wrapper entity deletion remains unhandled in multiplayer until support for networking entity deletion is added
ItemController created to allow swappable interfacing between CharData and ClientItemManager
ClientItemManager engine system added (defers to Riiablo.charData temporarily)
Added dependency injection for ItemController to allow wiring
Changed item management panels to use ItemController injection instead of Riiablo.charData directly
CharData has been fully replaced with a version that doesn't just wrap a D2S file
Added support for a more event-based action approach with the UI
Event systems still need to be added to engine to perform CharData item operations
Decoupled com.riiablo.Cursor from D2S cursor item management -- defers to Riiablo.charData instance
Added some additional load methods and util functions
Added some backwards compat functions to grab item index, etc
D2S#copyTo(CharData) calls D2S#loadRemaining automatically
Added CharData#obtain to return an uninitialized (possibly dirty) CharData
Added CharData#preloadItems which loads player and merc items
CharData#load(D2S) will set CharData to managed
Implemented support for updating items, item stats, and applying stats to ItemData attributes field
Added reference to CharStats.Entry to ItemData -- this may be removed when hireling stats are implemented more thoroughly
Added clear method in CharData to support chaining CharData reset methods clear().load(D2S)
Added empty base stats for hireling -- fixes issues with applying hireling stats to their own Attributes
Passed sets map should correspond to any set-counting entity (player or hireling)
Added fix to ignore CharStats.Entry field in Attributes#op if null (for hirelings)
Removed some ItemData related methods from CharData for the time being
Moved initial stat assignments to reset method since only set at initialize
Started implementing stat tracking in ItemData instead of CharData
Above change needed because merc stats should track differently than player
Changed initial value for cursor field to INVALID_ITEM for consistency
Equip and unequip manage equipped enum map and set counter updates
Changed EquipListener onChanged to onEquip and onUnequip
Removed support for swapping equip items within a single call (swapping is an aggregate now)
UpdateSets changed to updateSet that will add or remove item based on add parameter
Added Attributes field to ItemData constructor -- items will apply attrs to this field
Changed API to work with item indexes (should simplify networking code)
Created ItemData abstraction to separate player and merc items
Moved set item fields to ItemData since they should eventually be distinct
Created EnumIntMap as a better primitive container for enum ordinals
D2S is now a container for saves, not the operational data itself
D2S CharData changes are intended to decouple them both and make D2S specifically to serialize and deserialize the data
Renamed getEquipped to getSlot since this returns the equipped item at the specified slot
Renamed getEquipped2 to getEquipped since this will return the item at the properly alternated slot (the equipped item)
Added support for serializing and synchronizing dropped items
Picking up items not supported yet -- requires API change
Added packet types for DropItem and PickupItem
Added ItemP component table and ItemSerializer
Added EntityFactory#createItem(Item,float,float)
Removed CharStats.BlockFactor from Stat.toblock item property -- should be applied on view stats and base character properties list
Changed Sync to EntitySync, SyncData to ComponentP, Sync.data to Sync.component
This should result in cleaner API readability
Adjusted API slightly within NetworkSynchronizer + added note for future change