diff --git a/assets/images/items/sword.ase b/assets/images/items/sword.ase new file mode 100644 index 0000000..7949df0 Binary files /dev/null and b/assets/images/items/sword.ase differ diff --git a/assets/images/items/sword.png b/assets/images/items/sword.png new file mode 100644 index 0000000..dbc231b Binary files /dev/null and b/assets/images/items/sword.png differ diff --git a/assets/images/npcs/test_npc.ase b/assets/images/npcs/test_npc.ase new file mode 100644 index 0000000..28c4a72 Binary files /dev/null and b/assets/images/npcs/test_npc.ase differ diff --git a/assets/images/npcs/test_npc.png b/assets/images/npcs/test_npc.png new file mode 100644 index 0000000..98d045e Binary files /dev/null and b/assets/images/npcs/test_npc.png differ diff --git a/assets/images/objects/test_object.ase b/assets/images/objects/test_object.ase index 3afc815..51b1a18 100644 Binary files a/assets/images/objects/test_object.ase and b/assets/images/objects/test_object.ase differ diff --git a/assets/images/objects/test_object.png b/assets/images/objects/test_object.png index 539c799..e85a36e 100644 Binary files a/assets/images/objects/test_object.png and b/assets/images/objects/test_object.png differ diff --git a/domain/domain.go b/domain/domain.go index 1ea9d10..ad15256 100644 --- a/domain/domain.go +++ b/domain/domain.go @@ -11,6 +11,8 @@ type Domain struct { func (d *Domain) Init() { d.InitObjectType() + d.InitItemType() + d.InitNPCType() d.InitMenu() d.InitDialog() d.InitLevel() diff --git a/domain/item_type.go b/domain/item_type.go index 90d45d4..b2c230b 100644 --- a/domain/item_type.go +++ b/domain/item_type.go @@ -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 { diff --git a/domain/level.go b/domain/level.go index 7636b9e..0c45154 100644 --- a/domain/level.go +++ b/domain/level.go @@ -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), }, }, }, diff --git a/domain/npc_type.go b/domain/npc_type.go index ed31611..e07050f 100644 --- a/domain/npc_type.go +++ b/domain/npc_type.go @@ -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 { diff --git a/domain/object_type.go b/domain/object_type.go index fceff56..aa11168 100644 --- a/domain/object_type.go +++ b/domain/object_type.go @@ -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", diff --git a/konstructor/engines/easy_ebitengine/screen.playground.go b/konstructor/engines/easy_ebitengine/screen.playground.go index 94dc6d3..7259649 100644 --- a/konstructor/engines/easy_ebitengine/screen.playground.go +++ b/konstructor/engines/easy_ebitengine/screen.playground.go @@ -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] diff --git a/main.go b/main.go index d8e300a..e511cce 100644 --- a/main.go +++ b/main.go @@ -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,