aboutsummaryrefslogtreecommitdiff
path: root/internal/game/cmd_score.go
diff options
context:
space:
mode:
Diffstat (limited to 'internal/game/cmd_score.go')
-rw-r--r--internal/game/cmd_score.go85
1 files changed, 29 insertions, 56 deletions
diff --git a/internal/game/cmd_score.go b/internal/game/cmd_score.go
index 31caf1e..3949486 100644
--- a/internal/game/cmd_score.go
+++ b/internal/game/cmd_score.go
@@ -92,43 +92,46 @@ func (g *Game) doScore(sess *net.Session) {
sep()
nameStr := g.colorize(sess, "player_name", p.Name)
- clStr := color.Render(mode, color.Parse("FA"), fmt.Sprintf("Combat Lvl %d", p.CombatLevel()))
+ clStr := g.colorizeConstant(sess, "score_max_value", fmt.Sprintf("Combat Lvl %d", p.CombatLevel()))
roomStr := g.colorize(sess, "room_number", fmt.Sprintf("Room #%d", p.RoomID))
row1 := padded(nameStr, 20) + padded(clStr, 24) + roomStr
content(row1)
creditsStr := g.colorize(sess, "currency_pickup", formatInt(p.Credits))
chipsStr := g.colorize(sess, "currency_pickup", formatInt(countChips(p)))
- styleStr := color.Render(mode, color.Parse("49"), fmt.Sprintf("Style: %s", p.AttackStyle))
+ styleStr := color.Render(mode, g.resolveConstant(sess, "table_header_label"), fmt.Sprintf("Style: %s", p.AttackStyle))
invStr := fmt.Sprintf("Inv: %d/28", 28-p.FreeSlots())
row2 := padded("Credits: "+creditsStr, 19) + padded("Chips: "+chipsStr, 16) + padded(styleStr, 22) + invStr
content(row2)
gap()
- hpStyle := hpBarStyle(p.HP, p.MaxHP())
+ hpStyle := g.hpBarStyle(sess, p.HP, p.MaxHP())
hpBarStr := ui.RenderColoredBar(p.HP, p.MaxHP(), 26, unicode, hpStyle, mode)
- hpFg := hpBarFg(p.HP, p.MaxHP())
+ hpFg := g.hpBarStyle(sess, p.HP, p.MaxHP()).FilledColor
hpLine := fmt.Sprintf("HP [%s] %s / %s",
hpBarStr,
color.Render(mode, color.ColorSpec{Fg: hpFg}, fmt.Sprint(p.HP)),
- color.Render(mode, color.Parse("FA"), fmt.Sprint(p.MaxHP())))
+ g.colorizeConstant(sess, "score_max_value", fmt.Sprint(p.MaxHP())))
content(hpLine)
batBarRaw := ui.RenderBarF(p.Battery, p.MaxBattery(), 26, unicode)
- batBarStr := color.Render(mode, color.ColorSpec{Fg: 110}, batBarRaw)
+ batBarStr := color.Render(mode, g.resolveConstant(sess, "battery_bar"), batBarRaw)
+ batFg := g.resolveConstant(sess, "battery_bar").Fg
batLine := fmt.Sprintf("BAT [%s] %s / %s",
batBarStr,
- color.Render(mode, color.ColorSpec{Fg: 110}, fmt.Sprintf("%.1f", p.Battery)),
- color.Render(mode, color.Parse("FA"), fmt.Sprintf("%.0f", p.MaxBattery())))
+ color.Render(mode, color.ColorSpec{Fg: batFg}, fmt.Sprintf("%.1f", p.Battery)),
+ g.colorizeConstant(sess, "score_max_value", fmt.Sprintf("%.0f", p.MaxBattery())))
content(batLine)
- engStyle := &ui.BarStyle{FilledColor: 108, EmptyColor: 237, EmptyDim: true}
+ engSpec := g.resolveConstant(sess, "run_energy_bar")
+ engEmpty := g.resolveConstant(sess, "hp_bar_empty")
+ engStyle := &ui.BarStyle{FilledColor: engSpec.Fg, EmptyColor: engEmpty.Fg, EmptyDim: engEmpty.Dim}
engBarStr := ui.RenderColoredBar(p.RunEnergy, p.MaxRunEnergy(), 26, unicode, engStyle, mode)
engLine := fmt.Sprintf("ENG [%s] %s / %s",
engBarStr,
- color.Render(mode, color.ColorSpec{Fg: 108}, fmt.Sprint(p.RunEnergy)),
- color.Render(mode, color.Parse("FA"), fmt.Sprint(p.MaxRunEnergy())))
+ color.Render(mode, color.ColorSpec{Fg: engSpec.Fg}, fmt.Sprint(p.RunEnergy)),
+ g.colorizeConstant(sess, "score_max_value", fmt.Sprint(p.MaxRunEnergy())))
content(engLine)
gap()
@@ -155,8 +158,8 @@ func (g *Game) doScore(sess *net.Session) {
buildSkillCell := func(s player.SkillName) string {
level := p.Level(s)
- lvlColor := skillLevelColor(level)
- name := padded(color.Render(mode, color.ColorSpec{Fg: 110}, skillDisplay[s]), 12)
+ lvlColor := g.skillLevelColor(sess, level)
+ name := padded(color.Render(mode, g.resolveConstant(sess, "active_tech_stat"), skillDisplay[s]), 12)
lvl := color.Render(mode, color.ColorSpec{Fg: lvlColor}, fmt.Sprintf("%2d", level))
xpBar := xpProgressBar(p.Skills[s], 12, unicode)
return fmt.Sprintf("%s %s [%s]", name, lvl, xpBar)
@@ -195,8 +198,8 @@ func (g *Game) doScore(sess *net.Session) {
for _, id := range p.ActiveTechList() {
def := GetTechDef(id)
if def != nil {
- on := color.Render(mode, color.ColorSpec{Fg: 108}, "[ON]")
- name := color.Render(mode, color.ColorSpec{Fg: 110}, def.Name)
+ on := color.Render(mode, g.resolveConstant(sess, "active_tech_on"), "[ON]")
+ name := color.Render(mode, g.resolveConstant(sess, "active_tech_stat"), def.Name)
techParts = append(techParts, on+" "+name)
}
}
@@ -205,9 +208,9 @@ func (g *Game) doScore(sess *net.Session) {
if len(p.ActiveBuffs) > 0 {
for _, buff := range p.ActiveBuffs {
buffLine := fmt.Sprintf("%s +%d%% %s (%d ticks remaining)",
- color.Render(mode, color.ColorSpec{Fg: 108}, "[BUFF]"),
+ color.Render(mode, g.resolveConstant(sess, "active_tech_status"), "[BUFF]"),
buff.BonusPercent,
- color.Render(mode, color.ColorSpec{Fg: 110}, buff.Stat),
+ color.Render(mode, g.resolveConstant(sess, "active_tech_stat"), buff.Stat),
buff.TicksLeft)
content(buffLine)
}
@@ -252,51 +255,21 @@ func formatInt(n int) string {
return strings.Join(parts, ",")
}
-func hpBarStyle(current, max int) *ui.BarStyle {
- if max <= 0 {
- max = 1
- }
- pct := float64(current) / float64(max)
- var fg int
- switch {
- case pct >= 0.7:
- fg = 108
- case pct >= 0.4:
- fg = 179
- default:
- fg = 167
- }
- return &ui.BarStyle{FilledColor: fg, EmptyColor: 237, EmptyDim: true}
-}
-
-func hpBarFg(current, max int) int {
- if max <= 0 {
- max = 1
- }
- pct := float64(current) / float64(max)
- switch {
- case pct >= 0.7:
- return 108
- case pct >= 0.4:
- return 179
- default:
- return 167
- }
-}
-
-func skillLevelColor(level int) int {
+// skillLevelColor returns the xterm256 palette index for a skill level cell
+// on the datapad score panel, sourcing it from the constant_colors section.
+func (g *Game) skillLevelColor(sess *net.Session, level int) int {
+ spec := g.resolveConstant(sess, "skill_lvl_base")
switch {
case level >= 99:
- return 180
+ spec = g.resolveConstant(sess, "skill_lvl_max")
case level >= 80:
- return 179
+ spec = g.resolveConstant(sess, "skill_lvl_high")
case level >= 60:
- return 116
+ spec = g.resolveConstant(sess, "skill_lvl_mid")
case level >= 40:
- return 73
- default:
- return 66
+ spec = g.resolveConstant(sess, "skill_lvl_low")
}
+ return spec.Fg
}
func xpProgressBar(xp int, width int, unicode bool) string {