aboutsummaryrefslogtreecommitdiff
path: root/internal/game/cmd_hideallexits.go
blob: d9747c94163ed1d9ad4cbc2663e367d9181edaa7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
package game

import (
	"fmt"
	"strings"

	"thehouseoficarus/internal/net"
)

func (g *Game) executeHideAllExits(sess *net.Session, args []string, rawInput string) {
	if !g.checkAdmin(sess) {
		sess.WriteLine("Unknown command.")
		return
	}
	p := sess.Player
	if p == nil {
		return
	}
	if p.Flags == nil {
		sess.WriteLine("No discovered exits to clear.")
		return
	}
	var cleared []string
	for k := range p.Flags {
		if strings.HasPrefix(k, hiddenExitFlagPrefix) {
			cleared = append(cleared, k)
		}
	}
	if len(cleared) == 0 {
		sess.WriteLine("No discovered exits to clear.")
		return
	}
	for _, k := range cleared {
		delete(p.Flags, k)
	}
	g.AccountStore.SaveCharacter(p)
	sess.WriteLine(fmt.Sprintf("Cleared %d discovered exit(s).", len(cleared)))
}