From 9ab80969b9e910d5a8a67aea038197050aad6103 Mon Sep 17 00:00:00 2001 From: iegod Date: Sat, 14 Dec 2024 11:32:41 -0500 Subject: [PATCH] Starting to add in assets. --- client/assets/dino_blue.png | Bin 0 -> 1899 bytes client/assets/dino_green.png | Bin 0 -> 1957 bytes client/assets/dino_red.png | Bin 0 -> 1906 bytes client/assets/dino_yellow.png | Bin 0 -> 1920 bytes client/assets/imagebank.go | 51 ++++++++++++++++ client/elements/dino.go | 106 ++++++++++++++++++++++++++++++++++ client/game/game.go | 20 +++++++ client/gamedata/gamedata.go | 19 ++++++ 8 files changed, 196 insertions(+) create mode 100644 client/assets/dino_blue.png create mode 100644 client/assets/dino_green.png create mode 100644 client/assets/dino_red.png create mode 100644 client/assets/dino_yellow.png create mode 100644 client/assets/imagebank.go create mode 100644 client/elements/dino.go diff --git a/client/assets/dino_blue.png b/client/assets/dino_blue.png new file mode 100644 index 0000000000000000000000000000000000000000..8fb87343a5cdd53603699b56b270dfa247b4be4c GIT binary patch literal 1899 zcmeAS@N?(olHy`uVBq!ia0y~yU~&MmB{-OYq$=B{?FUpN8K(UAowR3xv+EvT|0DK>{}~u&X-w!?;5>hi@3#L8|JN}*U2XgK zc*2eC{r|78`2Qa$KMF=eVCaQF-kUSM3=E76B|(0{48U|ef&qj2ROyYtazV<|#W5tK z@$Ia$la?q5w5;tGjQe%%^>6!?+W!_kX}|F07?1RojVI2n@+uPOeYs3bmuu1Qmuyj2 zWY0S2b}f?BFwN<%Z(VO<#(Yz9dg`g*kn@LM?t9NJuJ%x|{(f}F{A0E&E-u+v7r2Hk z>Ph7Dy*xgZLhFj;&a0JIweyE7{powX&)`?#+qnKvM;*3J)4wk6J$PWsao!cP+jBNO zOwZma^zF|1Iooe4l^yO+P}p$WdB(wbU$uP`o@XftX~gd6syv}4|8YIrt_SW00ylWg z-uUeQAaVBK^iL(yVcaf2o3i9=?tl8dv7bl9U*XP=>3Z{e^`E@tdwb=w{3n%|yEZ2_ zJ#Lq&yDj@MMsRJQxdkEXyP{{J}>i-bC!Bci~F;BN&bbKe>d9H zxb)RC~pK>F}vXTW91k^|LM7 zwd3RD-6gY+aVM{>c+NGKpZ(ggTU-?d?}cp^RO1B04R@fBjt zUeBHEKN-EdC6X%t%k!}Nx{JHsZ9MpDrq;ci7b2u%ekMk&;!gfJy^#OzPkR9y69!4v z$}b0I7wyVBcHp#j^UJn%%=TY6Q!5o0%|7&5RwFF@rKRVOBUOiZYZWItW!vV5%$*owm;t>yDxKU(y!@tSdS($UTH>ehYU{6W?! zCtPR#O`V@w#Sa#*bkTYteEJg8Yqf_D=2zU!fAKR=C1C4+kDNdeNV;C(8u*8mlV>(Z TwM0$;sGRe3^>bP0l+XkKc`3+~ literal 0 HcmV?d00001 diff --git a/client/assets/dino_green.png b/client/assets/dino_green.png new file mode 100644 index 0000000000000000000000000000000000000000..1ee674433bc5d517406737ac12f224a51edcc023 GIT binary patch literal 1957 zcmeAS@N?(olHy`uVBq!ia0y~yU~&MmB{-OYq$=B{?FUpN8K(UAowR3xv+EvT|0DK>{}~u&X-w!?;5>hi@3#L8|JN}*U2XgK zc*2eC{r|78`2Qa$KMF=eVCaQF-kUSM3=E76B|(0{48U|ef&qj2ROyYtav{Xi#W5tK z@$Ia$lNKBBw5+^Tx=L-j&insMbe>&*@UKU-{nV0ER&N|jqJmaC^K8C*VUeqA$^5(p zN6X!f1G-mbuxar|KUVuQ{aBJh_oJ2qPR9d0_MbWaytO%Cr&d=lUmU^6|FFG|H)~7E zs{JCH8xQSJnc%)-X8WhOc_Q`3{Of9u^-n)!&-%CL=Yi5=-wQ=n{NXi}JW;oaNtAp0 zhk$#hCqKx4wlGt@M!qbkabL%Mx9%I9_nR9JPPMr^Eq;nH zldQ}P(Y!rQKY8jc|Ha8g|J9dstNHt4PhDGl-|7Hyaho^%y{>HvHM-}&sokoZ|Nqzu zL5<^&pZ*u%UwHSggIt_)+N)Qr{;zxQ@7mk3{`t-OF8f^-9)0{&-@|VHb6(vZzC%a- z-EV(U&Z{x?-yVN~DNv3@Rqn*&B(pt^`{o>9vtxd3%$0>}>hI24Z8v|B z{E_|-&wq;TeI{%3_^rmF{PG0_n}z=HdrlVQtC-e!`Ok^PVtYQRw97tvUU%rgrukEj z%k9#MJMmKOLx#et?r!-*3vZjmNn{^m4}Vc(wZZIKkV2Dtd&bGh#w{m=&(HB^=R38M zb-m5W1IyUwRj4(4J$JJIWFU7-Bvt>H=Hc|di@V-!OZYllYu?QZ5!^999~y>=AA4l} zSa4Ujy+TC>gAv!K7meaiOJa{7xSZVcvaOFf{tIX7PbW9?*5}3n>(>1dp4q~`Mt#l& zbs^0y*FL*kJsKIRqAg&uYW7v;&*mpBKm0MMvHajVKVX{vhCCttJ;kx&`mgviY-L4^ z=Y8!dj-Au`T_7oT=bp`xpQaW+Si90m>xJ;?ORU#?4;{4sx$FIf&r3BHWc^p(=o)Im hymdua+5)lAkMei7A26$F^N9tOke;r7F6*2UngAF9-RA%R literal 0 HcmV?d00001 diff --git a/client/assets/dino_red.png b/client/assets/dino_red.png new file mode 100644 index 0000000000000000000000000000000000000000..90899237840398fbc4edab2ae9621fa34c65596c GIT binary patch literal 1906 zcmeAS@N?(olHy`uVBq!ia0y~yU~&MmB{-OYq$=B{?FUpN8K(UAowR3xv+EvT|0DK>{}~u&X-w!?;5>hi@3#L8|JN}*U2XgK zc*2eC{r|78`2Qa$KMF=eVCaQF-kUSM3=E76B|(0{48U|ef&qj2ROyYtazWA4#W5tK z@$Ia$lU6GTw649kL~C7f?SJ*JU0sXj^gGO0$r<`3N$l*&m;03yj1J#f8{NuVKi6UV zwzb?VqNkQJKAm0pTeW6#8OI4GZpJ6-+4I6n4hjlTb z20vF8_I`eF!~D;tC;w8OZ2lp8UDm#}>}=fezg4$cQ~2*He0t1q>zU%rH9t8|x6!%S17r2lzIY;1Uror1!6MUHV2xxrBXWI2ZT|nT3FW;LI z`vPIzgV#Utut%A9{JFAYS*3@X{F7vPP7j$xiy!Ux^twMzwK@E9`dVgt({;IWDIcR_ zzRXzm=C?#&V1FpSUZ92-u1n{P>zBUB5&k{;csF z?p=;gma9vAc<_Agfycame%hqn{5j`olKiJnj5hL#BI0as_}Z55jnkjV|496Y_O3Dy!-n5VvLiGcm{$6V8X9G<+#yZ?xwFZ>L a|FYNrX-#5ywre%0xbt-Nb6Mw<&;$S@UpN8K(UAowR3xv+EvT|0DK>{}~u&X-w!?;5>hi@3#L8|JN}*U2XgK zc*2eC{r|78`2Qa$KMF=eVCaQF-kUSM3=E76B|(0{48U|ef&qj2ROyYtazWqI#W5tK z@$Ia$MN15LS}Zj}cb-4<>7V~8DTAJae2uaVE)U8XlaykyyR z_x7%aU8a%Z0c&rj{pYL??q=F__m-)MgPv0`1Cs7=fKV`nuk&RSJBc`ehd z)1j=B=S!6r%gOxi;`jdC-&NC8|IF&~@hg2dU+*yA;Og*gskBR-%z?d?9%|fnJvJ8U zzqIPOE36;73kaNed+5xAwS|wQE6W%Io9FcIHsoLUxT}|6HQ>SahV9CAER2nJ5)$&i zi{~wttI<9$uyL2;ljXoox`_SH$3F-DI69=; z%xj!-htDwMK;PRLAJ*F3*40_1YoCy5Z~E?<+{~*RA?&U2&*v%7gE+8TZz({13h)BE@dA@xdMWiYpD~^WJQ5 z{xj!%%!V`S&o?gT>*ij%kJE;$idwwbmv6Z z9hVLlcj~nqjXx&*WrE#=&k~{zPK@(7x%%b`SHvGYZF;Q4>3Ea=r`7851_I{9c>RJ7yT+MqIP_cTbCu?O=MAU= dinoCycleCount[d.dinoaction].NumCycles-1 { + d.slapping = false + } + +} + +func (d *Dino) SetAction(action gamedata.DinoAction) { + if d.slapping { + //wait until we're done slapping + } else { + d.dinoaction = action + if action == gamedata.DinoActionSlap { + d.cycle = 0 + d.slapping = true + } + } + +} + +func (d *Dino) SetLeft(left bool) { + d.left = left +} diff --git a/client/game/game.go b/client/game/game.go index ef80b7e..1669af0 100644 --- a/client/game/game.go +++ b/client/game/game.go @@ -64,6 +64,8 @@ type Game struct { //similar fields that we see in the client list, but for us eliminated bool hit bool + + dino *elements.Dino } func NewGame() *Game { @@ -74,6 +76,7 @@ func NewGame() *Game { elimblocky: elements.NewBlock(), cycle: 0, name: namelist[rand.Intn(len(namelist))], + dino: elements.NewDino(gamedata.DinoTypeGreen), } g.blocky.SetColor(color.RGBA{R: 0xff, G: 0x00, B: 0x00, A: 0xff}) @@ -93,6 +96,7 @@ func NewGame() *Game { func (g *Game) Update() error { g.blocky.Update() + g.dino.Update() //g.hitblocky.Update() g.HandleInput() @@ -158,6 +162,12 @@ func (g *Game) Draw(screen *ebiten.Image) { text.Draw(screen, client.Name, f2, top) } + g.dino.Draw() + dop := &ebiten.DrawImageOptions{} + dop.GeoM.Translate(-float64(g.dino.Sprite.Bounds().Dx())/2, -float64(g.dino.Sprite.Bounds().Dy())/2) + dop.GeoM.Translate(g.blocky.GetPosition().X, g.blocky.GetPosition().Y) + screen.DrawImage(g.dino.Sprite, dop) + } func (g *Game) Layout(outsideWidth, outsideHeight int) (screenwidth, screenheight int) { @@ -260,6 +270,7 @@ func (g *Game) HandleInput() { dx := 0 dy := 0 + if ebiten.IsKeyPressed(ebiten.KeyW) { dy = -movementLimit } @@ -268,9 +279,17 @@ func (g *Game) HandleInput() { } if ebiten.IsKeyPressed(ebiten.KeyA) { dx = -movementLimit + g.dino.SetLeft(true) } if ebiten.IsKeyPressed(ebiten.KeyD) { dx = +movementLimit + g.dino.SetLeft(false) + } + + if math.Abs(float64(dx)) > 0 || math.Abs(float64(dy)) > 0 { + g.dino.SetAction(gamedata.DinoActionWalk) + } else { + g.dino.SetAction(gamedata.DinoActionIdle) } cpos := g.blocky.GetPosition() @@ -280,6 +299,7 @@ func (g *Game) HandleInput() { if inpututil.IsKeyJustPressed(ebiten.KeySpace) { g.SendSlap() + g.dino.SetAction(gamedata.DinoActionSlap) } } diff --git a/client/gamedata/gamedata.go b/client/gamedata/gamedata.go index 8b92fbd..11c4a33 100644 --- a/client/gamedata/gamedata.go +++ b/client/gamedata/gamedata.go @@ -2,6 +2,25 @@ package gamedata import "math" +type DinoType int + +const ( + DinoTypeGreen DinoType = iota + DinoTypeBlue + DinoTypeRed + DinoTypeYellow + DinoTypeMax +) + +type DinoAction int + +const ( + DinoActionIdle DinoAction = iota + DinoActionWalk + DinoActionSlap + DinoActionMax +) + type Coordinates struct { X float64 `json:"X"` Y float64 `json:"Y"`