diff --git a/game.go b/game.go index edf2675..872c1a8 100644 --- a/game.go +++ b/game.go @@ -21,12 +21,14 @@ type Game struct { projectileMask *ebiten.Image Pos Coordinates + Paused bool initialized bool mover *Mover projectiles map[int]*Projectile explosion *Explosion counter int + timer int targets []*Mover gamepadIDsBuf []ebiten.GamepadID @@ -69,17 +71,6 @@ func (g *Game) Update() error { } } - //handle gamepad input - inpx := ebiten.GamepadAxisValue(0, 0) - inpy := ebiten.GamepadAxisValue(0, 1) - if inpx >= 0.15 || inpx <= -0.15 { - g.mover.Pos.X += ebiten.GamepadAxisValue(0, 0) * 5 - } - - if inpy >= 0.15 || inpy <= -0.15 { - g.mover.Pos.Y += ebiten.GamepadAxisValue(0, 1) * 5 - } - if !g.initialized { g.Initialize() @@ -89,7 +80,7 @@ func (g *Game) Update() error { g.StepGame() } - g.CleanupTargets() + g.timer++ return nil } @@ -165,22 +156,28 @@ func (g *Game) StepGame() { g.HandleInput() - g.mover.Update() - g.explosion.Update() + if !g.Paused { - g.UpdateTargets() - g.UpdateProjectiles() + g.UpdateHeroPosition() - //append new projectiles - g.AppendProjectiles() + g.mover.Update() + g.explosion.Update() - //add new target with increasing frequency - g.AddNewTargets() + g.UpdateTargets() + g.UpdateProjectiles() - //handle pulsewave updates - g.HandlePulseWaveUpdate() + //append new projectiles + g.AppendProjectiles() - g.counter++ + //add new target with increasing frequency + g.AddNewTargets() + + //handle pulsewave updates + g.HandlePulseWaveUpdate() + + g.CleanupTargets() + g.counter++ + } } func (g *Game) AddNewTargets() { @@ -294,17 +291,18 @@ func (g *Game) AppendProjectiles() { func (g *Game) HandleInput() { if len(g.gamepadIDs) > 0 { - maxButton := ebiten.GamepadButton(ebiten.GamepadButtonCount(0)) - for b := ebiten.GamepadButton(0); b < maxButton; b++ { - if ebiten.IsGamepadButtonPressed(0, ebiten.GamepadButton11) { - if !g.explosion.Active { - g.explosion.SetOrigin(g.mover.Pos) - g.explosion.Reset() - g.explosion.ToggleActivate() - } + if ebiten.IsGamepadButtonPressed(0, ebiten.GamepadButton11) { + if !g.explosion.Active { + g.explosion.SetOrigin(g.mover.Pos) + g.explosion.Reset() + g.explosion.ToggleActivate() } } + if inpututil.IsGamepadButtonJustPressed(0, ebiten.GamepadButton9) { + g.Paused = !g.Paused + } + //account for controller sensitivity xaxis := ebiten.StandardGamepadAxisValue(0, ebiten.StandardGamepadAxisRightStickHorizontal) yaxis := ebiten.StandardGamepadAxisValue(0, ebiten.StandardGamepadAxisRightStickVertical) @@ -320,3 +318,16 @@ func (g *Game) HandleInput() { g.mover.SetAngle(inputangle) } } + +func (g *Game) UpdateHeroPosition() { + //handle gamepad input + inpx := ebiten.GamepadAxisValue(0, 0) + inpy := ebiten.GamepadAxisValue(0, 1) + if inpx >= 0.15 || inpx <= -0.15 { + g.mover.Pos.X += ebiten.GamepadAxisValue(0, 0) * 5 + } + + if inpy >= 0.15 || inpy <= -0.15 { + g.mover.Pos.Y += ebiten.GamepadAxisValue(0, 1) * 5 + } +}