diff options
| author | historia <[not public]> | 2026-06-10 04:44:31 -0400 |
|---|---|---|
| committer | historia <[not public]> | 2026-06-10 04:44:31 -0400 |
| commit | 69d8757ad983697cdc9182fdcc1cdb612a77fb41 (patch) | |
| tree | 348c26d1f6defe3aef64f5aa9e7cefed0e764214 /internal/game/cmd_look.go | |
| parent | a226d72e51eecb768b13600303f73483118d9104 (diff) | |
| download | thehouseoficarus-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.go | 36 |
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)) |
