From c93070883a97f13c692601148606f6e75ae10aab Mon Sep 17 00:00:00 2001 From: Thomas von Dein Date: Thu, 22 Feb 2024 19:40:49 +0100 Subject: [PATCH] added primary and secondary player mode --- TODO.md | 2 + assets/levels/04-mayhem.lvl | 17 +++++++ assets/loader-levels.go | 27 +++++++++-- assets/sprites/sphere-blue-secondary.png | Bin 0 -> 2052 bytes components/components.go | 1 - components/player.go | 16 +++++++ go.mod | 6 ++- go.sum | 55 +++++++++++++++++++++++ grid/grid.go | 5 ++- level-mode.el | 18 ++++++++ src/kugel.xcf | Bin 612965 -> 688629 bytes systems/player_system.go | 37 ++++++++++++++- 12 files changed, 174 insertions(+), 10 deletions(-) create mode 100644 assets/levels/04-mayhem.lvl create mode 100644 assets/sprites/sphere-blue-secondary.png create mode 100644 components/player.go create mode 100644 level-mode.el diff --git a/TODO.md b/TODO.md index db8ccc6..600e787 100644 --- a/TODO.md +++ b/TODO.md @@ -31,3 +31,5 @@ if inpututil.IsKeyJustPressed(ebiten.KeyS) { - Calculate obstacle collision the same as solid collision with future velocity and included snap in so that the player ends up right on the edge of the obstacle and not inside as it is now + +- Check player-player collisions! diff --git a/assets/levels/04-mayhem.lvl b/assets/levels/04-mayhem.lvl new file mode 100644 index 0000000..db2966d --- /dev/null +++ b/assets/levels/04-mayhem.lvl @@ -0,0 +1,17 @@ +Description: use multiple players +Background: background-lila + + + + + ########## + # v# + # # + #S s# + # # + #^ # + ########## + + + + diff --git a/assets/loader-levels.go b/assets/loader-levels.go index c05a8d4..f75ec09 100644 --- a/assets/loader-levels.go +++ b/assets/loader-levels.go @@ -27,6 +27,7 @@ type Tile struct { Class string Solid bool Player bool + IsPrimary bool Renderable bool Velocity bool Collectible bool @@ -38,15 +39,32 @@ type Tile struct { Direction int // obstacles } -func NewTilePlayer() *Tile { - return &Tile{ +const ( + Primary bool = true + Secondary bool = false +) + +func NewTilePlayer(isprimary bool) *Tile { + tile := &Tile{ Id: 'S', - Sprite: Assets["sphere-blue"], Class: "sphere", Renderable: true, Player: true, Velocity: true, + IsPrimary: isprimary, } + + switch isprimary { + case Primary: + tile.Sprite = Assets["sphere-blue"] + case Secondary: + tile.Sprite = Assets["sphere-blue-secondary"] + tile.Id = 's' + } + + // primary sprite is always the first one + tile.Tiles = []*ebiten.Image{Assets["sphere-blue"], Assets["sphere-blue-secondary"]} + return tile } func NewTileBlock(class string) *Tile { @@ -148,7 +166,8 @@ func InitTiles() TileRegistry { ' ': {Id: ' ', Class: "floor", Renderable: false}, '#': NewTileBlock("block-grey32"), 'B': NewTileBlock("block-orange-32"), - 'S': NewTilePlayer(), + 'S': NewTilePlayer(Primary), + 's': NewTilePlayer(Secondary), 'o': NewTileCollectible("collectible-orange"), '+': NewTileObstacle("obstacle-star", config.All), '^': NewTileObstacle("obstacle-north", config.North), diff --git a/assets/sprites/sphere-blue-secondary.png b/assets/sprites/sphere-blue-secondary.png new file mode 100644 index 0000000000000000000000000000000000000000..8576ec6a473a203d27b3aa4c6c409f377880030e GIT binary patch literal 2052 zcmV+f2>bVmP)EX>4Tx04R}tkv&MmKpe$i(@I4uA{G&G2vVKwq9Ts93Pq?;YK2xEOfLO`CJjl7 zi=*ILaPVWX>fqw6tAnc`2!4P#J2)x2NQwVT3N2zhIPS;0dyl(!fY7Kg)eOV{RkMtA zA}(fgt77mK0tV5KQ3NDr>T{`75}xDh9zMR_MR}I@xj#p*k~bOP6NzI?H!R`};+aiL z=e$oGW+h1>J|~_q=z_$LT$f#b<6LxD;F)0~lb$CI6N|+TmOGf043&7AIHIT;K2j+1tNoTK)Y1V_I^cHN1Mp00006VoOIv089V?0RKrs;kp0-010qNS#tmY z3ljhU3ljkVnw%H_000McNliru=mHiICMrDe>)8MR1_4P#K~z}7?U!AQRaX_qe|w$J zd+wdfFw8I?6owWCgw}x+aPbI&<@Zy$yiH5BN_ldNQAKb-8dep&hN zwf`G##{YY$ce82x*iV8yGh<4)9h8ezXT{;n{_8`BZ|lBq0Ar(vcN(4j*z<<(E=Qx3N)f&%h$!-0 zQ>hkwV)p>6S33lu(CL^nbCpO6(8UFhc7f*6GzIWo!;HM zHnMO35WTBi{_{}K=)w|3qSg+%PdxI_^qw06 z_|{|7ZX7qBY{suw!eApq!x8l*&BTcg%XLkqva(GV&~9r)KxCzQQLJQsW$jzzI-Vy_ ze(Avrz1Iz}Fwgz<`piAnYK%>=B($0uC9t~BC5nVJwJa?a)N2~gQ;2{umNYdaiJ{0X zMPU&IJyjX$rs^x#4bW;956AH$fj>&z`5VpFBFoDK=cZC-XELVFE%54zQ@rrPOZ@T0 z-&3s$MPX^T4UL8-ZW+2=LzY>zh9DHu#C&n@S5L_`Mfk*b-j2?mN$xFl4P!cN+qRoe z?jB=oYl!bF=I2t5AO9_9PETM=!n*Y%lq;WQ=IxxuvSxXCMITBW!eB)gfv?CiyY2FP zX%v`#M*tDo>Nu>?CZ>PQMm}=qCbr*E;*JlOSk)_ZIuTL%^BnkIi^a=lNje=S{&b1B zS)tX`7z0DY9_6w?pilxyYREI|h{&D)4e&oLafI!j=O}I3jE#*mFyON87LWb`m!7J_ z;E>D5cJ=Y`dp?awnOd#IbI%@U;zW~$`GPF7CE(9tNr+aqEuQLFd{42-|uqY1AU0{P$*n4XMAUcO=AHg>pV))$`KWTdaYn~CPNnn zCDvS11CFaE!%%F0|Lv-DWw>-YhN7^z?#fZK7DN&(8l^n4e1`FzB}CMJbRf?yZ=LV5 zxDZpWlo3%=*X)3Zneu#9+puAnG%e`ub*R@gi}M9(V(4@X^?E_0*|{>w9on6FjBOK! zigHCLMM5{Vy!l4LnbQr7DJYes04A;pu>YGQog%j{_VopHQ^nHK6^OcKYBFW&Y|6RG zF8_Ed1#19I(#6556yN46bWmyso>z82dA0*mKMJ zfTha?X=)g~)hCV(f1gZw^Hj>~uccTDz@l(Dd2*V$*+J68(rjvGF4jqs7~dTv@EwAH zXAeF#Zm$c#^|RllsrO2fm|a7|KAn!iaTGm04t;A}dRIGi+7?j}2v{uVCg*6@Qe0P| z0Ba(AuZ-s@da5#A?%~LFPr`$T#&l7bN0W|eE-VzxUCLRQ&&e}Ow`*xOG_AOW=l0{f zBSgV=!e9smblRF$O9O)M3#)paqFj-E&mG+y->@HeZV4D!qQDwE}vFYqcyDRbqGR*QsBAjuR*BxA31vK%kP^heQe)($-3T09anwX^VI$I zx*l%SwXd~BDRReA3$CkP7O}r@1O5EZk8UYGFk8NV@01%i{q=FIx8#|1#8Ky6Kc7DK it8Mwsm(I<&(fBv;QrL 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 delta 1717 zcmYM#YfKbZ6bJCRb9Z*Q1Ih+`Ra-?<+r$JhZEYm5EItsdi&$Eq_KUR^`{H2{k)Vi+ zjoT_FECg>O_^2U$*oQ5W4kS%Uu*wH^o2H?Srmb|VrY(&&F)@|ehR)poS-HvVZ_j=0 z*}G?E?;Koqqkn1pvPkYcCL(2juHK`$jg2=ddDK)I?O!R)>Q9s+X8`6MRwiCVaPoYJ zc^KQ*8Di-&LpQwXn*Ma)-e3=G>mq@o83w_ zzY-Sgf>qmL$068_^=xQ4;>*tdGC$5%9IWSdJ!dn1W{uMcvtN4EG(P$ld5;oi@h7ms zt+`6w7lK(f%zg;IbQ~UShkf6`v0F;6XTZ#NVEF>roD2^Y!H-^pUtiX=u#>QzAJ>1M zkn@=_N3M(VG5IeuW^x{TU^;sqD^P2U_V>s>%AUu*$8J|j;N43~&+H%ILS*MD%tllEZvW|a0HeG;2V44+s@~OM|Hy<)xCdQ;6~&^B3&~rf-^R& zyVP8>`d!M_=x{4U(~Ofk9IAjofT(X1diO#I9&vAPl;e0OM*A)ltq3adR9M4(u_5zc(Jw# z{RJjDmwXhi?}tUSPZ26h6upf84gbKWF2aqde-T`%X|{j2HIO2cnUTCa^_j}5%I)>9 z*4AVcZ`<{{JK3XFXquPayEW|o)}DYSw?_F&IXTW!UYSXw%+Y=Hap!W{BhHng-c7$a z#i%xQr%pFf>>iGrrh8#b6kk&l#Ph}Emc)T=!gEoSlw+ji4&3}He7XUa{!QK^r{J>( zU^yLVc{0VRu;Lheu8h13w>bY6?nyXJmh85!%Rqy5N=`IbgYw)SYs7ACwBBUKREtlW nva_135VODBYaLGX)HYjTCV$MdhGeY8>Xpq0tbXYaSp)wA<(V3E diff --git a/systems/player_system.go b/systems/player_system.go index d042766..807cd8b 100644 --- a/systems/player_system.go +++ b/systems/player_system.go @@ -1,10 +1,12 @@ package systems import ( + "log/slog" . "openquell/components" . "openquell/config" "github.com/hajimehoshi/ebiten/v2" + "github.com/hajimehoshi/ebiten/v2/inpututil" "github.com/mlange-42/arche/ecs" "github.com/mlange-42/arche/generic" ) @@ -34,10 +36,41 @@ func NewPlayerSystem(world *ecs.World, grid *GridSystem) *PlayerSystem { } func (system PlayerSystem) Update() error { + // first check if we need to switch player + switchable := false query := system.Selector.Query(system.World) - for query.Next() { - playerposition, velocity, _, _, _ := query.Get() + _, _, player, _, _ := query.Get() + if !player.IsPrimary { + switchable = true + } + } + + if switchable { + query := system.Selector.Query(system.World) + for query.Next() { + _, _, player, render, _ := query.Get() + if inpututil.IsKeyJustPressed(ebiten.KeyTab) { + slog.Debug("switch players") + if player.IsPrimary { + player.IsPrimary = false + render.Image = player.SwitchSprite() + } else { + player.IsPrimary = true + render.Image = player.SwitchSprite() + } + } + } + } + + // check player movements etc + query = system.Selector.Query(system.World) + for query.Next() { + playerposition, velocity, player, _, _ := query.Get() + + if !player.IsPrimary { + continue + } if !velocity.Moving() { switch {