From d302263ac1c3784c8ce6dc2d090403915f0fc250 Mon Sep 17 00:00:00 2001 From: "M. Sz" Date: Tue, 8 Dec 2020 09:18:27 +0100 Subject: [PATCH 1/3] code cleanup --- d2game/d2gamescreen/game.go | 2 +- d2game/d2player/game_controls.go | 57 +++++++++++++++++++------------- d2game/d2player/quest_log.go | 6 ---- 3 files changed, 35 insertions(+), 30 deletions(-) diff --git a/d2game/d2gamescreen/game.go b/d2game/d2gamescreen/game.go index 687b758f..d63dcbb9 100644 --- a/d2game/d2gamescreen/game.go +++ b/d2game/d2gamescreen/game.go @@ -303,7 +303,7 @@ func (v *Game) bindGameControls() error { var err error v.gameControls, err = d2player.NewGameControls(v.asset, v.renderer, player, v.gameClient.MapEngine, - v.escapeMenu, v.mapRenderer, v, v.terminal, v.uiManager, v.guiManager, v.keyMap, v.logLevel, v.gameClient.IsSinglePlayer()) + v.escapeMenu, v.mapRenderer, v, v.terminal, v.uiManager, v.keyMap, v.logLevel, v.gameClient.IsSinglePlayer()) if err != nil { return err diff --git a/d2game/d2player/game_controls.go b/d2game/d2player/game_controls.go index c8b01f5a..b9608ae1 100644 --- a/d2game/d2player/game_controls.go +++ b/d2game/d2player/game_controls.go @@ -10,7 +10,6 @@ import ( "github.com/OpenDiablo2/OpenDiablo2/d2common/d2enum" "github.com/OpenDiablo2/OpenDiablo2/d2common/d2math/d2vector" - "github.com/OpenDiablo2/OpenDiablo2/d2core/d2gui" "github.com/OpenDiablo2/OpenDiablo2/d2core/d2hero" "github.com/OpenDiablo2/OpenDiablo2/d2common/d2interface" @@ -124,7 +123,6 @@ func NewGameControls( inputListener inputCallbackListener, term d2interface.Terminal, ui *d2ui.UIManager, - guiManager *d2gui.GuiManager, keyMap *KeyMap, l d2util.LogLevel, isSinglePlayer bool, @@ -405,10 +403,7 @@ func (g *GameControls) OnKeyDown(event d2interface.KeyEvent) bool { case d2enum.HoldRun: g.hud.onToggleRunButton(true) case d2enum.ToggleHelpScreen: - g.hud.miniPanel.openDisabled() - - g.HelpOverlay.Toggle() - g.updateLayout() + g.toggleHelpOverlay() default: return false } @@ -468,7 +463,7 @@ func (g *GameControls) onEscKey() { } if g.HelpOverlay.IsOpen() { - g.HelpOverlay.Toggle() + g.HelpOverlay.Close() escHandled = true } @@ -624,10 +619,12 @@ func (g *GameControls) OnMouseButtonDown(event d2interface.MouseEvent) bool { } func (g *GameControls) toggleHeroStatsPanel() { - g.questLog.Close() - g.heroStatsPanel.Toggle() - g.hud.miniPanel.SetMovedRight(g.heroStatsPanel.IsOpen()) - g.updateLayout() + if !g.HelpOverlay.IsOpen() { + g.questLog.Close() + g.heroStatsPanel.Toggle() + g.hud.miniPanel.SetMovedRight(g.heroStatsPanel.IsOpen()) + g.updateLayout() + } } func (g *GameControls) onCloseHeroStatsPanel() { @@ -636,10 +633,12 @@ func (g *GameControls) onCloseHeroStatsPanel() { } func (g *GameControls) toggleQuestLog() { - g.heroStatsPanel.Close() - g.questLog.Toggle() - g.hud.miniPanel.SetMovedRight(g.questLog.IsOpen()) - g.updateLayout() + if !g.HelpOverlay.IsOpen() { + g.heroStatsPanel.Close() + g.questLog.Toggle() + g.hud.miniPanel.SetMovedRight(g.questLog.IsOpen()) + g.updateLayout() + } } func (g *GameControls) onCloseQuestLog() { @@ -647,11 +646,21 @@ func (g *GameControls) onCloseQuestLog() { g.updateLayout() } +func (g *GameControls) toggleHelpOverlay() { + if !g.inventory.IsOpen() && !g.skilltree.IsOpen() && !g.heroStatsPanel.IsOpen() && !g.questLog.IsOpen() { + g.hud.miniPanel.openDisabled() + g.HelpOverlay.Toggle() + g.updateLayout() + } +} + func (g *GameControls) toggleInventoryPanel() { - g.skilltree.Close() - g.inventory.Toggle() - g.hud.miniPanel.SetMovedLeft(g.inventory.IsOpen()) - g.updateLayout() + if !g.HelpOverlay.IsOpen() { + g.skilltree.Close() + g.inventory.Toggle() + g.hud.miniPanel.SetMovedLeft(g.inventory.IsOpen()) + g.updateLayout() + } } func (g *GameControls) onCloseInventory() { @@ -660,10 +669,12 @@ func (g *GameControls) onCloseInventory() { } func (g *GameControls) toggleSkilltreePanel() { - g.inventory.Close() - g.skilltree.Toggle() - g.hud.miniPanel.SetMovedLeft(g.skilltree.IsOpen()) - g.updateLayout() + if !g.HelpOverlay.IsOpen() { + g.inventory.Close() + g.skilltree.Toggle() + g.hud.miniPanel.SetMovedLeft(g.skilltree.IsOpen()) + g.updateLayout() + } } func (g *GameControls) onCloseSkilltree() { diff --git a/d2game/d2player/quest_log.go b/d2game/d2player/quest_log.go index a2e3c6d9..7634f0b2 100644 --- a/d2game/d2player/quest_log.go +++ b/d2game/d2player/quest_log.go @@ -103,12 +103,6 @@ func NewQuestLog(asset *d2asset.AssetManager, 24: 0, 25: 0, 26: 0, - 27: 0, - 28: 0, - 29: 0, - 30: 0, - 31: 0, - 32: 1, } var quests [d2enum.ActsNumber]*d2ui.WidgetGroup From 509dfda5e5ee314749f4b3e3551b4f90c7ebee97 Mon Sep 17 00:00:00 2001 From: "M. Sz" Date: Thu, 10 Dec 2020 13:15:18 +0100 Subject: [PATCH 2/3] clean up error handling in d2game/d2player/inventory.go and d2core/d2item/diablo2item/ --- d2core/d2item/diablo2item/item_property_test.go | 10 +++++++++- d2game/d2player/game_controls.go | 7 ++++++- d2game/d2player/inventory.go | 10 ++++++---- 3 files changed, 21 insertions(+), 6 deletions(-) diff --git a/d2core/d2item/diablo2item/item_property_test.go b/d2core/d2item/diablo2item/item_property_test.go index 5736382f..ec932ff5 100644 --- a/d2core/d2item/diablo2item/item_property_test.go +++ b/d2core/d2item/diablo2item/item_property_test.go @@ -419,9 +419,17 @@ var testAssetManager *d2asset.AssetManager var testItemFactory *ItemFactory func TestSetup(t *testing.T) { + var err error + testAssetManager = &d2asset.AssetManager{} testAssetManager.Records = &d2records.RecordManager{} - testItemFactory, _ = NewItemFactory(testAssetManager) + + testItemFactory, err = NewItemFactory(testAssetManager) + if err != nil { + t.Error(err) + return + } + testAssetManager.Records.Item.Stats = itemStatCosts testAssetManager.Records.Character.Stats = charStats testAssetManager.Records.Skill.Details = skillDetails diff --git a/d2game/d2player/game_controls.go b/d2game/d2player/game_controls.go index b9608ae1..ce6ea2fa 100644 --- a/d2game/d2player/game_controls.go +++ b/d2game/d2player/game_controls.go @@ -208,7 +208,12 @@ func NewGameControls( heroStatsPanel := NewHeroStatsPanel(asset, ui, hero.Name(), hero.Class, l, hero.Stats) questLog := NewQuestLog(asset, ui, l, hero.Act) - inventory := NewInventory(asset, ui, l, hero.Gold, inventoryRecord) + + inventory, err := NewInventory(asset, ui, l, hero.Gold, inventoryRecord) + if err != nil { + return nil, err + } + skilltree := newSkillTree(hero.Skills, hero.Class, asset, l, ui) miniPanel := newMiniPanel(asset, ui, l, isSinglePlayer) diff --git a/d2game/d2player/inventory.go b/d2game/d2player/inventory.go index 3a6fde86..58c31f23 100644 --- a/d2game/d2player/inventory.go +++ b/d2game/d2player/inventory.go @@ -32,11 +32,13 @@ func NewInventory(asset *d2asset.AssetManager, ui *d2ui.UIManager, l d2util.LogLevel, gold int, - record *d2records.InventoryRecord) *Inventory { + record *d2records.InventoryRecord) (*Inventory, error) { itemTooltip := ui.NewTooltip(d2resource.FontFormal11, d2resource.PaletteStatic, d2ui.TooltipXCenter, d2ui.TooltipYBottom) - // https://github.com/OpenDiablo2/OpenDiablo2/issues/797 - itemFactory, _ := diablo2item.NewItemFactory(asset) + itemFactory, err := diablo2item.NewItemFactory(asset) + if err != nil { + return nil, fmt.Errorf("during creating new item factory: %s", err) + } inventory := &Inventory{ asset: asset, @@ -54,7 +56,7 @@ func NewInventory(asset *d2asset.AssetManager, inventory.Logger.SetLevel(l) inventory.Logger.SetPrefix(logPrefix) - return inventory + return inventory, nil } // Inventory represents the inventory From 8f1aadc223256aea6d2b170c6ad9304701678c27 Mon Sep 17 00:00:00 2001 From: "M. Sz" Date: Fri, 11 Dec 2020 10:26:49 +0100 Subject: [PATCH 3/3] error handling in d2gamescreen.CreateNewGame --- d2app/app.go | 9 +++++++-- d2game/d2gamescreen/game.go | 7 ++++--- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/d2app/app.go b/d2app/app.go index 8b13c0d1..99110921 100644 --- a/d2app/app.go +++ b/d2app/app.go @@ -943,9 +943,14 @@ func (a *App) ToCreateGame(filePath string, connType d2clientconnectiontype.Clie fmt.Println(errorMessage) a.ToMainMenu(errorMessage) } else { - a.screen.SetNextScreen(d2gamescreen.CreateGame( + game, err := d2gamescreen.CreateGame( a, a.asset, a.ui, a.renderer, a.inputManager, a.audio, gameClient, a.terminal, a.config.LogLevel, a.guiManager, - )) + ) + if err != nil { + a.Error(err.Error()) + } + + a.screen.SetNextScreen(game) } } diff --git a/d2game/d2gamescreen/game.go b/d2game/d2gamescreen/game.go index d63dcbb9..07a826c1 100644 --- a/d2game/d2gamescreen/game.go +++ b/d2game/d2gamescreen/game.go @@ -1,6 +1,7 @@ package d2gamescreen import ( + "errors" "fmt" "image/color" @@ -47,7 +48,7 @@ func CreateGame( term d2interface.Terminal, l d2util.LogLevel, guiManager *d2gui.GuiManager, -) *Game { +) (*Game, error) { // find the local player and its initial location var startX, startY float64 @@ -93,10 +94,10 @@ func CreateGame( game.escapeMenu.OnLoad() if err := inputManager.BindHandler(game.escapeMenu); err != nil { - game.Error("failed to add gameplay screen as event handler") + return nil, errors.New("failed to add gameplay screen as event handler") } - return game + return game, nil } // Game represents the Gameplay screen