public static void Calculate(Dictionary <string, Dictionary <int, List <IdentResponse> > > containersLoot)
        {
            StatsByLootTier.Clear();

            StatsByContainerName.Clear();

            // Create empty stats for every loot tier
            for (int i = -1; i <= 8; i++)
            {
                StatsByLootTier[i] = new Stats();
            }

            foreach (var kvp in containersLoot)
            {
                var containerByTier = StatsByLootTier[TierCalculator.GetTierByContainerName(kvp.Key)];
                var containerStats  = new Stats();

                foreach (var container in kvp.Value)
                {
                    foreach (var item in container.Value)
                    {
                        containerByTier.ProcessItem(item);
                        containerStats.ProcessItem(item);
                    }
                }

                StatsByContainerName[kvp.Key] = containerStats;
            }
        }
Beispiel #2
0
        private void OnLoadFilesComplete()
        {
            var sb = new StringBuilder();


            // Calculate the loot tiers
            TierCalculator.Calculate(containersLoot);


            // Populate the Containers tab
            var dt = new DataTable();

            dt.Columns.Add("Name", typeof(string));
            dt.Columns.Add("Tier", typeof(int));
            dt.Columns.Add("Hits", typeof(int));
            dt.Columns.Add("Average Items", typeof(float));
            dt.Columns.Add("Total Items", typeof(int));

            foreach (var kvp in containersLoot)
            {
                var dr = dt.NewRow();

                dr["Name"] = kvp.Key;
                dr["Tier"] = TierCalculator.GetTierByContainerName(kvp.Key);
                dr["Hits"] = kvp.Value.Count;

                var totalItems = 0;

                foreach (var containers in kvp.Value)
                {
                    totalItems += containers.Value.Count;
                }

                dr["Average Items"] = totalItems / (float)kvp.Value.Count;
                dr["Total Items"]   = totalItems;

                dt.Rows.Add(dr);
            }

            dataGridView1.DataSource = dt;

            dataGridView1.Columns["Hits"].DefaultCellStyle.Format          = "N0";
            dataGridView1.Columns["Average Items"].DefaultCellStyle.Format = "0.0";
            dataGridView1.Columns["Total Items"].DefaultCellStyle.Format   = "N0";

            for (int i = 0; i < dataGridView1.Columns.Count; i++)
            {
                if (i == 0)
                {
                    continue;
                }

                dataGridView1.Columns[i].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight;
            }

            dataGridView1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells;
            dataGridView1.AutoResizeColumns();


            // Calculate the stats
            StatsCalculator.Calculate(containersLoot);


            // Output stats by tier
            sb.Clear();
            foreach (var kvp in StatsCalculator.StatsByLootTier)
            {
                sb.AppendLine();
                sb.AppendLine("========== Tier " + kvp.Key + " ==========");
                sb.Append(kvp.Value);
            }
            txtRawOutput1.Text = sb.ToString();

            // Output stats by container name
            sb.Clear();
            foreach (var kvp in StatsCalculator.StatsByContainerName)
            {
                sb.AppendLine();
                sb.AppendLine("========== Container Name " + kvp.Key + " ==========");
                sb.Append(kvp.Value);
            }
            txtRawOutput2.Text = sb.ToString();
        }