aboutsummaryrefslogtreecommitdiff
path: root/internal/game/cmd_who.go
diff options
context:
space:
mode:
Diffstat (limited to 'internal/game/cmd_who.go')
-rw-r--r--internal/game/cmd_who.go32
1 files changed, 32 insertions, 0 deletions
diff --git a/internal/game/cmd_who.go b/internal/game/cmd_who.go
new file mode 100644
index 0000000..87c8a9c
--- /dev/null
+++ b/internal/game/cmd_who.go
@@ -0,0 +1,32 @@
+package game
+
+import (
+ "fmt"
+ "sort"
+ "strings"
+
+ "thehouseoficarus/internal/net"
+ "thehouseoficarus/internal/player"
+)
+
+func (g *Game) executeWho(sess *net.Session, args []string, rawInput string) {
+ myP := sess.Player
+
+ var players []*player.Player
+ for _, other := range g.Hub.AllSessions() {
+ if other.Player == nil {
+ continue
+ }
+ players = append(players, other.Player)
+ }
+ sort.Slice(players, func(i, j int) bool {
+ return strings.ToLower(players[i].Name) < strings.ToLower(players[j].Name)
+ })
+
+ sess.WriteLine(fmt.Sprintf("\nPlayers online (%d):", len(players)))
+ for _, p := range players {
+ lvl := p.CombatLevel()
+ levelStr := g.levelColorize(sess, myP.CombatLevel(), lvl, fmt.Sprintf("(level %d)", lvl))
+ sess.WriteLine(fmt.Sprintf(" %s %s", p.Name, levelStr))
+ }
+}