From 74272c09f2512ed16c345f1f890995de26393b4c Mon Sep 17 00:00:00 2001 From: Zsolt Tasnadi Date: Tue, 4 Jul 2023 20:10:14 +0200 Subject: [PATCH] GetMenu, SetMenu --- domain/domain.go | 2 ++ domain/menu.go | 67 +++++++++++++++++++++++++++++++++++ konstructor/engine.go | 1 - konstructor/konstructor.go | 4 +-- konstructor/menu.go | 6 ++-- main.go | 71 +++++--------------------------------- 6 files changed, 82 insertions(+), 69 deletions(-) diff --git a/domain/domain.go b/domain/domain.go index 4b8b485..00ce04b 100644 --- a/domain/domain.go +++ b/domain/domain.go @@ -7,9 +7,11 @@ import ( type Domain struct { Context Context + MenuMap konstructor.MenuMap } func (d *Domain) Init() { + d.InitMenu() } func (d *Domain) GetDialog() konstructor.Dialog { diff --git a/domain/menu.go b/domain/menu.go index a57b346..f32a475 100644 --- a/domain/menu.go +++ b/domain/menu.go @@ -2,9 +2,76 @@ package domain import ( "fmt" + "game/konstructor" + "image/color" "os" ) +func (d *Domain) InitMenu() { + d.MenuMap = konstructor.MenuMap{ + "MainMenu": { + CurrentSelected: 0, + Layout: konstructor.MenuLayout{ + MenuItemFont: konstructor.FontLayout{ + DPI: 72, + Size: 24, + Color: color.White, + SelectedColor: color.RGBA{R: 0, G: 255, B: 0, A: 100}, + }, + }, + MenuItems: []konstructor.MenuItem{ + { + ID: "start", + Label: "Start Game", + Handler: d.StartGame, + }, + { + ID: "load", + Label: "Load Game", + Handler: d.LoadtGame, + }, + { + ID: "exit", + Label: "Exit Game", + Handler: d.ExitGame, + }, + }, + }, + "GameMenu": { + CurrentSelected: 0, + Layout: konstructor.MenuLayout{ + MenuItemFont: konstructor.FontLayout{ + DPI: 72, + Size: 24, + Color: color.White, + SelectedColor: color.RGBA{R: 0, G: 255, B: 0, A: 100}, + }, + }, + MenuItems: []konstructor.MenuItem{ + { + ID: "save", + Label: "Save Game", + Handler: d.SaveGame, + }, + { + ID: "close", + Label: "Close Game", + Handler: d.CloseGame, + }, + }, + }, + } +} + +func (d *Domain) GetMenu(name string) konstructor.Menu { + value, _ := d.MenuMap[name] + return value +} + +func (d *Domain) SetMenu(name string, menu konstructor.Menu) { + d.MenuMap[name] = menu +} + func (d *Domain) CloseGame() { fmt.Println("Close game") } diff --git a/konstructor/engine.go b/konstructor/engine.go index 9b21eb9..92962e2 100644 --- a/konstructor/engine.go +++ b/konstructor/engine.go @@ -11,7 +11,6 @@ type Engine struct { Controller *Controller Settings *Settings KContext *KContext - MenuMap MenuMap } func (e *Engine) Layout(outsideWidth, outsideHeight int) (int, int) { diff --git a/konstructor/konstructor.go b/konstructor/konstructor.go index 3baeee3..f445b5d 100644 --- a/konstructor/konstructor.go +++ b/konstructor/konstructor.go @@ -11,6 +11,8 @@ type ContextInterface interface { type DomainInterface interface { Init() + GetMenu(name string) Menu + SetMenu(name string, menu Menu) GetDialog() Dialog } @@ -29,7 +31,6 @@ type Konstructor struct { Controller *Controller Settings *Settings KContext *KContext - MenuMap MenuMap } func (k Konstructor) Init() { @@ -37,7 +38,6 @@ func (k Konstructor) Init() { ebiten.SetWindowSize(k.Settings.Screen.Width, k.Settings.Screen.Height) ebiten.SetWindowTitle(k.Settings.Name) if err := ebiten.RunGame(&Engine{ - MenuMap: k.MenuMap, KContext: k.KContext, Domain: k.Domain, Controller: k.Controller, diff --git a/konstructor/menu.go b/konstructor/menu.go index d04c1b0..74d0adc 100644 --- a/konstructor/menu.go +++ b/konstructor/menu.go @@ -35,7 +35,7 @@ func (menu *Menu) GetMenuItemColor(i int) color.Color { } func (e *Engine) MenuDraw(screen *ebiten.Image) { - menu := e.MenuMap[e.KContext.Screen.Value] + menu := e.Domain.GetMenu(e.KContext.Screen.Value) face := GetFontFace(menu.Layout.MenuItemFont) for i, menu_item := range menu.MenuItems { @@ -46,7 +46,7 @@ func (e *Engine) MenuDraw(screen *ebiten.Image) { } func (e *Engine) MenuUpdate() { - menu := e.MenuMap[e.KContext.Screen.Value] + menu := e.Domain.GetMenu(e.KContext.Screen.Value) if e.Controller.UpPressed() && menu.CurrentSelected != 0 { menu.CurrentSelected-- @@ -60,5 +60,5 @@ func (e *Engine) MenuUpdate() { menu.MenuItems[menu.CurrentSelected].Handler() } - e.MenuMap[e.KContext.Screen.Value] = menu + e.Domain.SetMenu(e.KContext.Screen.Value, menu) } diff --git a/main.go b/main.go index 5299ca6..ffb13c7 100644 --- a/main.go +++ b/main.go @@ -3,81 +3,26 @@ package main import ( "game/domain" "game/konstructor" - "image/color" "github.com/hajimehoshi/ebiten" ) func main() { - d := domain.Domain{ - Context: domain.Context{ - Player: domain.Player{ - Name: "Player One", - }, - User: domain.User{ - Name: "John Doe", - }, - }, - } - k := konstructor.Konstructor{ KContext: &konstructor.KContext{ Screen: konstructor.KContextScreen{ - Type: "dialog", + Type: "menu", + Value: "MainMenu", }, }, - Domain: &d, - MenuMap: konstructor.MenuMap{ - "MainMenu": { - CurrentSelected: 0, - Layout: konstructor.MenuLayout{ - MenuItemFont: konstructor.FontLayout{ - DPI: 72, - Size: 24, - Color: color.White, - SelectedColor: color.RGBA{R: 0, G: 255, B: 0, A: 100}, - }, + Domain: &domain.Domain{ + Context: domain.Context{ + Player: domain.Player{ + Name: "Player One", }, - MenuItems: []konstructor.MenuItem{ - { - ID: "start", - Label: "Start Game", - Handler: d.StartGame, - }, - { - ID: "load", - Label: "Load Game", - Handler: d.LoadtGame, - }, - { - ID: "exit", - Label: "Exit Game", - Handler: d.ExitGame, - }, - }, - }, - "GameMenu": { - CurrentSelected: 0, - Layout: konstructor.MenuLayout{ - MenuItemFont: konstructor.FontLayout{ - DPI: 72, - Size: 24, - Color: color.White, - SelectedColor: color.RGBA{R: 0, G: 255, B: 0, A: 100}, - }, - }, - MenuItems: []konstructor.MenuItem{ - { - ID: "save", - Label: "Save Game", - Handler: d.SaveGame, - }, - { - ID: "close", - Label: "Close Game", - Handler: d.CloseGame, - }, + User: domain.User{ + Name: "John Doe", }, }, },