Пример #1
0
        private Color GetFinalColor(string accessibleName, double value, double metricsvalue = -1)
        {
            if (KeepTransparancy == true)
            {
                return(Color.Transparent);
            }
            double mvalue = 0;

            if (metricsvalue == -1)
            {
                Dictionary <string, double> metricsLookup = new Dictionary <string, double>();
                metricsLookup.Add(MetricsTableComposer.FIRECHANCE_MAIN, Metrics.FireChanceMain);
                metricsLookup.Add(MetricsTableComposer.RANGE_MAIN, Metrics.Distance);
                metricsLookup.Add(MetricsTableComposer.AIR_DETECTION, Metrics.AirDetection);
                metricsLookup.Add(MetricsTableComposer.SURFACE_DETECTION, Metrics.SurfaceDetection);
                metricsLookup.Add(MetricsTableComposer.RANGE_SECONDARY, Metrics.SecondaryRange);
                metricsLookup.Add(MetricsTableComposer.RELOAD_MAIN, Metrics.ReloadTimeMain());
                metricsLookup.Add(MetricsTableComposer.TORPEDO_RELOAD, Metrics.TorpedoReload);
                metricsLookup.Add(MetricsTableComposer.SHIP_HP, Metrics.HP);
                metricsLookup.Add(MetricsTableComposer.TORPEDO_SPEED, Metrics.TorpedoSpeed);
                metricsLookup.Add(MetricsTableComposer.TORPEDO_RANGE, Metrics.TorpedoDistance);
                metricsLookup.Add(MetricsTableComposer.TRAVERSE_SPEED, Metrics.RotationSpeed());
                metricsLookup.Add(MetricsTableComposer.FIGHTER_SQUADRONS, Metrics.FighterSquadrons);
                metricsLookup.Add(MetricsTableComposer.SHIP_SPEED, Metrics.Speed);
                metricsLookup.Add(MetricsTableComposer.RUDDER_SHIFT, Metrics.RudderTime);
                metricsLookup.Add(MetricsTableComposer.AP_DAMAGE, Metrics.APDamage);
                metricsLookup.Add(MetricsTableComposer.HE_DAMAGE, Metrics.HEDamage);
                metricsLookup.Add(MetricsTableComposer.TORPEDO_DAMAGE, Metrics.TorpedoDamage);

                mvalue = metricsLookup[accessibleName];
            }
            else
            {
                mvalue = metricsvalue;
            }

            List <string> lowerBetter  = new List <string>();
            List <string> higherBetter = new List <string>();

            lowerBetter.Add(MetricsTableComposer.SURFACE_DETECTION);
            lowerBetter.Add(MetricsTableComposer.AIR_DETECTION);
            lowerBetter.Add(MetricsTableComposer.RELOAD_MAIN);
            lowerBetter.Add(MetricsTableComposer.RELOAOD_SECONDARY);
            lowerBetter.Add(MetricsTableComposer.TORPEDO_RELOAD);
            lowerBetter.Add(MetricsTableComposer.RUDDER_SHIFT);
            lowerBetter.Add(MetricsTableComposer.TURNING_RADIUS);

            higherBetter.Add(MetricsTableComposer.RANGE_MAIN);
            higherBetter.Add(MetricsTableComposer.RANGE_SECONDARY);
            higherBetter.Add(MetricsTableComposer.FIRECHANCE_MAIN);
            higherBetter.Add(MetricsTableComposer.FIRECHANCE_SECONDARY);
            higherBetter.Add(MetricsTableComposer.SHIP_HP);
            higherBetter.Add(MetricsTableComposer.TORPEDO_SPEED);
            higherBetter.Add(MetricsTableComposer.TORPEDO_RANGE);
            higherBetter.Add(MetricsTableComposer.TRAVERSE_SPEED);
            higherBetter.Add(MetricsTableComposer.FIGHTER_SQUADRONS);
            higherBetter.Add(MetricsTableComposer.SHIP_SPEED);
            higherBetter.Add(MetricsTableComposer.AP_DAMAGE);
            higherBetter.Add(MetricsTableComposer.HE_DAMAGE);
            higherBetter.Add(MetricsTableComposer.TORPEDO_DAMAGE);

            if (value == mvalue || Math.Round(value, 1) == Math.Round(mvalue, 1))
            {
                return(Color.Transparent);
            }
            else if ((lowerBetter.Contains(accessibleName) && value < mvalue) || (higherBetter.Contains(accessibleName) && value > mvalue))
            {
                return(Color.LightGreen);
            }
            else
            {
                return(Color.LightCoral);
            }
        }
