コード例 #1
0
ファイル: Profiling.cs プロジェクト: rafaelfcsouza/ModernUO
        public static void TraceExpanded_OnCommand(CommandEventArgs e)
        {
            Dictionary <Type, int[]> typeTable = new Dictionary <Type, int[]>();

            foreach (Item item in World.Items.Values)
            {
                ExpandFlag flags = item.GetExpandFlags();

                if ((flags & ~(ExpandFlag.TempFlag | ExpandFlag.SaveFlag)) == 0)
                {
                    continue;
                }

                Type itemType = item.GetType();

                do
                {
                    if (!typeTable.TryGetValue(itemType, out int[] countTable))
コード例 #2
0
ファイル: Profiling.cs プロジェクト: adverserath/TrueUO
        public static void TraceExpanded_OnCommand(CommandEventArgs e)
        {
            Hashtable typeTable = new Hashtable();

            foreach (Item item in World.Items.Values)
            {
                ExpandFlag flags = item.GetExpandFlags();

                if ((flags & ~(ExpandFlag.TempFlag | ExpandFlag.SaveFlag)) == 0)
                {
                    continue;
                }

                Type itemType = item.GetType();

                do
                {
                    int[] countTable = typeTable[itemType] as int[];

                    if (countTable == null)
                    {
                        typeTable[itemType] = countTable = new int[9];
                    }

                    if ((flags & ExpandFlag.Name) != 0)
                    {
                        ++countTable[0];
                    }

                    if ((flags & ExpandFlag.Items) != 0)
                    {
                        ++countTable[1];
                    }

                    if ((flags & ExpandFlag.Bounce) != 0)
                    {
                        ++countTable[2];
                    }

                    if ((flags & ExpandFlag.Holder) != 0)
                    {
                        ++countTable[3];
                    }

                    if ((flags & ExpandFlag.Blessed) != 0)
                    {
                        ++countTable[4];
                    }

                    /*if ( ( flags & ExpandFlag.TempFlag ) != 0 )
                     ++countTable[5];
                     *
                     * if ( ( flags & ExpandFlag.SaveFlag ) != 0 )
                     ++countTable[6];*/

                    if ((flags & ExpandFlag.Weight) != 0)
                    {
                        ++countTable[7];
                    }

                    if ((flags & ExpandFlag.Spawner) != 0)
                    {
                        ++countTable[8];
                    }

                    itemType = itemType.BaseType;
                }while (itemType != typeof(object));
            }

            try
            {
                using (StreamWriter op = new StreamWriter("expandedItems.log", true))
                {
                    string[] names =
                    {
                        "Name",
                        "Items",
                        "Bounce",
                        "Holder",
                        "Blessed",
                        "TempFlag",
                        "SaveFlag",
                        "Weight",
                        "Spawner"
                    };

                    ArrayList list = new ArrayList(typeTable);

                    list.Sort(new CountSorter());

                    foreach (DictionaryEntry de in list)
                    {
                        Type  itemType   = de.Key as Type;
                        int[] countTable = de.Value as int[];

                        op.WriteLine("# {0}", itemType.FullName);

                        for (int i = 0; i < countTable.Length; ++i)
                        {
                            if (countTable[i] > 0)
                            {
                                op.WriteLine("{0}\t{1:N0}", names[i], countTable[i]);
                            }
                        }

                        op.WriteLine();
                    }
                }
            }
            catch (Exception ex)
            {
                ExceptionLogging.LogException(ex);
            }
        }