the uiManager now handles every element of the ui, so we don't need to
render elements manually in game_controls. Now we can also use
widget_groups to simplify handling the opening/closing of the panel.
when we ran the command before we would always throw away old skill
objects and create a new one. This is nasty if we have a pointer to the
old object. By throwing it away we have to update all these pointers.
Now we rather increase the skillpoint, if the hero already has this
skill.
this also adds missing methods to elements not implementing widget. Note
here that we do not enable sprite and label, as this would produce a
crazy amount of linter warnings due to render() requiering error
handling then, which non of the callers handle. Since we remove the
render calls later anyways, we can postpone this static check for now.
* Escape in MainMenu cause game exit
* Escape in MainMenu cause game exit
* Shortcuts in d2 main menu
* Shortcuts in Main Menu
* Shortcuts in Main Menu
* hotfix for "Shortcuts in Main Menu"
* hotfix for "Shortcuts in Main Menu" - removet some lint error
* fix lint errors
Co-authored-by: M. Sz <mszeptuch@protonmail.com>
Co-authored-by: gravestench <dknuth0101@gmail.com>
* d2player/game_controls: Refactor HUD into it's own class
game_controls slowly becomes a superclass that does too many things.
So move HUD into it's own class. This is the first step of getting the
renderer out of game_controls (#798)
* d2ui/tooltip: Allow background box to be disabled
* d2ui/tooltip: Make GetSize() a public function
* d2player: Move const from game_controls to hud
* d2player: Fix missing entity hover tooltip
* 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
* d2player/skilltree: Add label for skillpoints
this also darkens the skillicon if no skillpoint was invested yet.
* d2player/gamecontrols: learnskills <class> should only learn class
specific skills
the character would learn skills of enemies as well, like DiabWall. I
wasn't expecting the command to do that.
* d2ui: Add tooltip class
we reimplemented tooltips in several places
(inventory/skill_select_panel). Let's make it its own ui element.
* d2player: Refactor skill_select_panel to use the tooltip class
* d2player: Refactor inventory to use the tooltip class
* Make linter happy
* Make golangci-lint 1.27.0 happy as well
* tooltip: Remove const and rather disable linter
* d2records/: suppressing function legnth lint errors for record loaders
* d2gamescreen/character_select.go: broke up OnLoad method to reduce complexity
* d2ui/button.go: suppressing funlen lint error, can't reduce function size
* d2player/inventory.go: fixed gocyclo error, broke up render method to smaller methods
* d2client/game_client.go: suppressing gocyclo error for OnPacketReceived, doesnt make sense to split
* d2remoteclient/remote_client_connection.go: suppressing gocyclo error for decodeToPacket, doesnt make sense to split
* d2dcc/dcc_direction.go: suppressing gocyclo error in generateFrames
* suppressing the magic number lint errors in mapgen, it will get a heavy refactor soon, hopefully...
* adding string token constants for SkillClass
* adding panic on error to left/right skill select render
* fixed cuddle lint error
* fixed unnecessary conversion, unused func param lint errors in dcc_animation.go
* adding comment for skill class tokens
* fixed typo in comment
* removed unused parameter in dcc/dc6 animations
* supress warning about Object.setMode always being passed direction value of 0
* fixed all invalid golint directives
* fixed a couple gocritic lint errors
* 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
* d2player/panels: Add close button to hero/inventory/skilltree panel
we require a OnClose callback here, as we need to update the perspective
of the view which is handled by gamecontrols.updateLayout().
* d2player/skilltree: Fix using the same tab label for all tabs
* d2player/game_controls: Fix wrong position of left/right menu
the character would not detect that a click was in a menu and start
walking.
* removed the rest of the magic number errors from d2game
* hotfix for bug i added in map engine test
* removed TODO's from d2mapengine/engine.go, added link to github issue
* removed TODO's and made issues and other minor lint work
* lint cleanup, mostly removing TODO's and putting links to their issues on github
* d2game/d2player/inventory.go: magic number lint cleanup
* d2game/d2player/mini_panel.go: magic number lint cleanup
* d2game/d2player/skill_select_panel.go: lint cleanup
* d2game/d2player/skilltree.go: removed all lint errors
* removed the rest of the magic number errors from d2game
* hotfix for bug i added in map engine test
* all magic numbers removed (excluding mapgen)
* minor refactor of hero_stats_panel to clean up lint errors
* minor edit to skill_select_panel.go
* major refactor of d2game/d2player/game_controls.go, removed most lint errors.
- Clicking the active left/right skill now opens a skill select panel.
Only the available skills for the hero, which are valid for the panel type are shown.
Clicking on a skill from the skill select panel makes it the new active skill for the hero.
- Hovering a skill in the skill select panel shows the skill name +
skill description.
- New command which learns all skills for a specific
class(not persisted to a save file yet) - e.g. `learnskills ama` will learn
skills for the Amazon class.
- Initialize HeroSkill.shallowHeroSkill struct in the hero state factory, so we can use it
when we serialize the HeroSkill to packets/game save files.
- The parsed Skill.ListRow is now a number instead of string.
Co-authored-by: Presiyan Ivanov <presiyan-ivanov@users.noreply.github.com>
* d2ui/UIFrame: Refactor into its own class
it's not useful to have the handling of frames for the
inventory/herostate/skilltree/quest panels individually in each of
those.
* d2ui/button: Fix crash when a buttonlayout was not allowing FrameChange
When AllowFrameChange is false we do not create pressedSurface. So if we
press the button the game will crash.
* d2ui/button: Allow label-only buttons
At least for the skillmenu we need buttons were the graphic size does
not match the buttonsize. So let's render the graphic in there and make
the button label only.
* d2hero/hero_state_factory: Give all heroes their class specific skills
* d2player/gamecontrols: Fix wrong inventory/stats layouts for exp chars
For Druid/Assassin the inventory frame was rendered for a 640x480
resolution. This brings it in line with all other characters.
* d2player: Add inital Skilltree panel
* d2player/game_controls: Enable skilltree
Note here, that the inventory panel and skilltree panel can overlap.
* d2player/skilltree: Add skillicon rendering
Note here, that I couldn't figure out how to render them dark if no
skillpoints are invested.
Signed-off-by: juander <juander@rumtueddeln.de>
* Casting a skill now plays the corresponding overlay(if any).
* Prevent a crash caused by nil pointer in HeroSkill deserialization, happening when
unmarshalling HeroSkill from packets as a remote client.
* Add PlayerAnimationModeNone to handle some of the Skills(e.g.
Paladin auras) having "" as animation mode.
* Joining a game as remote client now waits for map generation to finish
before rendering map or processing map entities. This is temporary hack to prevent the game from
crashing due to concurrent map read & write exception.
* Send CastSkill packet to other clients.
Co-authored-by: Presiyan Ivanov <presiyan-ivanov@users.noreply.github.com>
* Disallow clicking through the help menu to control the game
* Move Navigator and EscapeMenu up in package tree to be accessible by GameControls. Disallow GameControls input when EscapeMenu is open
* Make ESC key behavior more consistent with D2