* abstracted palettes, colors, and palette manager
* make asset manager use the palette manager interface
* added BGRA setter/getter, fixed lint errors
* abstraction for animation and animation manager
* Move MapEntity to d2interface
* New package d2object, first object initFun
Moves objects out to their own package and implements the very first
init function, torches/braziers now gets their animation mode set at creation.
* Apply name again
* Turn on waypoints
* Quit using ObjectLookupRecord in composite
* Unexport SetMode in map entities
* Get rid of weaponClass from MapEntity
* Pass ObjectType to composite instead of string
* Use layer weaponclass from cof
* Manage more stuff directly in composite
* Explicitly index when picking equipment
* DS1 reader no longer looks up objects
* Start of enteties managing their own equipment
* stringer and string2enum CompositeType
String2enum
* Use CompositeType stringer to simplify composite
* Finally fix GetDelimitedList
And lint issues
* NPC selects random equipment
* adding comments to d2interface for linter
* moved d2render renderer interfaces and types into d2interface
* fixed most lint errors for monstats loader
* de-lint d2data wip
* d2data: resolve linting errors
* Add PushBrightness to surface
* Highlight selectable objects
Check if mapentity is selectable. (seems reasonable)
Request objects to highlight themselves is required (idk)
* String2enum ObjectAnimationMode
* Render objects at their assigned layer
Gets the orderflag from the object record and assign it to the mapentity
so the renderer can get at it.
This adds another render pass that loops through the objects.
* Get object animation speed from their txt entry
* 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>
* Use integer directions for rotating map entities
* Manage composite directly in npc
* Player manages its own composite
* Split up animation mode types
Players, monsters, objects all have their own types
* Clean up AnimatedEntity
* Rename AnimatedEntity -> Object
* Keep the object txt record on hand in Object
When clicking on the other side of a wall or in an an inaccessible area,
route the player the closest possible node. This allows running along
walls and matches the original closely.
Co-authored-by: Nicholas Eden <neden@zigzagame.com>
Copied go-astar into d2common/d2astar, made a few optimizations. Runs
roughly 30% faster according to my benchmarking.
Added a `maxCost` param to prevent searching the entire map for a path.
This probably needs tweaked a bit, but follows the original game more
closely.
Co-authored-by: Nicholas Eden <neden@zigzagame.com>
* Improve run/walk/neutral animation handling. Initial parsing of LevelDetail records. Support for holding mouse buttons.
- Run/walk/neutral positions now map to a different animation mode(and speed) depending if in or out of town.
- Run/walk toggle which can be activated/deactivated with R key.
- Temporary(and incorrect) loading and mapping for LevelDetails records.
- Zone change label which shows the level name from LevelDetailsRecord when the player enters a different zone.
- Allow holding mouse left/right button to repeatedly generate an action.
* Remove duplicate load of LevelDetails. Replace numbers in zone change logic with their corresponding RegionIdType
* Move zone change check at the correct place
Co-authored-by: Presiyan Ivanov <presiyan-ivanov@users.noreply.github.com>
* camera offset for ui panels :
added maprenderer viewport to be aligned left or right
calling alignement on keyPress in game_controls
* check if already aligned
* fix bugs
-forgot to assign alignement
-defaultScreenRect instead of screenRect because of issue mentionned in original comment
* remove config.json and replace go.mod line
* removing duplicate import of d2common
replacing all dh to d2common
* remove useless breaks from switch statement
* better range when value unused + prettying import
* item_affix rewrite
using return values instead of pointer references in arguments
* ebiten deprecated calls
* small fixes
* camera offset for ui panels :
added maprenderer viewport to be aligned left or right
calling alignement on keyPress in game_controls
* check if already aligned
* fix bugs
-forgot to assign alignement
-defaultScreenRect instead of screenRect because of issue mentionned in original comment
* remove config.json and replace go.mod line
* update with new renderer and escape menu
* camera offset for ui panels :
added maprenderer viewport to be aligned left or right
calling alignement on keyPress in game_controls
* check if already aligned
* fix bugs
-forgot to assign alignement
-defaultScreenRect instead of screenRect because of issue mentionned in original comment
* remove config.json and replace go.mod line
* camera offset for ui panels :
added maprenderer viewport to be aligned left or right
calling alignement on keyPress in game_controls
* check if already aligned
* Switched to json formatted characters
* Added infrastructure for networking
* Minor updates.
* more updates for map engine/rendering
* More map engine changes and fixes