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); } }
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(); }