item and npc rendering

This commit is contained in:
2023-07-07 09:14:37 +02:00
parent 8d2fcabc4b
commit fa3e43299c
13 changed files with 83 additions and 6 deletions

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 234 B

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 221 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 226 B

After

Width:  |  Height:  |  Size: 214 B

View File

@@ -11,6 +11,8 @@ type Domain struct {
func (d *Domain) Init() {
d.InitObjectType()
d.InitItemType()
d.InitNPCType()
d.InitMenu()
d.InitDialog()
d.InitLevel()

View File

@@ -2,8 +2,19 @@ package domain
import "game/konstructor"
const (
SwordItemType konstructor.ItemTypeMapKey = "sword"
)
func (d *Domain) InitItemType() {
d.ItemTypeMap = konstructor.ItemTypeMap{}
d.ItemTypeMap = konstructor.ItemTypeMap{
SwordItemType: {
ID: "sword",
Render: konstructor.Render{
Image: "assets/images/items/sword.png",
},
},
}
}
func (d *Domain) GetItemTypeMap() konstructor.ItemTypeMap {

View File

@@ -20,7 +20,7 @@ func (d *Domain) InitLevel() {
Y: 10,
Z: 0,
},
Type: d.GetObjectType("TestObjectType"),
Type: d.GetObjectType(TestObjectType),
},
{
ID: "test_object2",
@@ -29,7 +29,29 @@ func (d *Domain) InitLevel() {
Y: 50,
Z: 0,
},
Type: d.GetObjectType("TestObjectType"),
Type: d.GetObjectType(TestObjectType),
},
},
Items: []konstructor.Item{
{
ID: "sword_1",
Position: konstructor.Position{
X: 100,
Y: 100,
Z: 0,
},
Type: d.GetItemType(SwordItemType),
},
},
NPCs: []konstructor.NPC{
{
ID: "test_npc_1",
Position: konstructor.Position{
X: 220,
Y: 180,
Z: 0,
},
Type: d.GetNPCType(TestNPCType),
},
},
},

View File

@@ -2,8 +2,18 @@ package domain
import "game/konstructor"
const (
TestNPCType konstructor.NPCTypeMapKey = "test"
)
func (d *Domain) InitNPCType() {
d.NPCTypeMap = konstructor.NPCTypeMap{}
d.NPCTypeMap = konstructor.NPCTypeMap{
TestNPCType: {
Render: konstructor.Render{
Image: "assets/images/npcs/test_npc.png",
},
},
}
}
func (d *Domain) GetNPCTypeMap() konstructor.NPCTypeMap {

View File

@@ -2,9 +2,13 @@ package domain
import "game/konstructor"
const (
TestObjectType konstructor.ObjectTypeMapKey = "test"
)
func (d *Domain) InitObjectType() {
d.ObjectTypeMap = konstructor.ObjectTypeMap{
"TestObjectType": konstructor.ObjectType{
TestObjectType: konstructor.ObjectType{
ID: "test_object_type",
Render: konstructor.Render{
Image: "assets/images/objects/test_object.png",

View File

@@ -17,6 +17,8 @@ func (e *Engine) PlaygroundUpdate() {
func (e *Engine) PlaygroundDraw(screen *ebiten.Image) {
e.PlaygroundBackgroundDraw(screen)
e.PlaygroundObjectsDraw(screen)
e.PlaygroundItemsDraw(screen)
e.PlaygroundNPCsDraw(screen)
}
func (e *Engine) PlaygroundBackgroundDraw(screen *ebiten.Image) {
@@ -38,6 +40,32 @@ func (e *Engine) PlaygroundObjectsDraw(screen *ebiten.Image) {
}
}
func (e *Engine) PlaygroundItemsDraw(screen *ebiten.Image) {
playground := e.GetPlayground()
geoM := ebiten.GeoM{}
for _, object := range playground.Items {
render := object.Type.Render
geoM.Reset()
geoM.Translate(float64(object.Position.X), float64(object.Position.Y))
screen.DrawImage(e.GetImage(render), &ebiten.DrawImageOptions{
GeoM: geoM,
})
}
}
func (e *Engine) PlaygroundNPCsDraw(screen *ebiten.Image) {
playground := e.GetPlayground()
geoM := ebiten.GeoM{}
for _, object := range playground.NPCs {
render := object.Type.Render
geoM.Reset()
geoM.Translate(float64(object.Position.X), float64(object.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

@@ -13,7 +13,7 @@ func main() {
EngineWrapper: &easy_ebitengine.EngineWrapper{},
Domain: &domain.Domain{},
KContext: &konstructor.KContext{
ScreenType: konstructor.DialogScreenType,
ScreenType: konstructor.PlaygroundScreenType,
ActiveMenu: domain.MainMenu,
ActiveDialog: domain.DialogTest,
CurrentLevel: 0,