From 6041c26eaa9e73bda89e42bf1e160cea43351218 Mon Sep 17 00:00:00 2001 From: Zsolt Tasnadi Date: Tue, 4 Jul 2023 23:48:00 +0200 Subject: [PATCH] merge controller to engine --- konstructor/engine/engine.controller.go | 48 +++++++++++-------------- konstructor/engine/engine.go | 9 ++--- konstructor/engine/screen.dialog.go | 6 ++-- konstructor/engine/screen.menu.go | 6 ++-- konstructor/konstructor.go | 16 ++++----- main.go | 25 ++++++------- 6 files changed, 51 insertions(+), 59 deletions(-) diff --git a/konstructor/engine/engine.controller.go b/konstructor/engine/engine.controller.go index c3e5942..5d760f7 100644 --- a/konstructor/engine/engine.controller.go +++ b/konstructor/engine/engine.controller.go @@ -2,62 +2,56 @@ package engine import ( "fmt" - "game/konstructor/entity" "reflect" "github.com/hajimehoshi/ebiten" "github.com/hajimehoshi/ebiten/inpututil" ) -type Controller struct { - PressedKey ebiten.Key - KeyMap entity.KeyMap -} - -func (c *Controller) Watch() { - values := reflect.ValueOf(c.KeyMap) +func (e *Engine) WatchKeyPress() { + values := reflect.ValueOf(e.KeyMap) for i := 0; i < values.NumField(); i++ { key := values.Field(i).Interface().(ebiten.Key) if inpututil.IsKeyJustPressed(key) { fmt.Printf("Key pressed: %s\n", key) - c.PressedKey = key + e.PressedKey = key } } } -func (c *Controller) Clear() { - c.PressedKey = Controller{}.PressedKey +func (e *Engine) ClearKeyPresed() { + e.PressedKey = Engine{}.PressedKey } -func (c *Controller) UpPressed() bool { - return c.PressedKey == c.KeyMap.Up +func (e *Engine) UpPressed() bool { + return e.PressedKey == e.KeyMap.Up } -func (c *Controller) DownPressed() bool { - return c.PressedKey == c.KeyMap.Down +func (e *Engine) DownPressed() bool { + return e.PressedKey == e.KeyMap.Down } -func (c *Controller) RightPressed() bool { - return c.PressedKey == c.KeyMap.Right +func (e *Engine) RightPressed() bool { + return e.PressedKey == e.KeyMap.Right } -func (c *Controller) LeftPressed() bool { - return c.PressedKey == c.KeyMap.Left +func (e *Engine) LeftPressed() bool { + return e.PressedKey == e.KeyMap.Left } -func (c *Controller) Action0Pressed() bool { - return c.PressedKey == c.KeyMap.Action0 +func (e *Engine) Action0Pressed() bool { + return e.PressedKey == e.KeyMap.Action0 } -func (c *Controller) Action1Pressed() bool { - return c.PressedKey == c.KeyMap.Action1 +func (e *Engine) Action1Pressed() bool { + return e.PressedKey == e.KeyMap.Action1 } -func (c *Controller) Action2Pressed() bool { - return c.PressedKey == c.KeyMap.Action2 +func (e *Engine) Action2Pressed() bool { + return e.PressedKey == e.KeyMap.Action2 } -func (c *Controller) Action3Pressed() bool { - return c.PressedKey == c.KeyMap.Action3 +func (e *Engine) Action3Pressed() bool { + return e.PressedKey == e.KeyMap.Action3 } diff --git a/konstructor/engine/engine.go b/konstructor/engine/engine.go index e86a290..ca0f246 100644 --- a/konstructor/engine/engine.go +++ b/konstructor/engine/engine.go @@ -9,9 +9,10 @@ import ( type Engine struct { Domain entity.DomainInterface - Controller *Controller Settings *entity.Settings KContext *entity.KContext + KeyMap entity.KeyMap + PressedKey ebiten.Key } func (e *Engine) Layout(outsideWidth, outsideHeight int) (int, int) { @@ -23,7 +24,7 @@ func (e *Engine) ScreenTypeIs(name string) bool { } func (e *Engine) Update(screen *ebiten.Image) error { - e.Controller.Watch() + e.WatchKeyPress() if e.ScreenTypeIs("menu") { e.MenuUpdate() } @@ -46,8 +47,8 @@ func (e *Engine) Draw(screen *ebiten.Image) { if e.ScreenTypeIs("playground") { e.PlaygroundDraw(screen) } - if e.Controller.Action3Pressed() { + if e.Action3Pressed() { os.Exit(1) } - e.Controller.Clear() + e.ClearKeyPresed() } diff --git a/konstructor/engine/screen.dialog.go b/konstructor/engine/screen.dialog.go index 285a9d5..a128eff 100644 --- a/konstructor/engine/screen.dialog.go +++ b/konstructor/engine/screen.dialog.go @@ -19,15 +19,15 @@ func (e *Engine) DialogDraw(screen *ebiten.Image) { func (e *Engine) DialogUpdate() { dialog := e.Domain.GetDialog(e.KContext.Screen.Value) - if e.Controller.UpPressed() && dialog.CurrentSelected != 0 { + if e.UpPressed() && dialog.CurrentSelected != 0 { dialog.CurrentSelected-- } - if e.Controller.DownPressed() && dialog.CurrentSelected != len(dialog.Choices)-1 { + if e.DownPressed() && dialog.CurrentSelected != len(dialog.Choices)-1 { dialog.CurrentSelected++ } - if e.Controller.Action0Pressed() { + if e.Action0Pressed() { dialog.Choices[dialog.CurrentSelected].Handler() } e.Domain.SetDialog(e.KContext.Screen.Value, dialog) diff --git a/konstructor/engine/screen.menu.go b/konstructor/engine/screen.menu.go index 9333c03..f19034f 100644 --- a/konstructor/engine/screen.menu.go +++ b/konstructor/engine/screen.menu.go @@ -19,15 +19,15 @@ func (e *Engine) MenuDraw(screen *ebiten.Image) { func (e *Engine) MenuUpdate() { menu := e.Domain.GetMenu(e.KContext.Screen.Value) - if e.Controller.UpPressed() && menu.CurrentSelected != 0 { + if e.UpPressed() && menu.CurrentSelected != 0 { menu.CurrentSelected-- } - if e.Controller.DownPressed() && menu.CurrentSelected != len(menu.MenuItems)-1 { + if e.DownPressed() && menu.CurrentSelected != len(menu.MenuItems)-1 { menu.CurrentSelected++ } - if e.Controller.Action0Pressed() { + if e.Action0Pressed() { menu.MenuItems[menu.CurrentSelected].Handler() } diff --git a/konstructor/konstructor.go b/konstructor/konstructor.go index dcd6b2b..72e5dc7 100644 --- a/konstructor/konstructor.go +++ b/konstructor/konstructor.go @@ -8,10 +8,10 @@ import ( ) type Konstructor struct { - Domain entity.DomainInterface - Controller *engine.Controller - Settings *entity.Settings - KContext *entity.KContext + Domain entity.DomainInterface + KeyMap entity.KeyMap + Settings *entity.Settings + KContext *entity.KContext } func (k Konstructor) Init() { @@ -27,9 +27,9 @@ func (k Konstructor) SetWindow() { func (k Konstructor) Run() { ebiten.RunGame(&engine.Engine{ - KContext: k.KContext, - Domain: k.Domain, - Controller: k.Controller, - Settings: k.Settings, + KContext: k.KContext, + Domain: k.Domain, + KeyMap: k.KeyMap, + Settings: k.Settings, }) } diff --git a/main.go b/main.go index c03a33c..1c9d961 100644 --- a/main.go +++ b/main.go @@ -3,7 +3,6 @@ package main import ( "game/domain" "game/konstructor" - "game/konstructor/engine" "game/konstructor/entity" "github.com/hajimehoshi/ebiten" @@ -13,8 +12,8 @@ func main() { k := konstructor.Konstructor{ KContext: &entity.KContext{ Screen: entity.KContextScreen{ - Type: "playground", - Value: "", + Type: "menu", + Value: "MainMenu", }, CurrentLevel: 0, }, @@ -28,17 +27,15 @@ func main() { }, }, }, - Controller: &engine.Controller{ - KeyMap: entity.KeyMap{ - Up: ebiten.KeyUp, - Down: ebiten.KeyDown, - Right: ebiten.KeyRight, - Left: ebiten.KeyLeft, - Action0: ebiten.KeySpace, - Action1: ebiten.KeyAlt, - Action2: ebiten.KeyControl, - Action3: ebiten.KeyEscape, - }, + KeyMap: entity.KeyMap{ + Up: ebiten.KeyUp, + Down: ebiten.KeyDown, + Right: ebiten.KeyRight, + Left: ebiten.KeyLeft, + Action0: ebiten.KeySpace, + Action1: ebiten.KeyAlt, + Action2: ebiten.KeyControl, + Action3: ebiten.KeyEscape, }, Settings: &entity.Settings{ Name: "Game",