aboutsummaryrefslogtreecommitdiff
path: root/internal/game/look_room.go
diff options
context:
space:
mode:
authorhistoria <[not public]>2026-07-14 17:13:18 -0400
committerhistoria <[not public]>2026-07-14 17:13:18 -0400
commitbeb188ce050fb76cdddc0bbeedee7ec608e47995 (patch)
treed7c050b30567004ae143d554dcd533f4980e8fd8 /internal/game/look_room.go
parente679811057bedda7864b61a325a11e472e0034ad (diff)
downloadthehouseoficarus-beb188ce050fb76cdddc0bbeedee7ec608e47995.tar.gz
feat: unicode hitsplat symbol, area name in look
Diffstat (limited to 'internal/game/look_room.go')
-rw-r--r--internal/game/look_room.go20
1 files changed, 19 insertions, 1 deletions
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 {