forked from KorokEngine/Korok
-
Notifications
You must be signed in to change notification settings - Fork 0
/
hud.go
75 lines (60 loc) · 1.27 KB
/
hud.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
65
66
67
68
69
70
71
72
73
74
75
package dbg
import (
"fmt"
)
func LogFPS(fps, drawCall int) {
hud.fps = fps
hud.drawCall = drawCall
if DEBUG != None {
hud.drawCall = drawCall-1
}
}
func Hud(format string, args... interface{}) {
hud.verbs = append(hud.verbs, fmt.Sprintf(format, args...))
}
func HudFunc(fn func() string) {
hud.verbs = append(hud.verbs, fn())
}
// Game internal state.
type HudLog struct {
verbs []string
drawCall, fps int
}
func (hud *HudLog) draw() {
var (
x = gRender.view.x - gRender.view.w/2
y = gRender.view.y - gRender.view.h/2
)
// draw fps & draw call
if (DEBUG & FPS) != 0 {
drawFps(x, y, hud.fps)
drawDrawCall(x, y, hud.drawCall)
}
// draw string
if (DEBUG & Stats) != 0 {
d := float32(0)
x += 10
y += gRender.view.h - 20
for _, str := range hud.verbs {
gBuffer.String(x, y-d, str, .6)
d += 10
}
}
}
func (hud *HudLog) reset() {
hud.verbs = hud.verbs[:0]
}
func drawFps(x, y float32, fps int) {
Color(0xFF000000)
gBuffer.Rect(x+5, y+5, 50, 6)
// format: RGBA
Color(0xFF00FF00)
w := float32(fps)/60 * 50
gBuffer.Rect(x+5, y+5, w, 5)
// format: RGBA
Color(0xFF000000)
gBuffer.String(x+5, y+10, fmt.Sprintf("%d fps", fps), .6)
}
func drawDrawCall(x,y float32, dc int) {
gBuffer.String(x+5, y+25, fmt.Sprintf("DrawCall: %d", hud.drawCall), .6)
}