* 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
* First improvements
Signed-off-by: William Claude <w.claude@thebeat.co>
* Make the menu more generic
Signed-off-by: William Claude <w.claude@thebeat.co>
* Handle mouse events
Signed-off-by: William Claude <w.claude@thebeat.co>
* Remove debug statement
Signed-off-by: William Claude <w.claude@thebeat.co>
* Handle left clicks better
Signed-off-by: William Claude <w.claude@thebeat.co>
* Remove unused file
Signed-off-by: William Claude <w.claude@thebeat.co>
* Handle titles in screens
Signed-off-by: William Claude <w.claude@thebeat.co>
* Improve the menu using layouts
Signed-off-by: William Claude <w.claude@thebeat.co>
* Add support for onOff labels
Signed-off-by: William Claude <w.claude@thebeat.co>
* Mutualise title creation
Signed-off-by: William Claude <w.claude@thebeat.co>
* Add gutter and mutualise things
Signed-off-by: William Claude <w.claude@thebeat.co>
* Improve menu, mutualise a lot of things and support animated sprites
Signed-off-by: William Claude <w.claude@thebeat.co>
* Use a cfg struct instead of independent handlers
Signed-off-by: William Claude <w.claude@thebeat.co>
* Fix hardcoded value
Signed-off-by: William Claude <w.claude@thebeat.co>
* Clean things a bit
Signed-off-by: William Claude <w.claude@thebeat.co>
* Remove unused property
Signed-off-by: William Claude <w.claude@thebeat.co>
* First support for hoverable elements
Signed-off-by: William Claude <w.claude@thebeat.co>
* Add support for label selection feedback
Signed-off-by: William Claude <w.claude@thebeat.co>
* Add support options
Signed-off-by: William Claude <w.claude@thebeat.co>
* Update print statement
Signed-off-by: William Claude <w.claude@thebeat.co>
* Update rendering and clean code
Signed-off-by: William Claude <w.claude@thebeat.co>
* Remove debug things
Signed-off-by: William Claude <w.claude@thebeat.co>
* Handle hovering
Signed-off-by: William Claude <w.claude@thebeat.co>
* Support enter key for labels
Signed-off-by: William Claude <w.claude@thebeat.co>
* Attach methods to layout
Signed-off-by: William Claude <w.claude@thebeat.co>
* Move things under EscapeMenu
Signed-off-by: William Claude <w.claude@thebeat.co>
* Some renaming
Signed-off-by: William Claude <w.claude@thebeat.co>
* Clean
Signed-off-by: William Claude <w.claude@thebeat.co>
* Set hovered element ID when using the mouse
Signed-off-by: William Claude <w.claude@thebeat.co>
* Clean
Signed-off-by: William Claude <w.claude@thebeat.co>
* Delete unused file
Signed-off-by: William Claude <w.claude@thebeat.co>
* Wire save & exit with a nasty hack
Signed-off-by: William Claude <w.claude@thebeat.co>
* Remove unused file
Signed-off-by: William Claude <w.claude@thebeat.co>
* Remove dead code
Signed-off-by: William Claude <w.claude@thebeat.co>
* Reorder the code a bit
Signed-off-by: William Claude <w.claude@thebeat.co>
* Rename hoverableElement into actionableElement
Signed-off-by: William Claude <w.claude@thebeat.co>
* Prevent regenerating the label if the text didn't change
Signed-off-by: William Claude <w.claude@thebeat.co>
* 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>
* Add InventoryItemMisc struct
* Add GetMiscItemByCode function
* Implement InventoryItem interface for InventoryItemMisc
* Add rings and amulets to the example items loading.
* Fix Y of LeftHand and RightHand equipment slots.
* Add "Ripolak" name to CONTRIBUTORS
* Remove double item
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>
* make game update at 25fps, ui update at max fps
* minor edits to func names, d2resource constants
* renamed `loadDictionary` to `loadTextDictionary` to avoid confusion with `LoadDataDictionary`
* updated line in main.go that calls `loadTextDictionary`
* added tokens as constants inside of `d2resource/resource_paths.go` that are used in font/language paths
* moved locale string handling stuff into it's own func, now uses tokens defined in d2resource
* minor edits to func names, d2resource constants
* renamed `loadDictionary` to `loadTextDictionary` to avoid confusion with `LoadDataDictionary`
* updated line in main.go that calls `loadTextDictionary`
* added tokens as constants inside of `d2resource/resource_paths.go` that are used in font/language paths
* moved locale string handling stuff into it's own func, now uses tokens defined in d2resource
* fix: accidentally renamed func in d2asset
* git is hard
accidentally added changes not meant for this commit
* 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