Beispiel #1
0
        public static void ChangedSetting(ValueTuple <Players.Player, JSONNode, string> data)
        {
            if (data.Item1.ActiveColony != null)
            {
                switch (data.Item3)
                {
                case "server_popup":
                    var cs             = ColonyState.GetColonyState(data.Item1.ActiveColony);
                    var maxToggleTimes = SettlersConfiguration.GetorDefault("MaxSettlersToggle", 4);

                    if (cs != null)
                    {
                        if (!SettlersConfiguration.GetorDefault("SettlersEnabled", true))
                        {
                            PandaChat.Send(data.Item1, _localizationHelper, "AdminDisabledSettlers", ChatColor.red);
                        }
                        else if (!HasToggeledMaxTimes(maxToggleTimes, cs, data.Item1))
                        {
                            var def     = (int)cs.SettlersEnabled;
                            var enabled = data.Item2.GetAsOrDefault(_Setters, def);

                            if (def != enabled)
                            {
                                TurnSettlersOn(data.Item1, cs, maxToggleTimes, (SettlersState)enabled);
                                PandaChat.Send(data.Item1, _localizationHelper, "SettlersState", ChatColor.green, cs.SettlersEnabled.ToString());
                            }
                        }
                    }

                    break;
                }
            }
        }
Beispiel #2
0
        public bool TryDoCommand(Players.Player player, string chat, List <string> split)
        {
            if (!chat.StartsWith("/settlers", StringComparison.OrdinalIgnoreCase))
            {
                return(false);
            }

            if (player == null || player.ID == NetworkID.Server || player.ActiveColony == null)
            {
                return(true);
            }

            var array = new List <string>();

            CommandManager.SplitCommand(chat, array);
            var state          = ColonyState.GetColonyState(player.ActiveColony);
            var maxToggleTimes = SettlersConfiguration.GetorDefault("MaxSettlersToggle", 4);

            if (maxToggleTimes == 0 && !SettlersConfiguration.GetorDefault("SettlersEnabled", true))
            {
                PandaChat.Send(player, _localizationHelper, "AdminDisabledSettlers.", ChatColor.red);

                return(true);
            }

            if (HasToggeledMaxTimes(maxToggleTimes, state, player))
            {
                return(true);
            }

            if (array.Count == 1)
            {
                PandaChat.Send(player,
                               _localizationHelper,
                               "SettlersToggleTime",
                               ChatColor.green,
                               state.SettlersEnabled.ToString(),
                               state.SettlersToggledTimes.ToString(),
                               maxToggleTimes.ToString());
                return(true);
            }

            if (array.Count == 2 && state.SettlersToggledTimes <= maxToggleTimes && Enum.TryParse <SettlersState>(array[1].ToLower().Trim(), out var settlersState))
            {
                TurnSettlersOn(player, state, maxToggleTimes, settlersState);
            }

            return(true);
        }