add level skeleton

This commit is contained in:
2023-07-04 22:32:13 +02:00
parent 88cf7620be
commit 93b2725c8a
8 changed files with 130 additions and 12 deletions

View File

@@ -4,11 +4,12 @@ type User struct {
Name string Name string
} }
type Player struct { type PlayerState struct {
Name string Name string
} }
type Context struct { type Context struct {
Player Player PlayerState PlayerState
User User User User
Level int
} }

View File

@@ -8,9 +8,11 @@ type Domain struct {
Context Context Context Context
MenuMap konstructor.MenuMap MenuMap konstructor.MenuMap
DialogMap konstructor.DialogMap DialogMap konstructor.DialogMap
Levels []konstructor.Level
} }
func (d *Domain) Init() { func (d *Domain) Init() {
d.InitMenu() d.InitMenu()
d.InitDialog() d.InitDialog()
d.InitLevel()
} }

41
domain/level.go Normal file
View File

@@ -0,0 +1,41 @@
package domain
import (
"game/konstructor"
)
func (d *Domain) InitLevel() {
d.Levels = []konstructor.Level{
{
ID: "level_1",
Name: "Level I.",
Playgrounds: []konstructor.Playground{
{
Background: "level_1_playground_1.png",
Objects: []konstructor.Object{
{
ID: "test_object",
Position: konstructor.Position{
X: 10,
Y: 10,
Z: 0,
},
Type: konstructor.ObjectType{
ID: "test_object_type",
RenderOptions: konstructor.RenderOptions{
Image: "test_object.png",
Width: 30,
Height: 30,
},
},
},
},
},
},
},
}
}
func (d *Domain) GetLevel(index int) konstructor.Level {
return d.Levels[index]
}

View File

@@ -29,6 +29,9 @@ func (e *Engine) Update(screen *ebiten.Image) error {
if e.ScreenTypeIs("dialog") { if e.ScreenTypeIs("dialog") {
e.DialogUpdate() e.DialogUpdate()
} }
if e.ScreenTypeIs("playground") {
e.PlaygroundUpdate()
}
return nil return nil
} }
@@ -39,6 +42,9 @@ func (e *Engine) Draw(screen *ebiten.Image) {
if e.ScreenTypeIs("dialog") { if e.ScreenTypeIs("dialog") {
e.DialogDraw(screen) e.DialogDraw(screen)
} }
if e.ScreenTypeIs("playground") {
e.PlaygroundDraw(screen)
}
if e.Controller.Action3Pressed() { if e.Controller.Action3Pressed() {
os.Exit(1) os.Exit(1)
} }

View File

@@ -7,4 +7,5 @@ type KContextScreen struct {
type KContext struct { type KContext struct {
Screen KContextScreen Screen KContextScreen
CurrentLevel int
} }

View File

@@ -15,6 +15,7 @@ type DomainInterface interface {
SetMenu(name string, menu Menu) SetMenu(name string, menu Menu)
GetDialog(name string) Dialog GetDialog(name string) Dialog
SetDialog(name string, menu Dialog) SetDialog(name string, menu Dialog)
GetLevel(index int) Level
} }
type ScreenSettings struct { type ScreenSettings struct {

View File

@@ -1,12 +1,77 @@
package konstructor package konstructor
type PlaygroundObject struct { import (
"github.com/hajimehoshi/ebiten"
)
type Position struct {
X int
Y int
Z int
}
type RenderOptions struct {
Image string Image string
PosX int Width int
PosY int Height int
}
type ObjectType struct {
ID string
RenderOptions RenderOptions
}
type Object struct {
ID string
Type ObjectType
Position Position
}
type NPCType struct {
ID string
RenderOptions RenderOptions
}
type NPC struct {
ID string
Type NPCType
Position Position
}
type Player struct {
ID string
RenderOptions RenderOptions
Position Position
}
type ItemType struct {
ID string
RenderOptions RenderOptions
}
type Item struct {
ID string
Type ItemType
Position Position
} }
type Playground struct { type Playground struct {
Background string Background string
Objects []PlaygroundObject Objects []Object
NPCs []NPC
Items []Item
}
type Level struct {
ID string
Name string
Playgrounds []Playground
}
func (e *Engine) PlaygroundDraw(screen *ebiten.Image) {
e.Domain.GetLevel(e.KContext.CurrentLevel)
}
func (e *Engine) PlaygroundUpdate() {
e.Domain.GetLevel(e.KContext.CurrentLevel)
} }

View File

@@ -12,13 +12,14 @@ func main() {
k := konstructor.Konstructor{ k := konstructor.Konstructor{
KContext: &konstructor.KContext{ KContext: &konstructor.KContext{
Screen: konstructor.KContextScreen{ Screen: konstructor.KContextScreen{
Type: "dialog", Type: "playground",
Value: "TestDialog", Value: "",
}, },
CurrentLevel: 0,
}, },
Domain: &domain.Domain{ Domain: &domain.Domain{
Context: domain.Context{ Context: domain.Context{
Player: domain.Player{ PlayerState: domain.PlayerState{
Name: "Player One", Name: "Player One",
}, },
User: domain.User{ User: domain.User{