From 8bf6e56398692dab68cf7542e0ca8d1a733e47d7 Mon Sep 17 00:00:00 2001 From: iegod Date: Thu, 7 Nov 2024 17:39:39 -0500 Subject: [PATCH] Added weapon sprite into the mix. --- game.go | 22 +++++++++++++++++++--- hero.go | 14 +++++++++++--- weapon.png | Bin 0 -> 741 bytes 3 files changed, 30 insertions(+), 6 deletions(-) create mode 100644 weapon.png diff --git a/game.go b/game.go index 464b811..8df75f3 100644 --- a/game.go +++ b/game.go @@ -24,6 +24,7 @@ const ( ) var ( + weaponImage *ebiten.Image tilesetImage *ebiten.Image altarImage *ebiten.Image @@ -31,6 +32,8 @@ var ( tileset_img []byte //go:embed altar.png altar_img []byte + //go:embed weapon.png + weapon_img []byte ) type Game struct { @@ -73,6 +76,12 @@ func init() { log.Fatal(err) } altarImage = ebiten.NewImageFromImage(img) + + img, _, err = image.Decode(bytes.NewReader(weapon_img)) + if err != nil { + log.Fatal(err) + } + weaponImage = ebiten.NewImageFromImage(img) } func (g *Game) Initialize() { @@ -167,10 +176,16 @@ func (g *Game) Draw(screen *ebiten.Image) { } op.GeoM.Translate(-MOVER_WIDTH/2, -MOVER_HEIGHT/2) - op.GeoM.Rotate(g.hero.Angle) + //op.GeoM.Rotate(g.hero.Angle) op.GeoM.Translate(g.hero.Pos.X, g.hero.Pos.Y) screen.DrawImage(g.hero.Sprite, op) + op.GeoM.Reset() + op.GeoM.Translate(0, -16) + op.GeoM.Rotate(g.hero.Angle) + op.GeoM.Translate(g.hero.Pos.X, g.hero.Pos.Y) + screen.DrawImage(weaponImage, op) + for _, target := range g.targets { target.Draw() @@ -447,11 +462,12 @@ func (g *Game) UpdateHeroPosition() { inpx := ebiten.GamepadAxisValue(0, 0) inpy := ebiten.GamepadAxisValue(0, 1) if inpx >= 0.15 || inpx <= -0.15 { - g.hero.Pos.X += ebiten.GamepadAxisValue(0, 0) * 5 + g.hero.Left = inpx < 0 + g.hero.Pos.X += inpx * 5 } if inpy >= 0.15 || inpy <= -0.15 { - g.hero.Pos.Y += ebiten.GamepadAxisValue(0, 1) * 5 + g.hero.Pos.Y += inpy * 5 } } diff --git a/hero.go b/hero.go index 0b57dd0..07503ae 100644 --- a/hero.go +++ b/hero.go @@ -55,12 +55,14 @@ type Hero struct { Angle float64 Pos Coordinates Origin Coordinates + Lastpos Coordinates Action HeroAction cycles int rotating bool Toggled bool Hit bool Touched bool + Left bool dyingcount int } @@ -105,18 +107,24 @@ func (m *Hero) Draw() { x0 := 48 * idx x1 := x0 + 48 + op := &ebiten.DrawImageOptions{} + if m.Left { + op.GeoM.Scale(-1, 1) + op.GeoM.Translate(MOVER_WIDTH, 0) + } + switch m.Action { case HeroActionDefault: - m.Sprite.DrawImage(heroImage.SubImage(image.Rect(x0, y0, x1, y1)).(*ebiten.Image), nil) + m.Sprite.DrawImage(heroImage.SubImage(image.Rect(x0, y0, x1, y1)).(*ebiten.Image), op) case HeroActionDying: - m.Sprite.DrawImage(heroDeath.SubImage(image.Rect(x0, y0, x1, y1)).(*ebiten.Image), nil) + m.Sprite.DrawImage(heroDeath.SubImage(image.Rect(x0, y0, x1, y1)).(*ebiten.Image), op) if m.dyingcount >= 31 { m.cycles = 0 m.Action++ } case HeroActionExploding: - m.Sprite.DrawImage(heroDeath.SubImage(image.Rect(48*3, 0, 48*4, 48)).(*ebiten.Image), nil) + m.Sprite.DrawImage(heroDeath.SubImage(image.Rect(48*3, 0, 48*4, 48)).(*ebiten.Image), op) default: } } diff --git a/weapon.png b/weapon.png new file mode 100644 index 0000000000000000000000000000000000000000..883da464e780c4ea109af315aeb3db73bd88b8d9 GIT binary patch literal 741 zcmVgBw>a{AANbAk{32i9&^JtQ#e?kZdZ5 zbW;#b0)b*TmMH$Fi`ZgYw77_-n#LfQEL>a{ai){;%_nL7EPCLX*hbMBq{&ddP2 z_{ZS7T}VW7-)?mh0Bn5y*ztaQwo5MI?1ih$@f{byB8er_IDJ5b-Rh)nM07;1ZWEJP zvRNE7Gs@G$@rxvln}z8Nur|%jFVI*-;3~B;2LO$FRj!8}%>*m*rPcSOyq2;sGs=_A z;xL^F!whIe-ii3G1?Z6v4!GKmT%}g#uG|v=0JqQk1(em0lxsUWi2nICI zd+FWx-^T1#C)q3xrV6G2J;mzCm5_>2DZ*}bQYIQgCK>`u#9p)Hx%masi(HAN51Rmh zgfL7e`VV3xH3t9)`#qR0f|QQgCctKKklpG;CK{5*MpAQ#CDWi+_aOuW^ytPVP2xtq z3a`5tUUx6}<0$}u3&8W}IaF$8E+GsXXCUnNpi!^N*Rf<8V-W#`*&is(K0wbg0rlct z0KnplO{S2S8#SCf^aTL0D!$ef%oM=F&BS%N|E=_NYjNK`=KNEA4y^nlZoVx5Xw^d4 z?=coIU0ea*^llBjnZlX)H9WgB-n!@Ww$0CrCArW0yvU0s1dkquW&a}bVhOy@3-MDc z8=sp!hQUJVVv@rV5wee;koq30NscJZwOJgbY{m+}wq8ku8FIB9>)A5X2RM#>+Js<$ zGqPcp5$Wxz3#~}iFCwYM`5|WXdeD6rXsI3?aB<6P>uozLz2D3p9l=aZsEg0+_kgJn z61|$ZHI*ZvWngC3YztbMn3&8`oF9^-|D(`4ev!+muE@K}lbYzS{}-^HZ#U$-_%HAi XESMukJ9