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% (167 dusty red for // HP, 67 steel blue for progress) -- both palette colors. 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 = 108 case pct >= 40: fgColor = 179 default: fgColor = lowColor } unicode := sess.Player != nil && sess.Player.OptionBool("unicode") style := &ui.BarStyle{FilledColor: fgColor, EmptyColor: 237, 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, 167) }