introduce enums as map keys
This commit is contained in:
@@ -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
|
||||
}
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
@@ -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()
|
||||
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
package konstructor
|
||||
|
||||
type ItemTypeMap map[string]ItemType
|
||||
type ItemTypeMapKey string
|
||||
|
||||
type ItemTypeMap map[ItemTypeMapKey]ItemType
|
||||
|
||||
type ItemType struct {
|
||||
ID string
|
||||
|
||||
@@ -2,7 +2,8 @@ package konstructor
|
||||
|
||||
type KContext struct {
|
||||
ScreenType ScreenType
|
||||
ScreenValue string
|
||||
ActiveMenu MenuMapKey
|
||||
ActiveDialog DialogMapKey
|
||||
CurrentLevel int
|
||||
CurrentPlayground int
|
||||
Players []Player
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
package konstructor
|
||||
|
||||
type NPCTypeMap map[string]NPCType
|
||||
type NPCTypeMapKey string
|
||||
|
||||
type NPCTypeMap map[NPCTypeMapKey]NPCType
|
||||
|
||||
type NPCType struct {
|
||||
ID string
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
package konstructor
|
||||
|
||||
type ObjectTypeMap map[string]ObjectType
|
||||
type ObjectTypeMapKey string
|
||||
|
||||
type ObjectTypeMap map[ObjectTypeMapKey]ObjectType
|
||||
|
||||
type ObjectType struct {
|
||||
ID string
|
||||
|
||||
5
main.go
5
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,
|
||||
},
|
||||
|
||||
Reference in New Issue
Block a user