aboutsummaryrefslogtreecommitdiff
path: root/internal/game/cmd_look.go
diff options
context:
space:
mode:
authorhistoria <[not public]>2026-06-10 04:44:31 -0400
committerhistoria <[not public]>2026-06-10 04:44:31 -0400
commit69d8757ad983697cdc9182fdcc1cdb612a77fb41 (patch)
tree348c26d1f6defe3aef64f5aa9e7cefed0e764214 /internal/game/cmd_look.go
parenta226d72e51eecb768b13600303f73483118d9104 (diff)
downloadthehouseoficarus-69d8757ad983697cdc9182fdcc1cdb612a77fb41.tar.gz
feat: yaml architecture for complex object interaction
Diffstat (limited to 'internal/game/cmd_look.go')
-rw-r--r--internal/game/cmd_look.go36
1 files changed, 28 insertions, 8 deletions
diff --git a/internal/game/cmd_look.go b/internal/game/cmd_look.go
index a544ec1..e7d30d6 100644
--- a/internal/game/cmd_look.go
+++ b/internal/game/cmd_look.go
@@ -75,7 +75,7 @@ func (g *Game) doLook(sess *net.Session) {
for _, objID := range order {
count := grouped[objID]
def, err := g.ObjectStore.Load(objID)
- if err != nil {
+ if err != nil || def.Hidden {
continue
}
@@ -116,26 +116,46 @@ func (g *Game) doLook(sess *net.Session) {
if len(ground) > 0 {
sess.WriteLine("")
sess.WriteLine("On the ground:")
+
+ type groundLine struct {
+ prefix string
+ reserved string
+ }
+ var lines []groundLine
+ maxPrefix := 0
+
for _, info := range ground {
def, err := g.ItemStore.Load(info.ItemID)
name := info.ItemID
if err == nil {
name = def.Name
}
- line := ""
+ prefix := ""
if info.Quantity > 1 {
- line = fmt.Sprintf(" %d x %s", info.Quantity, name)
+ prefix = fmt.Sprintf(" %d x %s", info.Quantity, name)
} else {
- line = fmt.Sprintf(" %s", name)
+ prefix = fmt.Sprintf(" %s", name)
+ }
+ if len(prefix) > maxPrefix {
+ maxPrefix = len(prefix)
}
+ reserved := ""
if info.ReservedFor != "" {
if p.Toggles["reserve"] {
- line += fmt.Sprintf(" (reserved for %s for %d ticks)", info.ReservedFor, info.ReserveTimer)
+ reserved = fmt.Sprintf(" (reserved for %s for %d ticks)", info.ReservedFor, info.ReserveTimer)
} else {
- line += " (reserved)"
+ reserved = " (reserved)"
}
}
- sess.WriteLine(line)
+ lines = append(lines, groundLine{prefix, reserved})
+ }
+
+ for _, l := range lines {
+ if l.reserved != "" {
+ sess.WriteLine(fmt.Sprintf("%-*s%s", maxPrefix+1, l.prefix, l.reserved))
+ } else {
+ sess.WriteLine(l.prefix)
+ }
}
}
@@ -153,7 +173,7 @@ func (g *Game) doLook(sess *net.Session) {
if err == nil {
targetName = targetRoom.Name
}
- if exitDef.Condition != nil && !g.CheckExitCondition(exitDef.Condition) {
+ if exitDef.Condition != nil && !g.checkCondition(sess, exitDef.Condition) {
targetName += " (blocked)"
}
sess.WriteLine(fmt.Sprintf(" %-6s - %s", dir, targetName))