introduce enums as map keys

This commit is contained in:
2023-07-07 00:56:33 +02:00
parent 415a564317
commit faa6f00891
15 changed files with 52 additions and 31 deletions

View File

@@ -4,9 +4,13 @@ import (
"game/konstructor" "game/konstructor"
) )
const (
DialogTest konstructor.DialogMapKey = "DialogTest"
)
func (d *Domain) InitDialog() { func (d *Domain) InitDialog() {
d.DialogMap = konstructor.DialogMap{ d.DialogMap = konstructor.DialogMap{
"TestDialog": { DialogTest: {
Layout: konstructor.DialogLayout{ Layout: konstructor.DialogLayout{
ChoiceFont: GetDefaultFontLayout(), ChoiceFont: GetDefaultFontLayout(),
}, },
@@ -28,11 +32,11 @@ func (d *Domain) GetDialogMap() konstructor.DialogMap {
return d.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] value, _ := d.DialogMap[name]
return value 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 d.DialogMap[name] = dialog
} }

View File

@@ -10,7 +10,7 @@ func (d *Domain) GetItemTypeMap() konstructor.ItemTypeMap {
return d.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] value, _ := d.ItemTypeMap[name]
return value return value
} }

View File

@@ -6,9 +6,14 @@ import (
"os" "os"
) )
const (
MainMenu konstructor.MenuMapKey = "MainMenu"
GameMenu konstructor.MenuMapKey = "GameMenu"
)
func (d *Domain) InitMenu() { func (d *Domain) InitMenu() {
d.MenuMap = konstructor.MenuMap{ d.MenuMap = konstructor.MenuMap{
"MainMenu": { MainMenu: {
CurrentSelected: 0, CurrentSelected: 0,
Layout: konstructor.MenuLayout{ Layout: konstructor.MenuLayout{
MenuItemFont: GetDefaultFontLayout(), MenuItemFont: GetDefaultFontLayout(),
@@ -31,7 +36,7 @@ func (d *Domain) InitMenu() {
}, },
}, },
}, },
"GameMenu": { GameMenu: {
CurrentSelected: 0, CurrentSelected: 0,
Layout: konstructor.MenuLayout{ Layout: konstructor.MenuLayout{
MenuItemFont: GetDefaultFontLayout(), MenuItemFont: GetDefaultFontLayout(),
@@ -56,12 +61,12 @@ func (d *Domain) GetMenuMap() konstructor.MenuMap {
return d.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] value, _ := d.MenuMap[name]
return value 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 d.MenuMap[name] = menu
} }

View File

@@ -10,7 +10,7 @@ func (d *Domain) GetNPCTypeMap() konstructor.NPCTypeMap {
return d.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] value, _ := d.NPCTypeMap[name]
return value return value
} }

View File

@@ -19,7 +19,7 @@ func (d *Domain) GetObjectTypeMap() konstructor.ObjectTypeMap {
return d.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] value, _ := d.ObjectTypeMap[name]
return value return value
} }

View File

@@ -6,7 +6,7 @@ import (
) )
func (e *Engine) DialogUpdate() { func (e *Engine) DialogUpdate() {
dialog := e.Domain.GetDialog(e.KContext.ScreenValue) dialog := e.Domain.GetDialog(e.KContext.ActiveDialog)
if e.UpPressed() && dialog.CurrentSelected != 0 { if e.UpPressed() && dialog.CurrentSelected != 0 {
dialog.CurrentSelected-- dialog.CurrentSelected--
@@ -19,11 +19,11 @@ func (e *Engine) DialogUpdate() {
if e.Action0Pressed() { if e.Action0Pressed() {
dialog.Choices[dialog.CurrentSelected].Handler() 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) { 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() face := dialog.Layout.ChoiceFont.GetFontFace()

View File

@@ -6,7 +6,7 @@ import (
) )
func (e *Engine) MenuUpdate() { func (e *Engine) MenuUpdate() {
menu := e.Domain.GetMenu(e.KContext.ScreenValue) menu := e.Domain.GetMenu(e.KContext.ActiveMenu)
if e.UpPressed() && menu.CurrentSelected != 0 { if e.UpPressed() && menu.CurrentSelected != 0 {
menu.CurrentSelected-- menu.CurrentSelected--
@@ -20,11 +20,11 @@ func (e *Engine) MenuUpdate() {
menu.MenuItems[menu.CurrentSelected].Handler() 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) { 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() face := menu.Layout.MenuItemFont.GetFontFace()
for i, menu_item := range menu.MenuItems { for i, menu_item := range menu.MenuItems {

View File

@@ -2,7 +2,9 @@ package konstructor
import "image/color" import "image/color"
type DialogMap map[string]Dialog type DialogMapKey string
type DialogMap map[DialogMapKey]Dialog
type DialogLayout struct { type DialogLayout struct {
Render Render Render Render

View File

@@ -13,24 +13,24 @@ type DomainInterface interface {
Init() Init()
GetMenuMap() MenuMap GetMenuMap() MenuMap
GetMenu(name string) Menu GetMenu(name MenuMapKey) Menu
SetMenu(name string, menu Menu) SetMenu(name MenuMapKey, menu Menu)
GetDialogMap() DialogMap GetDialogMap() DialogMap
GetDialog(name string) Dialog GetDialog(name DialogMapKey) Dialog
SetDialog(name string, menu Dialog) SetDialog(name DialogMapKey, menu Dialog)
GetLevels() []Level GetLevels() []Level
GetLevel(index int) Level GetLevel(index int) Level
GetObjectTypeMap() ObjectTypeMap GetObjectTypeMap() ObjectTypeMap
GetObjectType(name string) ObjectType GetObjectType(name ObjectTypeMapKey) ObjectType
GetItemTypeMap() ItemTypeMap GetItemTypeMap() ItemTypeMap
GetItemType(name string) ItemType GetItemType(name ItemTypeMapKey) ItemType
GetNPCTypeMap() NPCTypeMap GetNPCTypeMap() NPCTypeMap
GetNPCType(name string) NPCType GetNPCType(name NPCTypeMapKey) NPCType
AddToInventory(item *Item) bool AddToInventory(item *Item) bool
RemoveFromInventory(item *Item) bool RemoveFromInventory(item *Item) bool

View File

@@ -1,6 +1,8 @@
package konstructor package konstructor
type ItemTypeMap map[string]ItemType type ItemTypeMapKey string
type ItemTypeMap map[ItemTypeMapKey]ItemType
type ItemType struct { type ItemType struct {
ID string ID string

View File

@@ -2,7 +2,8 @@ package konstructor
type KContext struct { type KContext struct {
ScreenType ScreenType ScreenType ScreenType
ScreenValue string ActiveMenu MenuMapKey
ActiveDialog DialogMapKey
CurrentLevel int CurrentLevel int
CurrentPlayground int CurrentPlayground int
Players []Player Players []Player

View File

@@ -2,7 +2,9 @@ package konstructor
import "image/color" import "image/color"
type MenuMap map[string]Menu type MenuMapKey string
type MenuMap map[MenuMapKey]Menu
type MenuLayout struct { type MenuLayout struct {
MenuItemFont FontLayout MenuItemFont FontLayout

View File

@@ -1,6 +1,8 @@
package konstructor package konstructor
type NPCTypeMap map[string]NPCType type NPCTypeMapKey string
type NPCTypeMap map[NPCTypeMapKey]NPCType
type NPCType struct { type NPCType struct {
ID string ID string

View File

@@ -1,6 +1,8 @@
package konstructor package konstructor
type ObjectTypeMap map[string]ObjectType type ObjectTypeMapKey string
type ObjectTypeMap map[ObjectTypeMapKey]ObjectType
type ObjectType struct { type ObjectType struct {
ID string ID string

View File

@@ -13,8 +13,9 @@ func main() {
EngineWrapper: &easy_ebitengine.EngineWrapper{}, EngineWrapper: &easy_ebitengine.EngineWrapper{},
Domain: &domain.Domain{}, Domain: &domain.Domain{},
KContext: &konstructor.KContext{ KContext: &konstructor.KContext{
ScreenType: konstructor.PlaygroundScreenType, ScreenType: konstructor.DialogScreenType,
ScreenValue: "MainMenu", ActiveMenu: domain.MainMenu,
ActiveDialog: domain.DialogTest,
CurrentLevel: 0, CurrentLevel: 0,
CurrentPlayground: 0, CurrentPlayground: 0,
}, },