Ejemplo n.º 1
0
        ////////////////

        public WorldDataProtocol()
        {
            this.HalfDays = WorldStateLibraries.GetElapsedHalfDays();
        }
        /// <summary>
        /// Gets a list of assorted game data statistics, formatted for (markdown) output.
        /// </summary>
        /// <param name="mods">Mods to display in this list. Typically only the set of loaded mods (ModLoader.Mods`).</param>
        /// <returns></returns>
        public static IList <string> GetFormattedGameInfo(IEnumerable <Mod> mods)
        {
            var list = new List <string>();

            var modsList = mods.OrderBy(m => m.Name)
                           .SafeSelect(m => StringFormattingLibraries.SanitizeMarkdown(m.DisplayName) + " " + m.Version.ToString())
                           .ToArray();
            bool   isDay     = Main.dayTime;
            double timeOfDay = Main.time;
            int    halfDays  = WorldStateLibraries.GetElapsedHalfDays();
            string worldSize = WorldLibraries.GetSize().ToString();

            string[] worldProg   = GameInfoLibraries.GetVanillaProgressList().ToArray();
            int      activeItems = ItemLibraries.GetActive().Count;
            int      activeNpcs  = NPCLibraries.GetActive().Count;
            //string[] playerInfos = InfoLibraries.GetCurrentPlayerInfo().ToArray();
            //string[] playerEquips = InfoLibraries.GetCurrentPlayerEquipment().ToArray();
            int    activePlayers   = Main.ActivePlayersCount;
            string netmode         = Main.netMode == NetmodeID.SinglePlayer ? "single-player" : "multiplayer";
            bool   autopause       = Main.autoPause;
            bool   autosave        = Main.autoSave;
            int    lighting        = Lighting.lightMode;
            int    lightingThreads = Lighting.LightingThreads;
            int    frameSkipMode   = Main.FrameSkipMode;
            bool   isMaximized     = Main.screenMaximized;
            int    windowWid       = Main.screenWidth;
            int    windowHei       = Main.screenHeight;
            int    qualityStyle    = Main.qaStyle;
            bool   bgOn            = Main.BackgroundEnabled;
            bool   childSafe       = !ChildSafety.Disabled;
            float  gameZoom        = Main.GameZoomTarget;
            float  uiZoom          = Main.UIScale;

            list.Add("tModLoader version: " + ModLoader.version.ToString());
            list.Add(FormattedGameInfoLibraries.RenderMarkdownModTable(modsList));
            list.Add(FormattedGameInfoLibraries.RenderMarkdownPlayersTable());

            for (int i = 0; i < Main.player.Length; i++)
            {
                Player plr = Main.player[i];
                if (plr == null || !plr.active)
                {
                    continue;
                }

                list.Add(FormattedGameInfoLibraries.RenderMarkdownPlayerEquipsTable(plr));
            }

            list.Add("Is day: " + isDay + ", Time of day/night: " + timeOfDay + ", Elapsed half days: " + halfDays);                //+ ", Total time (seconds): " + Main._drawInterfaceGameTime.TotalGameTime.Seconds;
            list.Add("World name: " + StringFormattingLibraries.SanitizeMarkdown(Main.worldName) + ", world size: " + worldSize);
            list.Add("World progress: " + (worldProg.Length > 0 ? string.Join(", ", worldProg) : "none"));
            list.Add("Items on ground: " + activeItems + ", Npcs active: " + activeNpcs);
            //list.Add( "Player info: " + string.Join( ", ", playerInfos ) );
            //list.Add( "Player equips: " + (playerEquips.Length > 0 ? string.Join(", ", playerEquips) : "none" ) );
            list.Add("Player count: " + activePlayers + " (" + netmode + ")");
            list.Add("Autopause: " + autopause);
            list.Add("Autosave: " + autosave);
            list.Add("Lighting mode: " + lighting);
            list.Add("Lighting threads: " + lightingThreads);
            list.Add("Frame skip mode: " + frameSkipMode);
            list.Add("Is screen maximized: " + isMaximized);
            list.Add("Screen resolution: " + windowWid + " " + windowHei);
            list.Add("Quality style: " + qualityStyle);
            list.Add("Background on: " + bgOn);
            list.Add("Child safety: " + childSafe);
            list.Add("Game zoom: " + gameZoom);
            list.Add("UI zoom: " + uiZoom);
            list.Add("FrameworkVersion.Framework: " + Enum.GetName(typeof(Framework), FrameworkVersion.Framework));
            list.Add("FrameworkVersion.Version: " + FrameworkVersion.Version.ToString());

            return(list);
        }