From 2fcf6f4fdc27630b477df6581e0a3d7de8a0d183 Mon Sep 17 00:00:00 2001 From: Zsolt Tasnadi Date: Thu, 6 Jul 2023 16:35:14 +0200 Subject: [PATCH] playground and object drawer skeleton --- assets/images/objects/.keep | 0 assets/images/objects/test_object.ase | Bin 0 -> 639 bytes assets/images/objects/test_object.png | Bin 0 -> 226 bytes assets/images/playgrounds/.keep | 0 .../playgrounds/level_1_playground_1.ase | Bin 0 -> 2248 bytes .../playgrounds/level_1_playground_1.png | Bin 0 -> 1048 bytes domain/level.go | 16 +++++++++++ konstructor/engine/screen.playground.go | 27 +++++++++++++++++- konstructor/entity/entity.kcontext.go | 9 +++--- konstructor/entity/entity.settings.go | 1 + main.go | 23 ++++++--------- 11 files changed, 56 insertions(+), 20 deletions(-) delete mode 100644 assets/images/objects/.keep create mode 100644 assets/images/objects/test_object.ase create mode 100644 assets/images/objects/test_object.png delete mode 100644 assets/images/playgrounds/.keep create mode 100644 assets/images/playgrounds/level_1_playground_1.ase create mode 100644 assets/images/playgrounds/level_1_playground_1.png diff --git a/assets/images/objects/.keep b/assets/images/objects/.keep deleted file mode 100644 index e69de29..0000000 diff --git a/assets/images/objects/test_object.ase b/assets/images/objects/test_object.ase new file mode 100644 index 0000000000000000000000000000000000000000..3afc8153fe8738457bc8cb88f954d7b1e3bd93cd GIT binary patch literal 639 zcmcJNPe_wt9DrYQLI^ns5$xjE5YZjloYI&LMngf=!%&)(2h+*s7TcWUD1-$=5$9ou zg6I@Q=n&MU4ygw(9+b+9AhId=hj!d%K@D2+_N<{o_kJJW!~5|ap63Ves~bX`ye<;T z-=|0jF~EC0%JuQToFvL$-&9xD1eQwW(pvSeQwpI`8evPV89Gh%Flv7Qj{`L@zT$-G ztp%9-ejm;!ZP2r+hsIeSY&nN? z^HOKcl6V!hfDInr_B-y++Wq{d3kO3UN6FC}bC=IiE#ru1a9dcPu!~{yK_P)leDam1 zjA3p4HrfomALg0&%3Wwv$V*^7sJCz`$A;S9izdBX+&Gsjyk}AU!K~c;2MjU|%np}~ z?|3bpBWv=2DdBj!#!NdYhMee%bV2hC9P1gjC`R2oD|?~gfz3_T7|x5IKh;{!ZJcQK aonc3po$8;{@4A4FX7F_Nb6Mw<&;$TQp;x^C literal 0 HcmV?d00001 diff --git a/assets/images/playgrounds/.keep b/assets/images/playgrounds/.keep deleted file mode 100644 index e69de29..0000000 diff --git a/assets/images/playgrounds/level_1_playground_1.ase b/assets/images/playgrounds/level_1_playground_1.ase new file mode 100644 index 0000000000000000000000000000000000000000..81816bad29e0471578b2ad382a2096ad1b7d34e2 GIT binary patch literal 2248 zcmeH|YiJW$7=};1vx0G9LBt;uMV3_-QmaP1;8>|3m0CB^v??{#XvNevx_GT5qpORH zB1N#f)F|nnwi_F*-DQoJwu6cn&?3~-Sffn~>uQtgRNLw3jAxGTC|$unBHR6=9++p& zFf-r#oWsY=^$~=$SEi78Dc!_OQV1byal9Mmchmo6wh;O1vmyVc-b2b*bAKxLekLPi zf_WOa;JZ0s!OSUOsbe-6-~27uT2TN#y?hkZo?F54hf6?rV=6e~NHMr*g9WrLnh2)N znF;dz7BDscCvatP2k7!M(Ao4icq8@-WEh0_PlmyLzWv|^w;NpUuz}m=9{@vXX<%!P z3ykhM50?Ix2_EpIGB?&T#MohDaaaUa0DZVa9M({VFJxf~O*ldjc2I*Cq+kRc!-X+e zKmqv(M>1lOi9nS{{g0ll#cP{~5i->L_AVRL|CG@KJB~ex zq#qugK6=5$vVGjBgM%{KOe?F zX*;D!X}y1^U!|u+fzpjrJ$5lJE45;v=%1p5azWQ+<_b3*`{93Am@Tu* z5bY9=tE>Y?eeuPVZSwCNr+KP%;cQd=AsV(begMjdSzgw?#@i(oCA6Q%Bwd2X9=Fuz za@sDx>g%|o-i^m1%1FzdYkFH%qjN{y+&;xB(@O{CIx!rS#;gjJ(uORr_@7E-Hwb6E zFZ*088rV@^UFd1{$u=R2ZyNZYXe%BS!AlM6NTbnmhcJ#<3LQS2-~=YfSLJ;c#M zn?-$C{<1HZpTutL&XcKFLRq02WrMp;NKUlNWSJ%ddU|D}fR_0^qST^k%2Zv>W)(Jk w-#WRa2`!4&$@DTb&ywKBz7$0}ZqD(t&+(ksSHk!Ils<6ow!9d5-1frs8uEqBDF6Tf literal 0 HcmV?d00001 diff --git a/assets/images/playgrounds/level_1_playground_1.png b/assets/images/playgrounds/level_1_playground_1.png new file mode 100644 index 0000000000000000000000000000000000000000..15c431f8497943d2ee2de8f9884abf352e7702ae GIT binary patch literal 1048 zcmeAS@N?(olHy`uVBq!ia0y~yU~~YoKX9-C$wJ+|*$fQK_dQ)4Ln`LHy|d9bCQ!iP zVr=$qg#|3i+no=bvYg`Jz^Uf`x}j*p0v44QOxdwVHkMNf3Lo?{DG`GYgpDUcaoXYEivj{{FJEKpLr`q+QQn@OoVz|Kj)gf8`W&=@LfYcHezx oW6N@YMVh!&No3;1q3l0{;1}cMIiHI-fH|JQ)78&qol`;+0I{S*h5!Hn literal 0 HcmV?d00001 diff --git a/domain/level.go b/domain/level.go index 150fb30..d434acf 100644 --- a/domain/level.go +++ b/domain/level.go @@ -29,6 +29,22 @@ func (d *Domain) InitLevel() { }, }, }, + { + ID: "test_object2", + Position: entity.Position{ + X: 50, + Y: 50, + Z: 0, + }, + Type: entity.ObjectType{ + ID: "test_object_type", + Render: entity.Render{ + Image: "assets/images/objects/test_object.png", + Width: 30, + Height: 30, + }, + }, + }, }, }, }, diff --git a/konstructor/engine/screen.playground.go b/konstructor/engine/screen.playground.go index de3dbe0..a7bebca 100644 --- a/konstructor/engine/screen.playground.go +++ b/konstructor/engine/screen.playground.go @@ -15,5 +15,30 @@ func (e *Engine) PlaygroundUpdate() { } func (e *Engine) PlaygroundDraw(screen *ebiten.Image) { - e.Domain.GetLevel(e.KContext.CurrentLevel) + e.PlaygroundBackgroundDraw(screen) + e.PlaygroundObjectsDraw(screen) +} + +func (e *Engine) PlaygroundBackgroundDraw(screen *ebiten.Image) { + playground := e.GetPlayground() + render := playground.Render + screen.DrawImage(e.GetImage(render), &ebiten.DrawImageOptions{}) +} + +func (e *Engine) PlaygroundObjectsDraw(screen *ebiten.Image) { + playground := e.GetPlayground() + geoM := ebiten.GeoM{} + for _, object := range playground.Objects { + 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() entity.Playground { + level := e.Domain.GetLevel(e.KContext.CurrentLevel) + return level.Playgrounds[e.KContext.CurrentPlayground] } diff --git a/konstructor/entity/entity.kcontext.go b/konstructor/entity/entity.kcontext.go index 7e967b5..40c8d4f 100644 --- a/konstructor/entity/entity.kcontext.go +++ b/konstructor/entity/entity.kcontext.go @@ -1,10 +1,11 @@ package entity type KContext struct { - ScreenType ScreenType - ScreenValue string - CurrentLevel int - Players []Player + ScreenType ScreenType + ScreenValue string + CurrentLevel int + CurrentPlayground int + Players []Player } func (c *KContext) getPrimaryPlayer() Player { diff --git a/konstructor/entity/entity.settings.go b/konstructor/entity/entity.settings.go index 78a4bab..2676885 100644 --- a/konstructor/entity/entity.settings.go +++ b/konstructor/entity/entity.settings.go @@ -14,6 +14,7 @@ type KeyMap struct { type ScreenSettings struct { Width int Height int + Scale int } type Settings struct { diff --git a/main.go b/main.go index abe4034..0257976 100644 --- a/main.go +++ b/main.go @@ -12,26 +12,19 @@ import ( func main() { k := konstructor.Konstructor{ EngineWrapper: &engine.EngineWrapper{}, - Domain: &domain.Domain{ - Context: domain.Context{ - PlayerState: domain.PlayerState{ - Name: "Player One", - }, - User: domain.User{ - Name: "John Doe", - }, - }, - }, + Domain: &domain.Domain{}, KContext: &entity.KContext{ - ScreenType: entity.MenuScreenType, - ScreenValue: "MainMenu", - CurrentLevel: 0, + ScreenType: entity.PlaygroundScreenType, + ScreenValue: "MainMenu", + CurrentLevel: 0, + CurrentPlayground: 0, }, Settings: &entity.Settings{ Name: "Game", Screen: &entity.ScreenSettings{ - Width: 640, - Height: 480, + Width: 320, + Height: 240, + Scale: 2, }, KeyMap: entity.KeyMap{ Up: ebiten.KeyUp,