From 988b006a5bb9edb6465653566e7bdf8175347b8c Mon Sep 17 00:00:00 2001 From: historia <[not public]> Date: Sat, 27 Jun 2026 16:50:41 -0400 Subject: feat: one-way map links, blocked paths on map, map grid startup validation, user colors for maps --- internal/game/look_room.go | 26 ++++++++++++++++++++++---- 1 file changed, 22 insertions(+), 4 deletions(-) (limited to 'internal/game/look_room.go') diff --git a/internal/game/look_room.go b/internal/game/look_room.go index 8a1da04..585efb0 100644 --- a/internal/game/look_room.go +++ b/internal/game/look_room.go @@ -11,10 +11,28 @@ import ( ) func (g *Game) showRoomName(sess *net.Session, p *player.Player, room *world.Room) { - sess.WriteLines( - "", - fmt.Sprintf("%s (%s)", g.colorize(sess, "room_name", room.Name), g.colorize(sess, "room_number", fmt.Sprintf("#%d", room.ID))), - ) + title := fmt.Sprintf("%s (%s)", g.colorize(sess, "room_name", room.Name), g.colorize(sess, "room_number", fmt.Sprintf("#%d", room.ID))) + if bracket := g.roomSymbolBracket(sess, p, room); bracket != "" { + title += " " + bracket + } + sess.WriteLines("", title) +} + +// roomSymbolBracket renders a dim-bracketed colored symbol (e.g. "[D]") when the +// player has set a custom symbol for this room, else "". +func (g *Game) roomSymbolBracket(sess *net.Session, p *player.Player, room *world.Room) string { + if p == nil { + return "" + } + if _, ok := p.MapSymbols[room.ID]; !ok { + return "" + } + ch, spec := roomMapSymbol(g, sess, room.ID, false) + mode := g.colorMode(sess) + dimSpec := g.resolveColor(sess, "dim") + return color.Render(mode, dimSpec, "[") + + color.Render(mode, spec, string(ch)) + + color.Render(mode, dimSpec, "]") } func (g *Game) showRoomDescription(sess *net.Session, p *player.Player, room *world.Room) []string { -- cgit v1.2.3