From faa6f00891369a8e9c78a3bfecd932dcaa8d760a Mon Sep 17 00:00:00 2001 From: Zsolt Tasnadi Date: Fri, 7 Jul 2023 00:56:33 +0200 Subject: [PATCH] introduce enums as map keys --- domain/dialog.go | 10 +++++++--- domain/item_type.go | 2 +- domain/menu.go | 13 +++++++++---- domain/npc_type.go | 2 +- domain/object_type.go | 2 +- .../engines/easy_ebitengine/screen.dialog.go | 6 +++--- konstructor/engines/easy_ebitengine/screen.menu.go | 6 +++--- konstructor/entity.dialog.go | 4 +++- konstructor/entity.domain.go | 14 +++++++------- konstructor/entity.item.go | 4 +++- konstructor/entity.kcontext.go | 3 ++- konstructor/entity.menu.go | 4 +++- konstructor/entity.npc.go | 4 +++- konstructor/entity.object.go | 4 +++- main.go | 5 +++-- 15 files changed, 52 insertions(+), 31 deletions(-) diff --git a/domain/dialog.go b/domain/dialog.go index 45d5eb7..48461e6 100644 --- a/domain/dialog.go +++ b/domain/dialog.go @@ -4,9 +4,13 @@ import ( "game/konstructor" ) +const ( + DialogTest konstructor.DialogMapKey = "DialogTest" +) + func (d *Domain) InitDialog() { d.DialogMap = konstructor.DialogMap{ - "TestDialog": { + DialogTest: { Layout: konstructor.DialogLayout{ ChoiceFont: GetDefaultFontLayout(), }, @@ -28,11 +32,11 @@ func (d *Domain) GetDialogMap() konstructor.DialogMap { return d.DialogMap } -func (d *Domain) GetDialog(name string) konstructor.Dialog { +func (d *Domain) GetDialog(name konstructor.DialogMapKey) konstructor.Dialog { value, _ := d.DialogMap[name] return value } -func (d *Domain) SetDialog(name string, dialog konstructor.Dialog) { +func (d *Domain) SetDialog(name konstructor.DialogMapKey, dialog konstructor.Dialog) { d.DialogMap[name] = dialog } diff --git a/domain/item_type.go b/domain/item_type.go index de1d47d..90d45d4 100644 --- a/domain/item_type.go +++ b/domain/item_type.go @@ -10,7 +10,7 @@ func (d *Domain) GetItemTypeMap() konstructor.ItemTypeMap { return d.ItemTypeMap } -func (d *Domain) GetItemType(name string) konstructor.ItemType { +func (d *Domain) GetItemType(name konstructor.ItemTypeMapKey) konstructor.ItemType { value, _ := d.ItemTypeMap[name] return value } diff --git a/domain/menu.go b/domain/menu.go index 3e11fdb..05065ee 100644 --- a/domain/menu.go +++ b/domain/menu.go @@ -6,9 +6,14 @@ import ( "os" ) +const ( + MainMenu konstructor.MenuMapKey = "MainMenu" + GameMenu konstructor.MenuMapKey = "GameMenu" +) + func (d *Domain) InitMenu() { d.MenuMap = konstructor.MenuMap{ - "MainMenu": { + MainMenu: { CurrentSelected: 0, Layout: konstructor.MenuLayout{ MenuItemFont: GetDefaultFontLayout(), @@ -31,7 +36,7 @@ func (d *Domain) InitMenu() { }, }, }, - "GameMenu": { + GameMenu: { CurrentSelected: 0, Layout: konstructor.MenuLayout{ MenuItemFont: GetDefaultFontLayout(), @@ -56,12 +61,12 @@ func (d *Domain) GetMenuMap() konstructor.MenuMap { return d.MenuMap } -func (d *Domain) GetMenu(name string) konstructor.Menu { +func (d *Domain) GetMenu(name konstructor.MenuMapKey) konstructor.Menu { value, _ := d.MenuMap[name] return value } -func (d *Domain) SetMenu(name string, menu konstructor.Menu) { +func (d *Domain) SetMenu(name konstructor.MenuMapKey, menu konstructor.Menu) { d.MenuMap[name] = menu } diff --git a/domain/npc_type.go b/domain/npc_type.go index d8a9721..ed31611 100644 --- a/domain/npc_type.go +++ b/domain/npc_type.go @@ -10,7 +10,7 @@ func (d *Domain) GetNPCTypeMap() konstructor.NPCTypeMap { return d.NPCTypeMap } -func (d *Domain) GetNPCType(name string) konstructor.NPCType { +func (d *Domain) GetNPCType(name konstructor.NPCTypeMapKey) konstructor.NPCType { value, _ := d.NPCTypeMap[name] return value } diff --git a/domain/object_type.go b/domain/object_type.go index 6020ef0..fceff56 100644 --- a/domain/object_type.go +++ b/domain/object_type.go @@ -19,7 +19,7 @@ func (d *Domain) GetObjectTypeMap() konstructor.ObjectTypeMap { return d.ObjectTypeMap } -func (d *Domain) GetObjectType(name string) konstructor.ObjectType { +func (d *Domain) GetObjectType(name konstructor.ObjectTypeMapKey) konstructor.ObjectType { value, _ := d.ObjectTypeMap[name] return value } diff --git a/konstructor/engines/easy_ebitengine/screen.dialog.go b/konstructor/engines/easy_ebitengine/screen.dialog.go index 8d58f6c..4ef396f 100644 --- a/konstructor/engines/easy_ebitengine/screen.dialog.go +++ b/konstructor/engines/easy_ebitengine/screen.dialog.go @@ -6,7 +6,7 @@ import ( ) func (e *Engine) DialogUpdate() { - dialog := e.Domain.GetDialog(e.KContext.ScreenValue) + dialog := e.Domain.GetDialog(e.KContext.ActiveDialog) if e.UpPressed() && dialog.CurrentSelected != 0 { dialog.CurrentSelected-- @@ -19,11 +19,11 @@ func (e *Engine) DialogUpdate() { if e.Action0Pressed() { dialog.Choices[dialog.CurrentSelected].Handler() } - e.Domain.SetDialog(e.KContext.ScreenValue, dialog) + e.Domain.SetDialog(e.KContext.ActiveDialog, dialog) } func (e *Engine) DialogDraw(screen *ebiten.Image) { - dialog := e.Domain.GetDialog(e.KContext.ScreenValue) + dialog := e.Domain.GetDialog(e.KContext.ActiveDialog) face := dialog.Layout.ChoiceFont.GetFontFace() diff --git a/konstructor/engines/easy_ebitengine/screen.menu.go b/konstructor/engines/easy_ebitengine/screen.menu.go index d33c7e3..b3a4aa1 100644 --- a/konstructor/engines/easy_ebitengine/screen.menu.go +++ b/konstructor/engines/easy_ebitengine/screen.menu.go @@ -6,7 +6,7 @@ import ( ) func (e *Engine) MenuUpdate() { - menu := e.Domain.GetMenu(e.KContext.ScreenValue) + menu := e.Domain.GetMenu(e.KContext.ActiveMenu) if e.UpPressed() && menu.CurrentSelected != 0 { menu.CurrentSelected-- @@ -20,11 +20,11 @@ func (e *Engine) MenuUpdate() { menu.MenuItems[menu.CurrentSelected].Handler() } - e.Domain.SetMenu(e.KContext.ScreenValue, menu) + e.Domain.SetMenu(e.KContext.ActiveMenu, menu) } func (e *Engine) MenuDraw(screen *ebiten.Image) { - menu := e.Domain.GetMenu(e.KContext.ScreenValue) + menu := e.Domain.GetMenu(e.KContext.ActiveMenu) face := menu.Layout.MenuItemFont.GetFontFace() for i, menu_item := range menu.MenuItems { diff --git a/konstructor/entity.dialog.go b/konstructor/entity.dialog.go index 36aac2f..9b71f5d 100644 --- a/konstructor/entity.dialog.go +++ b/konstructor/entity.dialog.go @@ -2,7 +2,9 @@ package konstructor import "image/color" -type DialogMap map[string]Dialog +type DialogMapKey string + +type DialogMap map[DialogMapKey]Dialog type DialogLayout struct { Render Render diff --git a/konstructor/entity.domain.go b/konstructor/entity.domain.go index aa5cc7e..acf381c 100644 --- a/konstructor/entity.domain.go +++ b/konstructor/entity.domain.go @@ -13,24 +13,24 @@ type DomainInterface interface { Init() GetMenuMap() MenuMap - GetMenu(name string) Menu - SetMenu(name string, menu Menu) + GetMenu(name MenuMapKey) Menu + SetMenu(name MenuMapKey, menu Menu) GetDialogMap() DialogMap - GetDialog(name string) Dialog - SetDialog(name string, menu Dialog) + GetDialog(name DialogMapKey) Dialog + SetDialog(name DialogMapKey, menu Dialog) GetLevels() []Level GetLevel(index int) Level GetObjectTypeMap() ObjectTypeMap - GetObjectType(name string) ObjectType + GetObjectType(name ObjectTypeMapKey) ObjectType GetItemTypeMap() ItemTypeMap - GetItemType(name string) ItemType + GetItemType(name ItemTypeMapKey) ItemType GetNPCTypeMap() NPCTypeMap - GetNPCType(name string) NPCType + GetNPCType(name NPCTypeMapKey) NPCType AddToInventory(item *Item) bool RemoveFromInventory(item *Item) bool diff --git a/konstructor/entity.item.go b/konstructor/entity.item.go index ff2b708..ded21a0 100644 --- a/konstructor/entity.item.go +++ b/konstructor/entity.item.go @@ -1,6 +1,8 @@ package konstructor -type ItemTypeMap map[string]ItemType +type ItemTypeMapKey string + +type ItemTypeMap map[ItemTypeMapKey]ItemType type ItemType struct { ID string diff --git a/konstructor/entity.kcontext.go b/konstructor/entity.kcontext.go index 9e2840f..ee1939a 100644 --- a/konstructor/entity.kcontext.go +++ b/konstructor/entity.kcontext.go @@ -2,7 +2,8 @@ package konstructor type KContext struct { ScreenType ScreenType - ScreenValue string + ActiveMenu MenuMapKey + ActiveDialog DialogMapKey CurrentLevel int CurrentPlayground int Players []Player diff --git a/konstructor/entity.menu.go b/konstructor/entity.menu.go index 38f5b2b..229d6d2 100644 --- a/konstructor/entity.menu.go +++ b/konstructor/entity.menu.go @@ -2,7 +2,9 @@ package konstructor import "image/color" -type MenuMap map[string]Menu +type MenuMapKey string + +type MenuMap map[MenuMapKey]Menu type MenuLayout struct { MenuItemFont FontLayout diff --git a/konstructor/entity.npc.go b/konstructor/entity.npc.go index bcbffe3..9d4b027 100644 --- a/konstructor/entity.npc.go +++ b/konstructor/entity.npc.go @@ -1,6 +1,8 @@ package konstructor -type NPCTypeMap map[string]NPCType +type NPCTypeMapKey string + +type NPCTypeMap map[NPCTypeMapKey]NPCType type NPCType struct { ID string diff --git a/konstructor/entity.object.go b/konstructor/entity.object.go index ca77de5..db8069e 100644 --- a/konstructor/entity.object.go +++ b/konstructor/entity.object.go @@ -1,6 +1,8 @@ package konstructor -type ObjectTypeMap map[string]ObjectType +type ObjectTypeMapKey string + +type ObjectTypeMap map[ObjectTypeMapKey]ObjectType type ObjectType struct { ID string diff --git a/main.go b/main.go index 24a840e..d8e300a 100644 --- a/main.go +++ b/main.go @@ -13,8 +13,9 @@ func main() { EngineWrapper: &easy_ebitengine.EngineWrapper{}, Domain: &domain.Domain{}, KContext: &konstructor.KContext{ - ScreenType: konstructor.PlaygroundScreenType, - ScreenValue: "MainMenu", + ScreenType: konstructor.DialogScreenType, + ActiveMenu: domain.MainMenu, + ActiveDialog: domain.DialogTest, CurrentLevel: 0, CurrentPlayground: 0, },