diff --git a/domain/init.go b/domain/init.go new file mode 100644 index 0000000..04cef21 --- /dev/null +++ b/domain/init.go @@ -0,0 +1,51 @@ +package domain + +import ( + "game/konstructor" + "image/color" + + "github.com/hajimehoshi/ebiten" +) + +func (d *Domain) GetInitialKContext() *konstructor.KContext { + return &konstructor.KContext{ + ScreenType: konstructor.PlaygroundScreenType, + ActiveMenu: MainMenu, + ActiveDialog: DialogTest, + CurrentLevel: 0, + CurrentPlayground: 0, + Multiplayer: false, + LiveCount: 3, + } +} + +func (d *Domain) GetInitialConfig() *konstructor.Config { + return &konstructor.Config{ + Name: "Teletype Adventure", + Screen: &konstructor.ScreenConfig{ + Width: 640, + Height: 480, + Scale: 2, + }, + Header: &konstructor.HeaderConfig{ + BackgroundColor: color.RGBA{ + R: 0, + G: 255, + B: 0, + A: 200, + }, + Height: 20, + FontLayout: GetHeaderFontLayout(), + }, + KeyMap: konstructor.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, + }, + } +} diff --git a/konstructor/interface.domain.go b/konstructor/interface.domain.go index 12ba255..39e4a28 100644 --- a/konstructor/interface.domain.go +++ b/konstructor/interface.domain.go @@ -13,6 +13,9 @@ type DomainBaseFields struct { type DomainInterface interface { Init() + GetInitialKContext() *KContext + GetInitialConfig() *Config + GetMenuMap() MenuMap GetMenu(name MenuMapKey) Menu SetMenu(name MenuMapKey, menu Menu) diff --git a/konstructor/konstructor.go b/konstructor/konstructor.go index e71de58..d2fd55a 100644 --- a/konstructor/konstructor.go +++ b/konstructor/konstructor.go @@ -2,8 +2,6 @@ package konstructor type Konstructor struct { Domain DomainInterface - KContext *KContext - Config *Config EngineWrapper EngineWrapperInterface } @@ -11,8 +9,8 @@ func (k Konstructor) Init() { k.Domain.Init() k.EngineWrapper.Init(EngineArgs{ Domain: k.Domain, - KContext: k.KContext, - Config: k.Config, + KContext: k.Domain.GetInitialKContext(), + Config: k.Domain.GetInitialConfig(), }) k.EngineWrapper.Run() } diff --git a/main.go b/main.go index 9e19f3f..84d7fcc 100644 --- a/main.go +++ b/main.go @@ -4,52 +4,12 @@ import ( "game/domain" "game/konstructor" "game/konstructor/engines/easy_ebitengine" - "image/color" - - "github.com/hajimehoshi/ebiten" ) func main() { k := konstructor.Konstructor{ EngineWrapper: &easy_ebitengine.EngineWrapper{}, Domain: &domain.Domain{}, - KContext: &konstructor.KContext{ - ScreenType: konstructor.PlaygroundScreenType, - ActiveMenu: domain.MainMenu, - ActiveDialog: domain.DialogTest, - CurrentLevel: 0, - CurrentPlayground: 0, - Multiplayer: false, - LiveCount: 3, - }, - Config: &konstructor.Config{ - Name: "Teletype Adventure", - Screen: &konstructor.ScreenConfig{ - Width: 640, - Height: 480, - Scale: 2, - }, - Header: &konstructor.HeaderConfig{ - BackgroundColor: color.RGBA{ - R: 0, - G: 255, - B: 0, - A: 200, - }, - Height: 20, - FontLayout: domain.GetHeaderFontLayout(), - }, - KeyMap: konstructor.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, - }, - }, } k.Init() }