Пример #2
0
        public static void DrawTable(MetricsExctractor Extractor, MetricsDrawer Table)
        {
            ShipMetrics Metrics = Extractor.GetMetrics();

            Table.SuspendLayout();
            Table.AppendHeadline(SECTION_GENERAL);

            Table.AppendRow(SHIP_CLASS, Metrics.ShipClass);
            Table.AppendRow(SHIP_TIER, Metrics.Tier.ToString());
            Table.AppendRow(SHIP_HP, Metrics.HP.ToString());
            Table.AppendRow(SHIP_PREMIUM, ((Metrics.isPremium) ? "Yes" : "No"));

            if (Metrics.MainCaliberName != null && !Metrics.MainCaliberName.Equals(""))
            {
                Table.AppendHeadline(SECTION_MAIN_ARMAMENT);
                Table.AppendFullRow(Metrics.MainCaliberName);
                Table.AppendRow(GUN_CALIBER, Metrics.MainCaliber.ToString());
                Table.AppendRow(AP_DAMAGE, Metrics.APDamage.ToString());
                Table.AppendRow(HE_DAMAGE, Metrics.HEDamage.ToString());

                Table.AppendRow(RELOAD_MAIN, Metrics.ReloadTimeMain().ToString() + SUFFIX_SEC);
                Table.AppendRow(RANGE_MAIN, Metrics.Distance.ToString() + SUFFIX_KM);
                Table.AppendRow(DISPERSION, Metrics.Dispersion.ToString() + SUFFIX_M);

                Table.AppendRow(FIRECHANCE_MAIN, Metrics.FireChanceMain.ToString() + SUFFIX_PCT);
                Table.AppendRow(TRAVERSE_SPEED, Metrics.RotationSpeed().ToString() + SUFFIX_DEG);
                Table.AppendRow(TRAVERSE_SPEED_180, Metrics.RotationTime.ToString() + SUFFIX_SEC);
            }

            if (Metrics.Secondaries != null)
            {
                Table.AppendHeadline(SECTION_SEC_ARMAMENT);
                SecondariesData SecData = Metrics.Secondaries["0"];

                Table.AppendRow(RANGE_SECONDARY, Metrics.SecondaryRange.ToString() + SUFFIX_KM, "Name: " + SecData.Name);
                int slot = 0;
                while (SecData != null)
                {
                    //Table.AppendFullRow(SLOT_PREFIX + slot.ToString() + ": " + SecData.Name);
                    Table.AppendRow(RELOAOD_SECONDARY, SecData.ReloadTime().ToString() + SUFFIX_SEC, SLOT_PREFIX + slot.ToString() + ": " + SecData.Name, "", "Slot" + slot.ToString());
                    Table.AppendRow(FIRECHANCE_SECONDARY, SecData.FireChance.ToString() + SUFFIX_PCT, SLOT_PREFIX + slot.ToString() + ": " + SecData.Name, "", "Slot" + slot.ToString());
                    slot += 1;
                    try
                    {
                        if (Metrics.Secondaries.ContainsKey(slot.ToString()))
                        {
                            SecData = Metrics.Secondaries[slot.ToString()];
                        }
                        else
                        {
                            SecData = null;
                        }
                    }
                    catch (Exception)
                    {
                        SecData = null;
                    }
                }
            }

            if (Metrics.TorpedoReload != 0)
            {
                Table.AppendHeadline(SECTION_TORPEDO_ARMAMENT);
                Table.AppendRow(TORPEDO_SPEED, Metrics.TorpedoSpeed.ToString() + SUFFIX_KNOTS);
                Table.AppendRow(TORPEDO_DAMAGE, Metrics.TorpedoDamage.ToString());
                Table.AppendRow(TORPEDO_RELOAD, Metrics.TorpedoReload.ToString() + SUFFIX_SEC);
                Table.AppendRow(TORPEDO_RANGE, Metrics.TorpedoDistance.ToString() + SUFFIX_KM);
            }

            if (Metrics.AntiAircraft != null)
            {
                Table.AppendHeadline(AA);
                Dictionary <string, AntiAircraftMount> mounts = Metrics.AntiAircraft.AAMounts;
                foreach (KeyValuePair <string, AntiAircraftMount> entry in mounts)
                {
                    Table.AppendRow(SLOT_PREFIX + entry.Key.ToString() + ": " + AA_RANGE, entry.Value.Distance.ToString() + SUFFIX_KM, "", "AA Mount #" + entry.Key.ToString());
                    Table.AppendRow(SLOT_PREFIX + entry.Key.ToString() + ": " + AA_CALIBER, entry.Value.Caliber.ToString() + SUFFIX_MM, entry.Value.Guns.ToString() + " x " + entry.Value.Name, "AA Mount #" + entry.Key.ToString());
                    Table.AppendRow(SLOT_PREFIX + entry.Key.ToString() + ": " + AA_DAMAGE, entry.Value.Damage.ToString(), "Avarage damage per second");
                }
            }

            if (Metrics.FighterSquadrons != 0 || Metrics.BomberSquadrons != 0 || Metrics.TorpedoSquadrons != 0)
            {
                Table.AppendHeadline(SECTION_PLANE_ARMAMENT);
                Table.AppendRow(FIGHTER_SQUADRONS, Metrics.FighterSquadrons.ToString());
                Table.AppendRow(BOMBER_SQUADRONS, Metrics.BomberSquadrons.ToString());
                Table.AppendRow(TORPEDO_SQUADRONS, Metrics.TorpedoSquadrons.ToString());
            }

            Table.AppendHeadline(SECTION_MANOUVERABILITY);
            Table.AppendRow(SHIP_SPEED, Metrics.Speed.ToString() + SUFFIX_KNOTS, Metrics.Engine);
            Table.AppendRow(RUDDER_SHIFT, Metrics.RudderTime.ToString() + SUFFIX_SEC);
            Table.AppendRow(TURNING_RADIUS, Metrics.TurningRadius.ToString() + SUFFIX_M);

            if (Metrics.SurfaceDetection != 0)
            {
                Table.AppendHeadline(SECTION_CONCEALMENT);
                Table.AppendRow(SURFACE_DETECTION, Metrics.SurfaceDetection.ToString() + SUFFIX_KM);
                Table.AppendRow(AIR_DETECTION, Metrics.AirDetection.ToString() + SUFFIX_KM);
            }
            Table.ResumeLayout();
        }