diff options
Diffstat (limited to 'internal/game/core_flags.go')
| -rw-r--r-- | internal/game/core_flags.go | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/internal/game/core_flags.go b/internal/game/core_flags.go index 6595cc4..5e1c812 100644 --- a/internal/game/core_flags.go +++ b/internal/game/core_flags.go @@ -33,9 +33,23 @@ func getPlayerFlagString(p *player.Player, key string) string { return s } -func setPlayerFlag(p *player.Player, key string, val any) { +func (g *Game) setPlayerFlag(p *player.Player, key string, val any) { p.EnsureFlags() + old, existed := p.Flags[key] p.Flags[key] = val + if !existed || !valuesEqual(old, val) { + g.firePlayerFlagTrigger(p, key, val) + } +} + +func (g *Game) firePlayerFlagTrigger(p *player.Player, flagName string, flagValue any) { + g.charsMu.Lock() + sess := g.loggedInChars[p.Name] + g.charsMu.Unlock() + if sess == nil { + return + } + g.TriggerStore.FirePlayerInRoom(p.Name, p.RoomID, flagName, flagValue) } func intFromFlag(flags map[string]any, key string) int { |
