From beb188ce050fb76cdddc0bbeedee7ec608e47995 Mon Sep 17 00:00:00 2001 From: historia <[not public]> Date: Tue, 14 Jul 2026 17:13:18 -0400 Subject: feat: unicode hitsplat symbol, area name in look --- internal/game/look_room.go | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) (limited to 'internal/game/look_room.go') diff --git a/internal/game/look_room.go b/internal/game/look_room.go index 7fe527f..dc488f0 100644 --- a/internal/game/look_room.go +++ b/internal/game/look_room.go @@ -2,6 +2,8 @@ package game import ( "fmt" + "path/filepath" + "strings" "thehouseoficarus/internal/color" "thehouseoficarus/internal/net" @@ -11,13 +13,29 @@ import ( ) func (g *Game) showRoomName(sess *net.Session, p *player.Player, room *world.Room) { - title := fmt.Sprintf("%s (%s)", g.colorize(sess, "room_name", room.Name), g.colorize(sess, "room_number", fmt.Sprintf("#%d", room.ID))) + roomIDStr := fmt.Sprintf("#%d", room.ID) + if area := g.getRoomArea(room.ID); area != "" { + roomIDStr = fmt.Sprintf("%s, #%d", area, room.ID) + } + title := fmt.Sprintf("%s (%s)", g.colorize(sess, "room_name", room.Name), g.colorize(sess, "room_number", roomIDStr)) if bracket := g.roomSymbolBracket(sess, p, room); bracket != "" { title += " " + bracket } sess.WriteLines("", title) } +func (g *Game) getRoomArea(roomID int) string { + path, ok := g.World.GetRoomPath(roomID) + if !ok { + return "" + } + rel, err := filepath.Rel(filepath.Join(g.DataDir, "rooms"), filepath.Dir(path)) + if err != nil || rel == "." { + return "" + } + return strings.ReplaceAll(rel, "_", " ") +} + // 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 { -- cgit v1.2.3