Example #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;
                }
            }
        }
Example #2
0
        public static bool ChangeDifficulty(Players.Player player, ColonyState state, string difficulty)
        {
            if (SettlersConfiguration.DifficutlyCanBeChanged)
            {
                if (!GameDifficulty.GameDifficulties.ContainsKey(difficulty))
                {
                    UnknownCommand(player, difficulty);
                    return(true);
                }

                var newDiff = GameDifficulty.GameDifficulties[difficulty];

                if (newDiff.Rank >= SettlersConfiguration.MinDifficulty.Rank)
                {
                    state.Difficulty = newDiff;
                    SettlerManager.UpdateFoodUse(state);
                    state.Difficulty.Print(player);

                    PandaChat.Send(player, "Settlers! Mod difficulty set to {0}.", ChatColor.green,
                                   state.Difficulty.Name);

                    NetworkUI.NetworkMenuManager.SendColonySettingsUI(player);
                    return(true);
                }

                NetworkUI.NetworkMenuManager.SendColonySettingsUI(player);
                PandaChat.Send(player, "The server administrator had disabled setting your difficulty below {0}.",
                               ChatColor.green, SettlersConfiguration.MinDifficulty.Name);
            }

            return(true);
        }
Example #3
0
        public bool TryDoCommand(Players.Player player, string chat)
        {
            var array = CommandManager.SplitCommand(chat);

            var gitVer         = VersionChecker.GetGitVerion();
            var versionCompare = GameLoader.MOD_VER.Major.CompareTo(gitVer.Major);

            PandaChat.Send(player, "Settlers! Mod version: {0}.", ChatColor.green, GameLoader.MOD_VER.ToString());
            PandaChat.Send(player, "Settlers! Git version: {0}.", ChatColor.green, gitVer.ToString());

            if (versionCompare < 0)
            {
                if (!VersionChecker.NewVer)
                {
                    PandaChat.Send(player, "Settlers! version is out of date. The mod will automatically update now.",
                                   ChatColor.red);

                    VersionChecker.WriteVersionsToConsole();
                }
                else
                {
                    PandaChat.Send(player, "Settlers! Has been updated. Restart the server/game to apply.",
                                   ChatColor.red);
                }
            }

            return(true);
        }
Example #4
0
        public static void ChangedSetting(TupleStruct <Players.Player, JSONNode, string> data)
        {
            switch (data.item3)
            {
            case "world_settings":
                var ps             = PlayerState.GetPlayerState(data.item1);
                var maxToggleTimes = Configuration.GetorDefault("MaxSettlersToggle", 4);

                if (ps != null && data.item2.GetAsOrDefault(_Setters, Convert.ToInt32(ps.SettlersEnabled)) != Convert.ToInt32(ps.SettlersEnabled))
                {
                    if (!Configuration.GetorDefault("SettlersEnabled", true))
                    {
                        PandaChat.Send(data.item1, "The server administrator had disabled the changing of Settlers.", ChatColor.red);
                    }
                    else if (!HasToggeledMaxTimes(maxToggleTimes, ps, data.item1))
                    {
                        TurnSettlersOn(data.item1, ps, maxToggleTimes, data.item2.GetAsOrDefault(_Setters, Convert.ToInt32(ps.SettlersEnabled)) != 0);
                    }

                    PandaChat.Send(data.item1, "Settlers! Mod Settlers are now " + (ps.SettlersEnabled ? "on" : "off"), ChatColor.green);
                }

                break;
            }
        }
Example #5
0
        private static bool HasToggeledMaxTimes(int maxToggleTimes, ColonyState state, Players.Player player)
        {
            if (state.SettlersToggledTimes >= maxToggleTimes)
            {
                PandaChat.Send(player, _localizationHelper, "AbuseWarning", ChatColor.red, maxToggleTimes.ToString());

                return(true);
            }

            return(false);
        }
Example #6
0
        private static bool HasToggeledMaxTimes(int maxToggleTimes, PlayerState state, Players.Player player)
        {
            if (state.SettlersToggledTimes >= maxToggleTimes)
            {
                PandaChat.Send(player,
                               $"To limit abuse of the /settlers command you can no longer toggle settlers on or off. You have used your alloted {maxToggleTimes} times.",
                               ChatColor.red);

                return(true);
            }

            return(false);
        }
        public static void PossibleCommands(Players.Player player, ChatColor color)
        {
            PandaChat.Send(player, "Current Difficulty: " + PlayerState.GetPlayerState(player).Difficulty.Name, color);
            PandaChat.Send(player, "Possible commands:", color);

            var diffs = string.Empty;

            foreach (var diff in GameDifficulty.GameDifficulties)
            {
                diffs += diff.Key + " | ";
            }

            PandaChat.Send(player, "/difficulty " + diffs.Substring(0, diffs.Length - 2), color);
        }
Example #8
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);
        }
Example #9
0
        private static void TurnSettlersOn(Players.Player player, PlayerState state, int maxToggleTimes, bool enabled)
        {
            if (!state.SettlersEnabled)
            {
                state.SettlersToggledTimes++;
            }

            state.SettlersEnabled = enabled;

            PandaChat.Send(player,
                           $"Settlers! Mod Settlers are now on. You have toggled this {state.SettlersToggledTimes} out of {maxToggleTimes} times.",
                           ChatColor.green);

            NetworkUI.NetworkMenuManager.SendWorldSettingsUI(player);
        }
