Esempio n. 1
0
        // Methods
        private void LoadStatistics()
        {
            int count = 0;

            // NPCs
            var freqs = new Frequency[Model.NPCProperties.Length];

            foreach (var area in Model.Areas)
            {
                count += area.NPCObjects.Count;
                foreach (var npc in area.NPCObjects)
                {
                    freqs[npc.NPCID].Index = npc.NPCID;
                    freqs[npc.NPCID].Count++;
                }
            }
            Array.Sort <Frequency>(freqs, (x, y) => y.Count.CompareTo(x.Count));

            // NPCs - Set labels
            npcCountTotal.Text   = count.ToString();
            npcCountAverage.Text = (count / 512).ToString();
            npcMostCommon.Text   = freqs[0].Index + ", " + freqs[1].Index + ", " + freqs[2].Index;

            // Exits
            var freqs1 = new Frequency[Model.Areas.Length];
            var freqs2 = new Frequency[WorldMaps.Model.Locations.Length];

            foreach (var area in Model.Areas)
            {
                count += area.ExitTriggers.Count;
                foreach (var exit in area.ExitTriggers)
                {
                    if (exit.ExitType == 0)
                    {
                        freqs1[exit.Destination].Index = exit.Destination;
                        freqs1[exit.Destination].Count++;
                        freqs1[exit.Destination].Tag = exit.ExitType;
                    }
                    else
                    {
                        freqs2[exit.Destination].Index = exit.Destination;
                        freqs2[exit.Destination].Count++;
                        freqs2[exit.Destination].Tag = exit.ExitType;
                    }
                }
            }

            // Exits - Combine and sort
            freqs = new Frequency[freqs1.Length + freqs2.Length];
            freqs1.CopyTo(freqs, 0);
            freqs2.CopyTo(freqs, freqs1.Length);
            Array.Sort <Frequency>(freqs, (x, y) => y.Count.CompareTo(x.Count));

            // Exits - Set labels
            exitCountTotal.Text   = count.ToString();
            exitCountAverage.Text = (count / 512).ToString();
            if ((byte)freqs[0].Tag == 0)
            {
                exitMostCommon.Text = Model.Areas[freqs[0].Index].ToString();
            }
            else if ((byte)freqs[0].Tag == 1)
            {
                exitMostCommon.Text = WorldMaps.Model.Locations[freqs[0].Index].ToString();
            }

            // Events
            freqs = new Frequency[EventScripts.Model.EventScripts.Length];
            foreach (var area in Model.Areas)
            {
                count += area.EventTriggers.Count;
                foreach (var trigger in area.EventTriggers)
                {
                    freqs[trigger.RunEvent].Index = trigger.RunEvent;
                    freqs[trigger.RunEvent].Count++;
                }
            }

            // Events - Sort and set labels
            Array.Sort <Frequency>(freqs, (x, y) => y.Count.CompareTo(x.Count));
            eventCountTotal.Text   = count.ToString();
            eventCountAverage.Text = (count / 512).ToString();
            eventMostCommon.Text   = freqs[0].Index + ", " + freqs[1].Index + ", " + freqs[2].Index;
        }