aboutsummaryrefslogtreecommitdiff
path: root/internal/game/render_combat.go
diff options
context:
space:
mode:
authorhistoria <[not public]>2026-06-25 15:40:48 -0400
committerhistoria <[not public]>2026-06-25 15:40:48 -0400
commitabd612c15799f604e671e83dc7c410ed2b44185f (patch)
tree0597ca92350de73aac2a7cf26b2f2d6595dac0cc /internal/game/render_combat.go
parent2725e2927a1595c7b100d942d1f14146252adeb7 (diff)
downloadthehouseoficarus-abd612c15799f604e671e83dc7c410ed2b44185f.tar.gz
slop refactor
Diffstat (limited to 'internal/game/render_combat.go')
-rw-r--r--internal/game/render_combat.go41
1 files changed, 41 insertions, 0 deletions
diff --git a/internal/game/render_combat.go b/internal/game/render_combat.go
new file mode 100644
index 0000000..7285ce7
--- /dev/null
+++ b/internal/game/render_combat.go
@@ -0,0 +1,41 @@
+package game
+
+import (
+ "thehouseoficarus/internal/net"
+ "thehouseoficarus/internal/ui"
+)
+
+// renderBar is the shared bar renderer for both HP bars and task-progress bars.
+// lowColor is the color used when the value falls below 40% (160 red for HP,
+// 39 cyan for progress).
+func (g *Game) renderBar(sess *net.Session, current, max, lowColor int) string {
+ if max <= 0 {
+ max = 1
+ }
+ if current < 0 {
+ current = 0
+ }
+ if current > max {
+ current = max
+ }
+
+ pct := float64(current) / float64(max) * 100.0
+ var fgColor int
+ switch {
+ case pct >= 70:
+ fgColor = 82
+ case pct >= 40:
+ fgColor = 220
+ default:
+ fgColor = lowColor
+ }
+
+ unicode := sess.Player != nil && sess.Player.OptionBool("unicode")
+ style := &ui.BarStyle{FilledColor: fgColor, EmptyColor: 238, EmptyDim: true}
+ bar := ui.RenderColoredBar(current, max, 10, unicode, style, g.colorMode(sess))
+ return "[" + bar + "]"
+}
+
+func (g *Game) hpBar(sess *net.Session, current, max int) string {
+ return g.renderBar(sess, current, max, 160)
+}