* Init for gold button and label
* gold button and label in inventory menu
* gold value saved/loaded from player save file
Co-authored-by: M. Sz <mszeptuch@protonmail.com>
* Implement ServerFullPacket including server side handling and a place holder client side.
* Making suggested edits to move to an empty packet
Co-authored-by: Stephen Horan <steve.horan@theatsgroup.com>
* saving of player should be done on the server. That's also where the loading happens.
* refactor nearly everything, but this time it looks not that bad...
* MAke Linter happy
* Typo... uuups
* removed the rest of the magic number errors from d2game
* hotfix for bug i added in map engine test
* removed all TODO's in project, made issues on github for each one
* adds error handling, returns early from funcs where it makes sense
* fixes build errors
* merge ballresin PR with upstream
* adds error handling, returns early from funcs where it makes sense
* fixes build errors
* merge ballresin PR with upstream
Co-authored-by: dknuth <dknuth0101@gmail.com>
* Remove weapons, armor, misc, itemCommon, itemTyps datadict singletons
- removed loader calls from d2app
- removed the HeroObjects singleton from `d2core/d2inventory`
- added an InventoryItemFactory in d2inventory
- package-level functions that use data records are now methods of the InventoryItemFactory
- renamed ItemGenerator in d2item to ItemFactory
- package-level functions that use records are now methods of ItemFactory
- d2map.MapEntityFactory now has an item factory instance for creating items
- fixed a bug in unique item record loader where it loaded an empty record
- added a PlayerStateFactory for creating a player state (uses the asset manager)
- updated the test inventory/equipment code in d2player to handle errors from the ItemFactory
- character select and character creation screens have a player state and inventory item factory
- updated item tests to use the item factory
* minor edit
* Removed d2datadict.Experience singleton
added a HeroStatsFactory, much like the other factories. The factory gets an
asset manager reference in order to use data records.
* removed d2datadict.AutoMagic singleton
* removed d2datadict.AutoMap singleton
* removed d2datadict.BodyLocations singleton
* removed d2datadict.Books singleton
* Removed singletons for level records
- removed loader calls in d2app
- changed type references from d2datadict to d2records
- added a `MapGenerator` in d2mapgen which uses thew asset manager and map engine
- package-level map generation functions are now MapGenerator methods
- `d2datadict.GetLevelDetails(id int)` is now a method of the RecordManager
* remove SkillCalc and MissileCalc singletons
* Removed CharStats and ItemStatCost singletons
- added an ItemStatFactory which uses the asset manager to create stats
- package-level functions for stats in d2item are now StatFactory methods
- changed type references from d2datadict to d2records
- `d2player.GetAllPlayerStates` is now a method of the `PlayerStateFactory`
* Removed DkillDesc and Skills singletons from d2datadict
- removed loader calls from d2app
- diablo2stats.Stat instances are given a reference to the factory for doing record lookups
* update the stats test to use mock a asset manager and stat factory
* fixed diablo2stats tests and diablo2item tests
* removed CompCodes singleton from d2datadict
* remove cubemain singleton from d2datadict
* removed DifficultyLevels singleton from d2datadict
* removed ElemTypes singleton from d2datadict
* removed events.go loader from d2datadict (was unused)
* removed Gems singleton from d2datadict
* removed Hireling and Inventory singletons from d2datadict
* removed MagicPrefix and MagicSuffix singletons from d2datadict
* removed ItemRatios singleton from d2datadict
* removed Missiles singleton from d2datadict
* removed MonModes singleton
* Removed all monster and npc singletons from d2datadict
- MapStamp instances now get a reference to their factory for doing record lookups
* removed SoundEntry and SoundEnviron singletons from d2datadict
* Initial player Left skill and Right skill handling
* Handle empty skill names in charStats.BaseSkils + add Attack skill for all classes.
Co-authored-by: Presiyan Ivanov <presiyan-ivanov@users.noreply.github.com>
* Networking refactor
* Networking refactor
* Networking refactor
* Networking refactor
* Refactor netpacket for json.Rawmessages as the data type and client side JSON decoder.
* Move game server connection handler to json decoder.
* Move game server connection handler to json decoder.
* wip d2items system and item properties
* added loader for TreasureClassEx.txt
* wip item spawn from treasure class records
* wip items
* add call to init item equivalencies, remove treasure class test from d2app
* made item affix records global var a map of affix codes to the records
* changed how item to item common record equivalency is determined
* changed set items records export to a map of their codes to the records, grouped property params into a struct
* changed property parameter field from calcstring to string
* fixed bug in stat value clone
* adding equipper interface as part of stat context, eventually to be used to resolve set bonus (among other things)
* made the item interface simpler, only needs name and description methods
* adding equipper interface, for anything that will equip or have active items
* handle case where min and max are swapped, removed commented code
* added property/stat resolution for magic, rare, set, and unique items
* adding item generator which can roll for items using treasure class records
* fixed item equivalency func being called in the wrong spot
* added item spawning
- added packet type for spawning items
- added client/server handlers for SpawnItem packets
- added map entity for items
- added simpler item provider function in diablo2item package
- added debug terminal command for spawning items
* delint_d2networking
not sure what to do about lint error G110 on calls to `io.Copy`, warns
about gzip compression bomb possibility, leaving those.
all todo's have been left.
* removed duplicate const
* Added automap.go stub
* Handle errors in original AutoMap.txt file
* Completed AutoMapRecord struct and comments
* AutoMap loader implemented
* Update from base repo
* Comments added to d2netpacket and d2netpackettype.
Note, the Overview for d2netpacket is in net_packet.go. It could be placed in a doc.go file but net_packet.go seemed appropriate in this case.
* Comments added to d2server
* client_connection.go missed from previous commit
* Comments added to d2client
* Doc.go added to d2networking and other corrections
* Unused parameter present to satisfy interface, named it '_'
* Unhandled errors and other issues resolved in d2networking.
This commit adds simple error reporting and creates a lot of mess. I will be doing one more pass to tidy things up a bit before I move on.
* Commented out continue on RemoteClientConnection error and implemented stringer in message type
* NetPacketType.String uses map instead of switch.
* Map moved into String method
* Added automap.go stub
* Handle errors in original AutoMap.txt file
* Completed AutoMapRecord struct and comments
* AutoMap loader implemented
* Update from base repo
* Comments added to d2netpacket and d2netpackettype.
Note, the Overview for d2netpacket is in net_packet.go. It could be placed in a doc.go file but net_packet.go seemed appropriate in this case.
* Comments added to d2server
* client_connection.go missed from previous commit
* Comments added to d2client
* Doc.go added to d2networking and other corrections
* 412 - move missle code to game_client and add animation, still buggy
* mostly working casting animation that cancels path
Co-authored-by: carrelda@Davids-MacBook-Pro.local <carrelda@Davids-MacBook-Pro.local>
* WIP refactor of d2map stuff
* more d2map refactor
adding realm init to game client
passing map engine from client and server into realm at init
change `generate map packet` to have act and level index as data
* client explodes, but getting there
* realm now initializes, networking works, but map generators dont currently do anything
* changed the way that level type records are loaded
* fixed funcs for level data lookups
* started implementing level generator, currently crashing
* client no longer exploding
* d2networking refactor
put exports into d2client.go and d2server.go
kept GameClient and GameServer methods into their respective files
made methods for packet handlers instead of the giant switch statements
* bugfix: getting first level id by act
* minor refactor of gamescreen for readability
* towns now generate on server start, create player takes act and level id as args, levels have their own map engine
* Save/load hero stats and display them in stats panel.
* Load default hero state for characters created before saving stats was introduced
Co-authored-by: Presiyan Ivanov <presiyan-ivanov@users.noreply.github.com>
* Switched to json formatted characters
* Added infrastructure for networking
* Minor updates.
* more updates for map engine/rendering
* More map engine changes and fixes