From 5a288035b3ca13830010d843c581bfea460baae4 Mon Sep 17 00:00:00 2001 From: Thomas von Dein Date: Mon, 12 Feb 2024 17:27:52 +0100 Subject: [PATCH] added Timer, Particle Render Delay (via Particle.Show) +new sprites --- assets/levels/0-own.lvl | 4 +-- assets/loader-levels.go | 3 +-- assets/sprites/particle-ring-1.png | Bin 0 -> 1563 bytes assets/sprites/particle-ring-2.png | Bin 0 -> 1769 bytes assets/sprites/particle-ring-3.png | Bin 0 -> 2091 bytes assets/sprites/particle-ring-4.png | Bin 0 -> 2353 bytes assets/sprites/particle-ring-5.png | Bin 0 -> 2553 bytes assets/sprites/particle-ring-6.png | Bin 0 -> 2525 bytes components/components.go | 1 + components/timer.go | 41 +++++++++++++++++++++++++++++ config/static.go | 3 +++ src/kugel2.xcf | Bin 7341189 -> 13380198 bytes systems/collectible_system.go | 9 +++++-- systems/particle_system.go | 39 +++++++++++++++++---------- 14 files changed, 80 insertions(+), 20 deletions(-) create mode 100644 assets/sprites/particle-ring-1.png create mode 100644 assets/sprites/particle-ring-2.png create mode 100644 assets/sprites/particle-ring-3.png create mode 100644 assets/sprites/particle-ring-4.png create mode 100644 assets/sprites/particle-ring-5.png create mode 100644 assets/sprites/particle-ring-6.png create mode 100644 components/timer.go diff --git a/assets/levels/0-own.lvl b/assets/levels/0-own.lvl index a4dc0fb..c0b0eeb 100644 --- a/assets/levels/0-own.lvl +++ b/assets/levels/0-own.lvl @@ -5,13 +5,13 @@ Background: background-lila ######## - # #o# + #o o #o# # S # # # #### # # #### # # # - # o # + #o o# ######## diff --git a/assets/loader-levels.go b/assets/loader-levels.go index 363b29a..6035f1e 100644 --- a/assets/loader-levels.go +++ b/assets/loader-levels.go @@ -110,8 +110,7 @@ func InitTiles() TileRegistry { 'S': NewTilePlayer(), 'o': NewTileCollectible("collectible-orange"), '*': NewTileParticle([]string{ - "particle-dust-0", "particle-dust-0", "particle-dust-1", "particle-dust-1", - "particle-dust-0", "particle-dust-2", "particle-dust-3", "particle-dust-3", + "particle-ring-1", "particle-ring-2", "particle-ring-3", "particle-ring-4", "particle-ring-5", "particle-ring-6", }), } } diff --git a/assets/sprites/particle-ring-1.png b/assets/sprites/particle-ring-1.png new file mode 100644 index 0000000000000000000000000000000000000000..f40d8dd4df8465e8141b205210bf1707a9cab393 GIT binary patch literal 1563 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 literal 0 HcmV?d00001 diff --git a/assets/sprites/particle-ring-4.png b/assets/sprites/particle-ring-4.png new file mode 100644 index 0000000000000000000000000000000000000000..d633417063f1761164a4c6e1033c4e918d50f243 GIT binary patch literal 2353 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 X;*P=tW7zO300000NkvXXu0mjf%pOgR literal 0 HcmV?d00001 diff --git a/assets/sprites/particle-ring-5.png b/assets/sprites/particle-ring-5.png new file mode 100644 index 0000000000000000000000000000000000000000..738ee68a9614d99f22fd4473db7854875fcedbcd GIT binary patch literal 2553 zcmVEX>4Tx04R}tkv&MmKpe$iQ>7x64t5Z6$WWc^;0NMZt5Adrp;l;vxAeOiW1OaL;oj5$e4!*_h$Bf!_YIM4Dw_vaW;3l;+cB5{HlrcJy-JhN#V zocD>NtSqa<=fvYCU6A;Z>x##3oJ%eXJTq!$GxNkzVzJc4N*A-TsS!^T$5c(Hd?Dwt z%6W^kR;{!4J^2g61$||i>oiA@!XlO+L4<-jDyYInoK~F_3mMu^`uK-kzeFyDToo{K zET9Grvg-%`gWug+#i>azDVzj)UmWLS6bS7Ct%l=#A3IL#1PDF@S9-@^YXY;Mq>R z>MDH$92^2; zCCXm+d3RrTZ~vZY_xA%}w{oAU9$B&g000JJOGiWi{{a60|De66lK=n!32;bRa{vG? zBLDy{BLR4&KXw2B00(qQO+^Rj0t^rt3l<>^cK`qY8FWQhbVF}#ZDnqB07G(RVRU6= zAa`kWXdp*PO;A^X4i^9b2hvGIK~#9!?V4$9RM!>9|L4B<=8b3GEZ%KMDF_?n)-_}i zrGRmw5L23}v?{8)NmZgqMO8^@8cGwD7TT=Pd;pXPz9dzmDpkYQ3Z*Ga2@sPCk$@dY z3K+*C1baMQ#phrUQ#7o9s`C4B=jhR zW`hJ@13+M@LrFi|DdKFxVJ8*lY%;{z_|>w9{@GVB0Qz?5r1( zz6#9@k!}uJOVU%t96H6;Orx6bp5 zl33x`GzzQcE1JJ1M($vTFs*K1>(e~Z-WA=y_KPYNX;QJCpp5l=s1o7!>L+`gTLz$W zLuG|OSl+Cc&o+fseLA@6<@1wqaYc4LG+V`b@3F%dWq2@hyz#mI&{+2pV_o>>>e2=h z+6v(ecSuHZ*?N` z(mTn)WpiCU;kar_+L+c{=jv|jvU$Qi;FtG$DVgP#w8OQQNe5m$o*bA;8Qto|9)HH+ zEmItN=0JX)koO&sc6eblqoyUYJmriBfE{hgXd=sR4JA34wt2~fhQKdcJPnZ) zH>PYH+S8s6Pu0BsT(6UzQ>BNPad&HjNo`$rXxsqSFY{JJQrr?v^QpZZ>26GMec0#OvHE@;7nUpD*R?##x=90E^0XlWS-&CxVp+1ru+2nC|QolajGPIG4}%ZoR!^ciCY zU`sR(r&LK+;@v_kbF&Vg97?gU9n2pSfNkIPd(#d#rX7Co?;oVog$Ce_Gif{R@Tru; z4LiQ)4~!asVl>4woNy#A6l$~M)sv~Nc!mcgW8SC$?0Pt8O2u_jq2rA+X+{A{F}FJs zv-UkwYUK?;5ay&E&NA?Ep|`xY9Zg=zI2;!ObMpq^(x_e|y126~$tVKp8qT{k)OBvC zq!9shZm2911iwp1CyGRdMwbXE(FAHn1mJdQ(_K2n9@`s>77KtiyP_#mr+$}V)Q$+i zFum1&H(f=M$?v8f-Smv?0m2=qD)Wd?u>lB_h>$RSm4mN-OXLJF^!oSx!n9m|uY0iA z09Yl)fN*(#`-yXQ$ z14x&wP3{}xNeuzbFd#H1w+9Ge6Es)RdVtUkkcj67Kq3x;uXq6nACbu9&ICy$AOzya zwgigJ_SnDw=mu#9NJMf1u$DYF3=%d-loeh4lPD(=3{d2TwE&R_gG6=l-GHJBpaJXN z-^dXfA`~K`+9Cu{3lcpeR)Zk=6eI$P6Wgp}u|0ltvm2mF5RDALyXet=fZ_nv710GS z3q%;J}5un( zdNT|k*tw({!nhMct0tkJhtN-#{bYY;T$S=f{kWmOtO`Im^I17Fp`0j7`vRnWsr;wM z#`UVL?@#q634IncV=j>hLTH~r7^f?K_Mf2%X%$Skd%oQ2V`Su|O< zcHgtpG*&9;NELJxn~s7d73)#~iXoX1SBwmRAppZo&-XjHt=qb-o2~x=10YGudec2) P00000NkvXXu0mjfWNfiG literal 0 HcmV?d00001 diff --git a/assets/sprites/particle-ring-6.png b/assets/sprites/particle-ring-6.png new file mode 100644 index 0000000000000000000000000000000000000000..b663e80a7c3722a6871393dca55bb4b3713cdedd GIT binary patch literal 2525 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 literal 0 HcmV?d00001 diff --git a/components/components.go b/components/components.go index 3358571..7b5d7b1 100644 --- a/components/components.go +++ b/components/components.go @@ -11,6 +11,7 @@ type Renderable struct { } type Particle struct { + Show bool Index int Particles []*ebiten.Image } diff --git a/components/timer.go b/components/timer.go new file mode 100644 index 0000000..413eaa2 --- /dev/null +++ b/components/timer.go @@ -0,0 +1,41 @@ +package components + +import ( + "time" + + "github.com/hajimehoshi/ebiten/v2" +) + +type Timer struct { + currentTicks int + targetTicks int +} + +func NewTimer(d time.Duration) *Timer { + return &Timer{} +} + +func (timer *Timer) Start(d time.Duration) { + min := int(1000 / ebiten.TPS()) // 16.66ms == 1 tick + useD := d + + if int(d.Milliseconds()) < min { + useD = time.Duration(1000/ebiten.TPS()) * time.Millisecond + } + + timer.targetTicks = int(useD.Milliseconds()) / min // id d=50, then 50 / 16.6 = +} + +func (t *Timer) Update() { + if t.currentTicks < t.targetTicks { + t.currentTicks++ + } +} + +func (t *Timer) IsReady() bool { + return t.currentTicks >= t.targetTicks +} + +func (t *Timer) Reset() { + t.currentTicks = 0 +} diff --git a/config/static.go b/config/static.go index 02f9851..4cc76cd 100644 --- a/config/static.go +++ b/config/static.go @@ -1,5 +1,7 @@ package config +import "time" + const ( Stop = iota East @@ -9,3 +11,4 @@ const ( ) const PLAYERSPEED int = 4 +const PARTICLE_LOOPWAIT time.Duration = 250 * time.Millisecond diff --git a/src/kugel2.xcf b/src/kugel2.xcf index d4035bfe26f4795bfef5277a286d47fa3d910afc..e32847b15bbad3345e8c2b58c57b58acafe163c1 100644 GIT binary patch delta 134841 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ℑw!e8< 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

