From 56787b13b8e3e7cf35f3fe49a6496226da5cff4d Mon Sep 17 00:00:00 2001 From: "M. Sz" Date: Wed, 25 Nov 2020 12:37:16 +0100 Subject: [PATCH] Opimalisation --- d2common/d2resource/languages_map.go | 6 ++-- d2core/d2asset/asset_manager.go | 39 +++++++------------------ d2game/d2gamescreen/character_select.go | 2 +- d2game/d2gamescreen/main_menu.go | 2 +- d2game/d2player/hero_stats_panel.go | 2 +- 5 files changed, 17 insertions(+), 34 deletions(-) diff --git a/d2common/d2resource/languages_map.go b/d2common/d2resource/languages_map.go index 1c4529e2..b1c13e6a 100644 --- a/d2common/d2resource/languages_map.go +++ b/d2common/d2resource/languages_map.go @@ -51,7 +51,7 @@ func GetFontCharset(language string) string { } // modificators for labels (used in string tables -func getModificators() map[string]int { +func getModifiers() map[string]int { return map[string]int{ "ENG": 0, // (English) // checked "ESP": 0, // (Spanish) @@ -69,8 +69,8 @@ func getModificators() map[string]int { } // GetFontCharset returns modificator for language -func GetLabelModificator(language string) int { - mod := getModificators() +func GetLabelModifier(language string) int { + mod := getModifiers() return mod[language] } diff --git a/d2core/d2asset/asset_manager.go b/d2core/d2asset/asset_manager.go index 5a5acdec..b048f20c 100644 --- a/d2core/d2asset/asset_manager.go +++ b/d2core/d2asset/asset_manager.go @@ -278,44 +278,27 @@ func (am *AssetManager) LoadStringTable(tablePath string) (d2tbl.TextDictionary, return table, err } -// TranslateString returns the translation of the given string. The string is retrieved from -// the loaded string tables. -func (am *AssetManager) TranslateString(key string) string { +func (am *AssetManager) TranslateString(input interface{}) string { + var key string + + switch s := input.(type) { + case string: + key = s + case fmt.Stringer: + key = s.String() + } + for idx := range am.tables { if value, found := am.tables[idx][key]; found { return value } } + // Fix to allow v.setDescLabels("#123") to be bypassed for a patch in issue #360. Reenable later. // log.Panicf("Could not find a string for the key '%s'", key) return key } -// TranslateHeroClass translates her class given to game locale -func (am *AssetManager) TranslateHeroClass(h d2enum.Hero) string { - switch h { - case d2enum.HeroBarbarian: - return am.TranslateString("Barbarian") - case d2enum.HeroNecromancer: - return am.TranslateString("Necromancer") - case d2enum.HeroPaladin: - return am.TranslateString("Paladin") - case d2enum.HeroAssassin: - return am.TranslateString("Assassin") - case d2enum.HeroSorceress: - return am.TranslateString("Sorceress") - case d2enum.HeroAmazon: - return am.TranslateString("Amazon") - case d2enum.HeroDruid: - return am.TranslateString("Druid") - default: - am.Error("Unknown Hero Class") - } - - // should not be reached - return "---" -} - // LoadPaletteTransform loads a palette transform file func (am *AssetManager) LoadPaletteTransform(path string) (*d2pl2.PL2, error) { if pl2, found := am.transforms.Retrieve(path); found { diff --git a/d2game/d2gamescreen/character_select.go b/d2game/d2gamescreen/character_select.go index 6bd355f8..b432adc6 100644 --- a/d2game/d2gamescreen/character_select.go +++ b/d2game/d2gamescreen/character_select.go @@ -349,7 +349,7 @@ func (v *CharacterSelect) updateCharacterBoxes() { heroName := v.gameStates[idx].HeroName heroInfo := v.asset.TranslateString("level") + " " + strconv.FormatInt(int64(v.gameStates[idx].Stats.Level), 10) + - " " + v.asset.TranslateHeroClass(v.gameStates[idx].HeroType) + " " + v.asset.TranslateString(v.gameStates[idx].HeroType.String()) v.characterNameLabel[i].SetText(d2ui.ColorTokenize(heroName, d2ui.ColorTokenGold)) v.characterStatsLabel[i].SetText(d2ui.ColorTokenize(heroInfo, d2ui.ColorTokenWhite)) diff --git a/d2game/d2gamescreen/main_menu.go b/d2game/d2gamescreen/main_menu.go index 95239f15..e655b5fc 100644 --- a/d2game/d2gamescreen/main_menu.go +++ b/d2game/d2gamescreen/main_menu.go @@ -282,7 +282,7 @@ func (v *MainMenu) loadBackgroundSprites() { } func translateLabel(label int, lng string, asset *d2asset.AssetManager) string { - return asset.TranslateString(fmt.Sprintf("#%d", baseLabelNumbers(label+d2resource.GetLabelModificator(lng)))) + return asset.TranslateString(fmt.Sprintf("#%d", baseLabelNumbers(label+d2resource.GetLabelModifier(lng)))) } func (v *MainMenu) createLabels(loading d2screen.LoadingState) { diff --git a/d2game/d2player/hero_stats_panel.go b/d2game/d2player/hero_stats_panel.go index d1814a65..89658943 100644 --- a/d2game/d2player/hero_stats_panel.go +++ b/d2game/d2player/hero_stats_panel.go @@ -254,7 +254,7 @@ func (s *HeroStatsPanel) renderStaticLabels(target d2interface.Surface) { centerAlign bool }{ {labelHeroNameX, labelHeroNameY, s.heroName, d2resource.Font16, true}, - {labelHeroClassX, labelHeroClassY, s.asset.TranslateHeroClass(s.heroClass), d2resource.Font16, true}, + {labelHeroClassX, labelHeroClassY, s.asset.TranslateString(s.heroClass.String()), d2resource.Font16, true}, {labelLevelX, labelLevelY, s.asset.TranslateString("strchrlvl"), d2resource.Font6, true}, {labelExperienceX, labelExperienceY, s.asset.TranslateString("strchrexp"), d2resource.Font6, true},