package game import ( "fmt" "thehouseoficarus/internal/net" "thehouseoficarus/internal/object" "thehouseoficarus/internal/player" ) func (g *Game) startToggle(sess *net.Session, p *player.Player, obj *object.ObjectDef) { cfg, err := g.BehaviorStore.LoadToggle(obj.BehaviorID) if err != nil { sess.WriteLine("Nothing happens.") return } if cfg.Check != nil { val, ok := g.WorldFlags[cfg.Check.Flag] if cfg.Check.Not { if ok && val == cfg.Check.Value { sess.WriteLine("Nothing happens.") return } } else { if !ok || val != cfg.Check.Value { sess.WriteLine("Nothing happens.") return } } } for flag, val := range cfg.SetFlags { g.WorldFlags[flag] = val } p.ActionState = &ActionState{Type: ActionToggling, TargetName: obj.Name} sess.WriteLine(fmt.Sprintf("\n%s", cfg.Message)) if g.Hub != nil { for _, other := range g.Hub.PlayersInRoom(p.RoomID) { if other != sess && other.Player != nil { other.WriteLine(g.colorize(other, "broadcast", fmt.Sprintf("\n%s uses the %s.", p.Name, obj.Name))) } } } }