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"
)
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
}

View File

@@ -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
}

View File

@@ -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
}

View File

@@ -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
}

View File

@@ -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
}

View File

@@ -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()

View File

@@ -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 {

View File

@@ -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

View File

@@ -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

View File

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

View File

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

View File

@@ -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

View File

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

View File

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

View File

@@ -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,
},