{!_uLyqinExX5SX_L9>T2U5T*U5$y(eg`ZcjO1G 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 g&M4^}-a6~o-!pEcjb=my>pv5%+gT-?yl7A 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 diff --git a/systems/collectible_system.go b/systems/collectible_system.go index 75b13da..3c58dea 100644 --- a/systems/collectible_system.go +++ b/systems/collectible_system.go @@ -5,6 +5,7 @@ import ( "openquell/assets" "openquell/components" . "openquell/components" + "openquell/config" "openquell/observers" "github.com/hajimehoshi/ebiten/v2" @@ -31,6 +32,7 @@ func (system *CollectibleSystem) Update() { posID := ecs.ComponentID[components.Position](system.World) veloID := ecs.ComponentID[components.Velocity](system.World) + particlepositions := []*components.Position{} EntitiesToRemove := []ecs.Entity{} @@ -93,13 +95,14 @@ func (system *CollectibleSystem) Draw(screen *ebiten.Image) { func (system *CollectibleSystem) AddParticle(position *components.Position) { particleobserver := observers.GetParticleObserver(system.World) - ptmapper := generic.NewMap2[ + ptmapper := generic.NewMap3[ components.Position, components.Particle, + components.Timer, ](system.World) entity := ptmapper.New() - pos, particle := ptmapper.Get(entity) + pos, particle, timer := ptmapper.Get(entity) particleobserver.AddEntity(entity) particle.Index = assets.Tiles['*'].Particle @@ -110,4 +113,6 @@ func (system *CollectibleSystem) AddParticle(position *components.Position) { position.Y-(16), 64, ) + + timer.Start(config.PARTICLE_LOOPWAIT) } diff --git a/systems/particle_system.go b/systems/particle_system.go index 74ada10..ef65b81 100644 --- a/systems/particle_system.go +++ b/systems/particle_system.go @@ -2,6 +2,7 @@ package systems import ( . "openquell/components" + "openquell/config" "github.com/hajimehoshi/ebiten/v2" "github.com/mlange-42/arche/ecs" @@ -10,13 +11,13 @@ import ( type ParticleSystem struct { World *ecs.World - Selector *generic.Filter2[Position, Particle] + Selector *generic.Filter3[Position, Particle, Timer] Cellsize int } func NewParticleSystem(world *ecs.World, cellsize int) *ParticleSystem { system := &ParticleSystem{ - Selector: generic.NewFilter2[Position, Particle](), + Selector: generic.NewFilter3[Position, Particle, Timer](), World: world, Cellsize: cellsize, } @@ -32,16 +33,24 @@ func (system *ParticleSystem) Update() { for query.Next() { // we loop, but it's only one anyway - _, particle := query.Get() + _, particle, timer := query.Get() - switch { - // particle shows from earlier tick, animate - case particle.Index > -1 && particle.Index < len(particle.Particles)-1: - particle.Index++ - default: - // last sprite reached, remove it - EntitiesToRemove = append(EntitiesToRemove, query.Entity()) + particle.Show = true + + if timer.IsReady() { + switch { + // particle shows from earlier tick, animate + case particle.Index > -1 && particle.Index < len(particle.Particles)-1: + particle.Index++ + timer.Start(config.PARTICLE_LOOPWAIT) + default: + // last sprite reached, remove it + EntitiesToRemove = append(EntitiesToRemove, query.Entity()) + } + } else { + timer.Update() } + } for _, entity := range EntitiesToRemove { @@ -55,10 +64,12 @@ func (system *ParticleSystem) Draw(screen *ebiten.Image) { query := system.Selector.Query(system.World) for query.Next() { - pos, particle := query.Get() + pos, particle, _ := query.Get() - op.GeoM.Reset() - op.GeoM.Translate(float64(pos.X), float64(pos.Y)) - screen.DrawImage(particle.Particles[particle.Index], op) + if particle.Show { + op.GeoM.Reset() + op.GeoM.Translate(float64(pos.X), float64(pos.Y)) + screen.DrawImage(particle.Particles[particle.Index], op) + } } }