-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathgameover.go
64 lines (49 loc) · 1.47 KB
/
gameover.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
package main
import (
"image/color"
"github.com/hajimehoshi/ebiten/v2"
"github.com/hajimehoshi/ebiten/v2/vector"
)
type gameover struct {
game *Game
erapsedFrame int // このフレームを経過しないとクリックできないようにする
}
func newGameover(g *Game) *gameover {
return &gameover{
game: g,
erapsedFrame: 60 * 3,
}
}
func (g *gameover) Update() {
if g.erapsedFrame > 0 {
g.erapsedFrame--
}
}
func (g *gameover) OnClick(x, y int) bool {
// ちょっとの間クリックを受け付けないようにする
if g.erapsedFrame > 0 {
return false
}
// ゲームリセットする
g.game.Reset()
// ゲームオーバー画面を削除
g.game.clickHandler.Remove(g)
g.game.drawHandler.Remove(g)
return false
}
func (g *gameover) IsClicked(x, y int) bool {
return true
}
func (g *gameover) ZIndex() int {
return 200
}
// gameover implements drawable
func (g *gameover) Draw(screen *ebiten.Image) {
// ゲームオーバー画面の描画
// 画面全体を半透明の黒で覆う
vector.DrawFilledRect(screen, 0, 0, screenWidth, screenHeight, color.RGBA{0, 0, 0, 0x90}, true)
// 画面中央に負けた感のあるメッセージを出す
drawText(screen, "You lose! House destroyed...", screenWidth/2-400, eScreenHeight/2-100, 5, 5, color.RGBA{0xff, 0xff, 0xff, 0xff})
// Click to Restart って出す
drawText(screen, "Click to Restart", screenWidth/2-230, eScreenHeight/2+100, 5, 5, color.RGBA{0xff, 0xff, 0xff, 0xff})
}