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

View File

@@ -19,6 +19,7 @@ func (e *Engine) PlaygroundDraw(screen *ebiten.Image) {
e.PlaygroundPlatformsDraw(screen)
e.PlaygroundItemsDraw(screen)
e.PlaygroundNPCsDraw(screen)
e.PlaygroundDefaultPlayerDraw(screen)
}
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 {
level := e.Domain.GetLevel(e.KContext.CurrentLevel)
return level.Playgrounds[e.KContext.CurrentPlayground]

View File

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

View File

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

View File

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