From f2b64d4d052ec11909a7d0e9d65d56fa8fc5c0ee Mon Sep 17 00:00:00 2001 From: Zsolt Tasnadi Date: Tue, 27 Jun 2023 20:17:48 +0200 Subject: [PATCH] initial commit --- controller/controller.go | 15 +++++++++++ domain/context.go | 24 ++++++++++++++++++ domain/domain.go | 26 +++++++++++++++++++ domain/level.go | 27 ++++++++++++++++++++ domain/level.one.go | 5 ++++ domain/menu.go | 54 ++++++++++++++++++++++++++++++++++++++++ domain/menu.operation.go | 16 ++++++++++++ domain/screen.go | 13 ++++++++++ go.mod | 3 +++ main.go | 30 ++++++++++++++++++++++ presenter/presenter.go | 19 ++++++++++++++ 11 files changed, 232 insertions(+) create mode 100644 controller/controller.go create mode 100644 domain/context.go create mode 100644 domain/domain.go create mode 100644 domain/level.go create mode 100644 domain/level.one.go create mode 100644 domain/menu.go create mode 100644 domain/menu.operation.go create mode 100644 domain/screen.go create mode 100644 go.mod create mode 100644 main.go create mode 100644 presenter/presenter.go diff --git a/controller/controller.go b/controller/controller.go new file mode 100644 index 0000000..329f21b --- /dev/null +++ b/controller/controller.go @@ -0,0 +1,15 @@ +package controller + +import "game/domain" + +type Controller struct { + Context domain.Context +} + +func (c Controller) Init() { + +} + +func (c Controller) Start() { + +} diff --git a/domain/context.go b/domain/context.go new file mode 100644 index 0000000..30362ba --- /dev/null +++ b/domain/context.go @@ -0,0 +1,24 @@ +package domain + +type User struct { + name string +} + +type Player struct { + name string +} + +type GameField struct { + Level Level + LevelSection LevelSection +} + +type Context struct { + Player Player + User User + GameField GameField +} + +func CreateContext() Context { + return Context{} +} diff --git a/domain/domain.go b/domain/domain.go new file mode 100644 index 0000000..48f58b0 --- /dev/null +++ b/domain/domain.go @@ -0,0 +1,26 @@ +package domain + +type ControllerInterface interface { +} + +type PresenterInterface interface { +} + +type Domain struct { + Context Context + Controller ControllerInterface + Presenter PresenterInterface +} + +func (d Domain) Init() { + menu_manager := MenuManager{} + menu_manager.Init() + // level_manager := LevelManager{} + screen_manager := ScreenManager{} + screen_manager.GetCurrent() + +} + +func (d Domain) Start() { + +} diff --git a/domain/level.go b/domain/level.go new file mode 100644 index 0000000..28dcd13 --- /dev/null +++ b/domain/level.go @@ -0,0 +1,27 @@ +package domain + +type LevelSection struct { +} + +type Level struct { + LevelSections []LevelSection +} + +type LevelManager struct { +} + +func (lm LevelManager) Create(screens []LevelSection) Level { + return Level{ + LevelSections: screens, + } +} + +func (lm LevelManager) List() []Level { + return []Level{ + lm.Create(LevelOne()), + } +} + +func (lm LevelManager) Get() Level { + return Level{} +} diff --git a/domain/level.one.go b/domain/level.one.go new file mode 100644 index 0000000..a07d12c --- /dev/null +++ b/domain/level.one.go @@ -0,0 +1,5 @@ +package domain + +func LevelOne() []LevelSection { + return []LevelSection{} +} diff --git a/domain/menu.go b/domain/menu.go new file mode 100644 index 0000000..b1a6232 --- /dev/null +++ b/domain/menu.go @@ -0,0 +1,54 @@ +package domain + +type MenuItem struct { + ID string + Label string + Handler func() +} + +type Menu struct { + MenuItems []MenuItem +} + +type MenuManager struct { + MainMenu Menu + GameMenu Menu +} + +func createMenu(menuItems []MenuItem) Menu { + menu := Menu{ + MenuItems: menuItems, + } + return menu +} + +func (mm MenuManager) Init() { + + mo := MenuOperation{} + + mm.MainMenu = createMenu([]MenuItem{ + { + ID: "new", + Label: "New Game", + Handler: mo.StartGame, + }, + { + ID: "load", + Label: "Load Game", + Handler: mo.LoadtGame, + }, + }) + + mm.GameMenu = createMenu([]MenuItem{ + { + ID: "save", + Label: "Save Game", + Handler: mo.SaveGame, + }, + { + ID: "close", + Label: "Close Game", + Handler: mo.CloseGame, + }, + }) +} diff --git a/domain/menu.operation.go b/domain/menu.operation.go new file mode 100644 index 0000000..b5e1401 --- /dev/null +++ b/domain/menu.operation.go @@ -0,0 +1,16 @@ +package domain + +type MenuOperation struct { +} + +func (mo MenuOperation) CloseGame() { +} + +func (mo MenuOperation) LoadtGame() { +} + +func (mo MenuOperation) SaveGame() { +} + +func (mo MenuOperation) StartGame() { +} diff --git a/domain/screen.go b/domain/screen.go new file mode 100644 index 0000000..3b289a9 --- /dev/null +++ b/domain/screen.go @@ -0,0 +1,13 @@ +package domain + +type Screen struct { + Controller ControllerInterface +} + +type ScreenManager struct { + Context Context +} + +func (sm ScreenManager) GetCurrent() Screen { + return Screen{} +} diff --git a/go.mod b/go.mod new file mode 100644 index 0000000..1d8c98b --- /dev/null +++ b/go.mod @@ -0,0 +1,3 @@ +module game + +go 1.20 diff --git a/main.go b/main.go new file mode 100644 index 0000000..45bf935 --- /dev/null +++ b/main.go @@ -0,0 +1,30 @@ +package main + +import ( + "game/controller" + "game/domain" + "game/presenter" +) + +func main() { + context := domain.CreateContext() + + controller := controller.Controller{ + Context: context, + } + controller.Init() + + presenter := presenter.Presenter{ + Context: context, + } + presenter.Init() + + domain := domain.Domain{ + Context: context, + } + domain.Init() + + domain.Start() + controller.Start() + presenter.Start() +} diff --git a/presenter/presenter.go b/presenter/presenter.go new file mode 100644 index 0000000..d9f74ac --- /dev/null +++ b/presenter/presenter.go @@ -0,0 +1,19 @@ +package presenter + +import "game/domain" + +type Presenter struct { + Context domain.Context +} + +func (p Presenter) Init() { + +} + +func (p Presenter) Start() { + +} + +func (p Presenter) Process() { + +}