feat(gameover): make gameover state abit more interesting.
This commit is contained in:
parent
53ac3840ba
commit
4319ec55e5
1 changed files with 30 additions and 6 deletions
|
|
@ -1,25 +1,45 @@
|
||||||
package handlers
|
package handlers
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"image/color"
|
||||||
|
|
||||||
"tetris/assets"
|
"tetris/assets"
|
||||||
"tetris/engine/audio"
|
"tetris/engine/audio"
|
||||||
|
"tetris/engine/core"
|
||||||
"tetris/engine/render"
|
"tetris/engine/render"
|
||||||
"tetris/game/state"
|
"tetris/game/state"
|
||||||
|
|
||||||
rl "github.com/gen2brain/raylib-go/raylib"
|
rl "github.com/gen2brain/raylib-go/raylib"
|
||||||
)
|
)
|
||||||
|
|
||||||
type GameOver struct{}
|
type GameOver struct {
|
||||||
|
blinkTimer core.IntervalTimer
|
||||||
|
textColor color.RGBA
|
||||||
|
}
|
||||||
|
|
||||||
func (GameOver) Enter() {
|
func (GameOver *GameOver) Enter() {
|
||||||
audio.Play(assets.SFX_GAME_OVER)
|
audio.Play(assets.SFX_GAME_OVER)
|
||||||
|
GameOver.blinkTimer = core.NewIntervalTimer(0.2)
|
||||||
|
GameOver.textColor = rl.White
|
||||||
}
|
}
|
||||||
|
|
||||||
func (GameOver) Exit() {
|
func (GameOver) Exit() {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (GameOver GameOver) Update(fsm state.Transitioner, delta float32) {
|
func (GameOver) soundDone() bool {
|
||||||
if !audio.IsPlaying(assets.SFX_GAME_OVER) {
|
return !audio.IsPlaying(assets.SFX_GAME_OVER)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (GameOver *GameOver) Update(fsm state.Transitioner, delta float32) {
|
||||||
|
if GameOver.blinkTimer.UpdateReset(delta) {
|
||||||
|
if GameOver.textColor == rl.Red {
|
||||||
|
GameOver.textColor = rl.White
|
||||||
|
} else {
|
||||||
|
GameOver.textColor = rl.Red
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if GameOver.soundDone() {
|
||||||
if rl.IsKeyPressed(rl.KeyEnter) {
|
if rl.IsKeyPressed(rl.KeyEnter) {
|
||||||
fsm.Switch("gameplay")
|
fsm.Switch("gameplay")
|
||||||
} else if rl.IsKeyPressed(rl.KeyQ) {
|
} else if rl.IsKeyPressed(rl.KeyQ) {
|
||||||
|
|
@ -28,8 +48,12 @@ func (GameOver GameOver) Update(fsm state.Transitioner, delta float32) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (GameOver *GameOver) Render() {
|
func (GameOver GameOver) Render() {
|
||||||
render.Begin(rl.Black)
|
render.Begin(rl.Black)
|
||||||
render.DrawTextCenter(340, 200, 32, "Game Over", rl.White)
|
render.DrawTextCenter(340, 200, 32, "Game Over", GameOver.textColor)
|
||||||
|
if GameOver.soundDone() {
|
||||||
|
render.DrawTextCenter(340, 290, 16, "Press ENTER to restart", rl.White)
|
||||||
|
render.DrawTextCenter(340, 316, 16, "Press Q to return to menu", rl.White)
|
||||||
|
}
|
||||||
render.End()
|
render.End()
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue