restructure domain-presenter relation

This commit is contained in:
2023-06-30 17:14:08 +02:00
parent bab177a71d
commit bd63d00ad9
5 changed files with 37 additions and 40 deletions

View File

@@ -1,11 +1,11 @@
package domain package domain
type User struct { type User struct {
name string Name string
} }
type Player struct { type Player struct {
name string Name string
} }
type GameField struct { type GameField struct {
@@ -24,10 +24,3 @@ type Context struct {
CurrentGameField GameField CurrentGameField GameField
CurrentPosition Position CurrentPosition Position
} }
func CreateContext() Context {
return Context{
Player: Player{},
User: User{},
}
}

View File

@@ -1,16 +1,10 @@
package domain package domain
type PresenterInterface interface {
Init()
}
type Domain struct { type Domain struct {
Context Context Context Context
Presenter PresenterInterface
} }
func (d Domain) Init() { func (d Domain) Init() {
d.Presenter.Init()
menu_manager := MenuManager{} menu_manager := MenuManager{}
menu_manager.Init() menu_manager.Init()
// level_manager := LevelManager{} // level_manager := LevelManager{}

31
main.go
View File

@@ -3,16 +3,35 @@ package main
import ( import (
"game/domain" "game/domain"
"game/presenter" "game/presenter"
"github.com/hajimehoshi/ebiten"
) )
func main() { func main() {
context := domain.CreateContext()
domain := domain.Domain{ domain := domain.Domain{
Context: context, Context: domain.Context{
Presenter: presenter.Presenter{ Player: domain.Player{
Context: context, Name: "Player One",
},
User: domain.User{
Name: "John Doe",
},
}, },
} }
domain.Init() presenter := presenter.Presenter{
Domain: domain,
Keyboard: presenter.Keyboard{
KeyMap: presenter.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,
},
},
}
presenter.Init()
} }

View File

@@ -24,19 +24,6 @@ type Keyboard struct {
KeyMap KeyMap KeyMap KeyMap
} }
func CreateDefaultKeyMap() KeyMap {
return 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,
}
}
func (k *Keyboard) Watch() { func (k *Keyboard) Watch() {
values := reflect.ValueOf(k.KeyMap) values := reflect.ValueOf(k.KeyMap)

View File

@@ -7,18 +7,22 @@ import (
"github.com/hajimehoshi/ebiten" "github.com/hajimehoshi/ebiten"
) )
type DomainInterface interface {
Init()
}
type Presenter struct { type Presenter struct {
Context domain.Context Context domain.Context
Domain DomainInterface
Keyboard Keyboard
} }
func (p Presenter) Init() { func (p Presenter) Init() {
ebiten.SetWindowSize(screenWidth*2, screenHeight*2) ebiten.SetWindowSize(screenWidth*2, screenHeight*2)
ebiten.SetWindowTitle("Game") ebiten.SetWindowTitle("Game")
if err := ebiten.RunGame(&GameEngine{ if err := ebiten.RunGame(&GameEngine{
Context: p.Context, Context: p.Context,
Keyboard: Keyboard{ Keyboard: p.Keyboard,
KeyMap: CreateDefaultKeyMap(),
},
}); err != nil { }); err != nil {
log.Fatal(err) log.Fatal(err)
} }