player as object

This commit is contained in:
2023-07-07 15:18:51 +02:00
parent 7ef126f02b
commit 1db9417dbb
9 changed files with 88 additions and 23 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 214 B

View File

@@ -15,5 +15,6 @@ func (d *Domain) Init() {
d.InitNPCType() d.InitNPCType()
d.InitMenu() d.InitMenu()
d.InitDialog() d.InitDialog()
d.InitPlayer()
d.InitLevel() d.InitLevel()
} }

38
domain/type.player.go Normal file
View File

@@ -0,0 +1,38 @@
package domain
import "game/konstructor"
const (
DefaultPlayerType konstructor.PlayerTypeID = "default"
)
func (d *Domain) InitPlayer() {
d.Players = []konstructor.Player{
{
ID: "default",
Type: konstructor.PlayerType{
ID: DefaultPlayerType,
Render: konstructor.Render{
Image: konstructor.GetPlayerTypeImagePath(DefaultPlayerType),
},
},
Position: konstructor.Position{
X: 70,
Y: 70,
Z: 1,
},
},
}
}
func (d *Domain) GetPlayers() []konstructor.Player {
return d.Players
}
func (d *Domain) GetPlayer(index int) konstructor.Player {
return d.Players[index]
}
func (d *Domain) GetDefaultPlayer() konstructor.Player {
return d.Players[0]
}

View File

@@ -19,6 +19,7 @@ func (e *Engine) PlaygroundDraw(screen *ebiten.Image) {
e.PlaygroundPlatformsDraw(screen) e.PlaygroundPlatformsDraw(screen)
e.PlaygroundItemsDraw(screen) e.PlaygroundItemsDraw(screen)
e.PlaygroundNPCsDraw(screen) e.PlaygroundNPCsDraw(screen)
e.PlaygroundDefaultPlayerDraw(screen)
} }
func (e *Engine) PlaygroundBackgroundDraw(screen *ebiten.Image) { func (e *Engine) PlaygroundBackgroundDraw(screen *ebiten.Image) {
@@ -66,6 +67,17 @@ func (e *Engine) PlaygroundNPCsDraw(screen *ebiten.Image) {
} }
} }
func (e *Engine) PlaygroundDefaultPlayerDraw(screen *ebiten.Image) {
player := e.Domain.GetDefaultPlayer()
geoM := ebiten.GeoM{}
render := player.Type.Render
geoM.Reset()
geoM.Translate(float64(player.Position.X), float64(player.Position.Y))
screen.DrawImage(e.GetImage(render), &ebiten.DrawImageOptions{
GeoM: geoM,
})
}
func (e *Engine) GetPlayground() konstructor.Playground { func (e *Engine) GetPlayground() konstructor.Playground {
level := e.Domain.GetLevel(e.KContext.CurrentLevel) level := e.Domain.GetLevel(e.KContext.CurrentLevel)
return level.Playgrounds[e.KContext.CurrentPlayground] return level.Playgrounds[e.KContext.CurrentPlayground]

View File

@@ -4,6 +4,7 @@ type DomainBaseFields struct {
MenuMap MenuMap MenuMap MenuMap
DialogMap DialogMap DialogMap DialogMap
Levels []Level Levels []Level
Players []Player
PlatformTypeMap PlatformTypeMap PlatformTypeMap PlatformTypeMap
ItemTypeMap ItemTypeMap ItemTypeMap ItemTypeMap
NPCTypeMap NPCTypeMap NPCTypeMap NPCTypeMap
@@ -23,6 +24,10 @@ type DomainInterface interface {
GetLevels() []Level GetLevels() []Level
GetLevel(index int) Level GetLevel(index int) Level
GetPlayers() []Player
GetPlayer(index int) Player
GetDefaultPlayer() Player
GetPlatformTypeMap() PlatformTypeMap GetPlatformTypeMap() PlatformTypeMap
GetPlatformType(name PlatformTypeMapKey) PlatformType GetPlatformType(name PlatformTypeMapKey) PlatformType

View File

@@ -6,11 +6,7 @@ type KContext struct {
ActiveDialog DialogMapKey ActiveDialog DialogMapKey
CurrentLevel int CurrentLevel int
CurrentPlayground int CurrentPlayground int
Players []Player Multiplayer bool
}
func (c *KContext) getPrimaryPlayer() Player {
return c.Players[0]
} }
func (c *KContext) ScreenTypeIs(name ScreenType) bool { func (c *KContext) ScreenTypeIs(name ScreenType) bool {

View File

@@ -6,6 +6,7 @@ const (
ItemObjectType ObjectType = "item" ItemObjectType ObjectType = "item"
NPCObjectType ObjectType = "npc" NPCObjectType ObjectType = "npc"
PlatformObjectType ObjectType = "platform" PlatformObjectType ObjectType = "platform"
PlayerObjectType ObjectType = "player"
) )
type ObjectDirectoryMap map[ObjectType]string type ObjectDirectoryMap map[ObjectType]string
@@ -14,6 +15,7 @@ var ObjectDirectories = ObjectDirectoryMap{
ItemObjectType: "items", ItemObjectType: "items",
NPCObjectType: "npcs", NPCObjectType: "npcs",
PlatformObjectType: "platforms", PlatformObjectType: "platforms",
PlayerObjectType: "players",
} }
func GetObjectDirectory(name ObjectType) string { func GetObjectDirectory(name ObjectType) string {

View File

@@ -0,0 +1,29 @@
package konstructor
type PlayerTypeID string
type InventoryItem struct {
Item Item
Used bool
Active bool
}
type Inventory struct {
Items []InventoryItem
}
type PlayerType struct {
ID PlayerTypeID
Render Render
}
type Player struct {
ID string
Type PlayerType
Position Position
Inventory Inventory
}
func GetPlayerTypeImagePath(name PlayerTypeID) string {
return GetObjectDirectory(PlayerObjectType) + string(name) + ".png"
}

View File

@@ -1,18 +0,0 @@
package konstructor
type InventoryItem struct {
Item Item
Used bool
Active bool
}
type Inventory struct {
Items []InventoryItem
}
type Player struct {
ID string
Render Render
Position Position
Inventory Inventory
}