Example #10
0
        public bool TryDoCommand(Players.Player player, string chat, List <string> split)
        {
            if (!chat.StartsWith("/difficulty", StringComparison.OrdinalIgnoreCase) ||
                !chat.StartsWith("/dif", 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);

            if (array.Count == 1)
            {
                PandaChat.Send(player, "Settlers! Mod difficulty set to {0}.", ChatColor.green, state.Difficulty.Name);
                return(true);
            }

            if (array.Count < 2)
            {
                UnknownCommand(player, chat);
                return(true);
            }

            if (array.Count == 2)
            {
                var difficulty = array[1].Trim();

                return(ChangeDifficulty(player, state, difficulty));
            }

            if (!SettlersConfiguration.DifficutlyCanBeChanged)
            {
                PandaChat.Send(player, "The server administrator had disabled the changing of game difficulty.",
                               ChatColor.green);
            }

            return(true);
        }
Example #11
0
        private static void TurnSettlersOn(Players.Player player, ColonyState state, int maxToggleTimes, SettlersState enabled)
        {
            if (state.SettlersEnabled == SettlersState.Disabled && enabled != SettlersState.Disabled)
            {
                state.SettlersToggledTimes++;
            }

            state.SettlersEnabled = enabled;

            PandaChat.Send(player,
                           _localizationHelper,
                           "SettlersToggleTime",
                           ChatColor.green,
                           state.SettlersEnabled.ToString(),
                           state.SettlersToggledTimes.ToString(),
                           maxToggleTimes.ToString());

            NetworkUI.NetworkMenuManager.SendColonySettingsUI(player);
        }
Example #12
0
        public bool TryDoCommand(Players.Player player, string chat)
        {
            if (player == null || player.ID == NetworkID.Server)
            {
                return(true);
            }

            var array          = CommandManager.SplitCommand(chat);
            var colony         = Colony.Get(player);
            var state          = PlayerState.GetPlayerState(player);
            var maxToggleTimes = Configuration.GetorDefault("MaxSettlersToggle", 4);

            if (maxToggleTimes == 0 && !Configuration.GetorDefault("SettlersEnabled", true))
            {
                PandaChat.Send(player, "The server administrator had disabled the changing of Settlers.",
                               ChatColor.red);

                return(true);
            }

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

            if (array.Length == 1)
            {
                PandaChat.Send(player, "Settlers! Settlers are {0}. You have toggled this {1} out of {2} times.",
                               ChatColor.green, state.SettlersEnabled ? "on" : "off",
                               state.SettlersToggledTimes.ToString(), maxToggleTimes.ToString());

                return(true);
            }

            if (array.Length == 2 && state.SettlersToggledTimes <= maxToggleTimes)
            {
                TurnSettlersOn(player, state, maxToggleTimes, array[1].ToLower().Trim() == "on" || array[1].ToLower().Trim() == "true");
            }

            return(true);
        }
        public bool TryDoCommand(Players.Player player, string chat)
        {
            if (player == null || player.ID == NetworkID.Server)
            {
                return(true);
            }

            var array  = CommandManager.SplitCommand(chat);
            var colony = Colony.Get(player);
            var state  = PlayerState.GetPlayerState(player);

            if (array.Length == 1)
            {
                PandaChat.Send(player, "Settlers! Mod difficulty set to {0}.", ChatColor.green, state.Difficulty.Name);
                return(true);
            }

            if (array.Length < 2)
            {
                UnknownCommand(player, chat);
                return(true);
            }

            if (array.Length == 2)
            {
                var difficulty = array[1].Trim();

                return(ChangeDifficulty(player, state, difficulty));
            }

            if (!Configuration.DifficutlyCanBeChanged)
            {
                PandaChat.Send(player, "The server administrator had disabled the changing of game difficulty.",
                               ChatColor.green);
            }

            return(true);
        }
        public bool TryDoCommand(Players.Player player, string chat)
        {
            if (player == null || player.ID == NetworkID.Server)
            {
                return(true);
            }

            string[]    array  = CommandManager.SplitCommand(chat);
            Colony      colony = Colony.Get(player);
            PlayerState state  = PlayerState.GetPlayerState(player);

            if (array.Length == 1)
            {
                PandaChat.Send(player, "Settlers! Mod difficulty is set to {0}.", ChatColor.green, state.Difficulty.Name);
                return(true);
            }

            if (array.Length < 2)
            {
                UnknownCommand(player, chat);
                return(true);
            }

            if (!GameDifficulty.GameDifficulties.ContainsKey(array[1].Trim()))
            {
                UnknownCommand(player, array[1].Trim());
                return(true);
            }

            state.Difficulty = GameDifficulty.GameDifficulties[array[1].Trim()];

            PandaChat.Send(player, "Settlers! Mod difficulty set to {0}.", ChatColor.green, state.Difficulty.Name);
            Managers.SettlerManager.UpdateFoodUse(player);

            return(true);
        }
Example #15
0
 private static void UnknownCommand(Players.Player player, string command)
 {
     PandaChat.Send(player, "Unknown command {0}", ChatColor.white, command);
     PossibleCommands(player, ChatColor.white);
 }
Example #16
0
 public void Print(Players.Player player)
 {
     PandaChat.Send(player, $"FoodMultiplier: {FoodMultiplier}", ChatColor.green);
     PandaChat.Send(player, $"MonsterDamage: {MonsterDamage}", ChatColor.green);
     PandaChat.Send(player, $"MonsterDamageReduction: {MonsterDamageReduction}", ChatColor.green);
 }