private readonly ResizableToolTip _tooltipCopy = new ResizableToolTip {ShowAlways = false, AutomaticDelay = 0};\r
private int _currentFleet;\r
private bool _combinedFleet;\r
- private MainFormLabels _mainLabels;\r
+ private readonly MainShipLabels _mainLabels = new MainShipLabels();\r
+ private readonly MainNDockLabels _ndockLabels = new MainNDockLabels();\r
private NumberAndHistory _numberAndHistory;\r
private readonly ListForm _listForm;\r
private readonly NotificationManager _notificationManager;\r
SetupQuestPanel();\r
panelRepairList.CreateLabels(panelRepairList_Click);\r
PerformZoom();\r
- _mainLabels.AdjustAkashiTimers();\r
}\r
\r
private void SetScaleFactorOfDpiScaling()\r
\r
private void CreateMainLabels()\r
{\r
- _mainLabels = new MainFormLabels(new MainFormPanels\r
+ _mainLabels.CreateAllShipLabels(new MainShipPanels\r
{\r
PanelShipInfo = panelShipInfo,\r
Panel7Ships = panel7Ships,\r
PanelCombinedFleet = panelCombinedFleet,\r
- PanelNDock = panelDock\r
- });\r
- _mainLabels.CreateAllShipLabels(ShowShipOnShipList);\r
- _mainLabels.CreateNDockLabels(labelNDock_Click);\r
+ }, ShowShipOnShipList);\r
+ _ndockLabels.Create(panelDock, labelNDock_Click);\r
}\r
\r
private void CreateNumberAndHistory(NotificationManager manager)\r
private void PerformZoom()\r
{\r
if (Config.Zoom == 100)\r
+ {\r
+ ShipLabel.Name.BaseFont = Font;\r
+ ShipLabel.Name.LatinFont = LatinFont();\r
return;\r
+ }\r
var prev = CurrentAutoScaleDimensions;\r
foreach (var control in new Control[]\r
{\r
contextMenuStripMain, _errorDialog\r
})\r
{\r
- control.Font = new Font(control.Font.FontFamily, control.Font.Size * Config.Zoom / 100);\r
+ control.Font = ZoomFont(control.Font);\r
}\r
foreach (var toolTip in new[] {_toolTip, _tooltipCopy})\r
{\r
- toolTip.Font = new Font(toolTip.Font.FontFamily, toolTip.Font.Size * Config.Zoom / 100);\r
+ toolTip.Font = ZoomFont(toolTip.Font);\r
}\r
- ShipLabel.Name.LatinFont = new Font("Tahoma", 8f * Config.Zoom / 100);\r
+ ShipLabel.Name.BaseFont = Font;\r
+ ShipLabel.Name.LatinFont = LatinFont();\r
var cur = CurrentAutoScaleDimensions;\r
Scaler.Factor = Scaler.Scale(cur.Width / prev.Width, cur.Height / prev.Height);\r
}\r
\r
+ private Font ZoomFont(Font font)\r
+ {\r
+ return new Font(font.FontFamily, font.Size * Config.Zoom / 100);\r
+ }\r
+\r
+ private Font LatinFont()\r
+ {\r
+ return new Font("Tahoma", 8f * Config.Zoom / 100);\r
+ }\r
+\r
private void RestoreLocation()\r
{\r
if (Config.Location.X == int.MinValue)\r
Sniffer.Achievement.ResetHours = Config.ResetHours;\r
labelAkashiRepair.Visible = labelAkashiRepairTimer.Visible =\r
labelPresetAkashiTimer.Visible = Config.UsePresetAkashi;\r
+ Sniffer.WarnBadDamageWithDameCon = Config.WarnBadDamageWithDameCon;\r
}\r
\r
public void ApplyDebugLogSetting()\r
\r
private void SetCurrentFleet()\r
{\r
- var states = Sniffer.Fleets.Select(fleet => fleet.State).ToArray();\r
- var inSortie = states.Any(state => state >= FleetState.Sortie);\r
- if (_inSortie || !inSortie)\r
+ var inSortie = Sniffer.InSortie;\r
+ if (_inSortie || inSortie == -1)\r
{\r
- _inSortie = inSortie;\r
+ _inSortie = inSortie != -1;\r
return;\r
}\r
_inSortie = true;\r
- if (states[0] == FleetState.Sortie && states[1] == FleetState.Sortie)\r
+ if (inSortie == 10)\r
{\r
_combinedFleet = true;\r
_currentFleet = 0;\r
else\r
{\r
_combinedFleet = false;\r
- _currentFleet = Array.FindIndex(states, state => state >= FleetState.Sortie);\r
+ _currentFleet = inSortie;\r
}\r
}\r
\r
\r
private void UpdateBattleFighterPower()\r
{\r
+ UpdateEnemyFighterPower();\r
var battle = Sniffer.Battle;\r
- var power = battle.EnemyFighterPower;\r
- labelEnemyFighterPower.Text = power.AirCombat + power.UnknownMark;\r
- if (power.AirCombat != power.Interception)\r
+ labelFighterPower.ForeColor = battle.BattleState == BattleState.Night\r
+ ? DefaultForeColor\r
+ : AirControlLevelColor(battle.AirControlLevel);\r
+ if (battle.BattleState == BattleState.AirRaid)\r
{\r
- var text = "防空: " + power.Interception + power.UnknownMark;\r
- _toolTip.SetToolTip(labelEnemyFighterPower, text);\r
- _toolTip.SetToolTip(labelEnemyFighterPowerCaption, text);\r
+ UpdateAirRaidFighterPower();\r
}\r
else\r
{\r
- _toolTip.SetToolTip(labelEnemyFighterPower, "");\r
- _toolTip.SetToolTip(labelEnemyFighterPowerCaption, "");\r
+ UpdateFighterPower(Sniffer.IsCombinedFleet && battle.EnemyIsCombined);\r
}\r
- UpdateFighterPower(Sniffer.IsCombinedFleet && battle.EnemyIsCombined);\r
- labelFighterPower.ForeColor = new[]\r
- {DefaultForeColor, DefaultForeColor, CUDColors.Blue, CUDColors.Green, CUDColors.Orange, CUDColors.Red}[\r
- battle.AirControlLevel + 1];\r
+ }\r
+\r
+ private void UpdateEnemyFighterPower()\r
+ {\r
+ var fp = Sniffer.Battle.EnemyFighterPower;\r
+ labelEnemyFighterPower.Text = fp.AirCombat + fp.UnknownMark;\r
+ var toolTip = fp.AirCombat == fp.Interception ? "" : "防空: " + fp.Interception + fp.UnknownMark;\r
+ _toolTip.SetToolTip(labelEnemyFighterPower, toolTip);\r
+ _toolTip.SetToolTip(labelEnemyFighterPowerCaption, toolTip);\r
+ }\r
+\r
+ private void UpdateAirRaidFighterPower()\r
+ {\r
+ var fp = Sniffer.Battle.FighterPower;\r
+ labelFighterPower.Text = fp.Min.ToString();\r
+ var toolTop = fp.Diff ? fp.RangeString : "";\r
+ _toolTip.SetToolTip(labelFighterPower, toolTop);\r
+ _toolTip.SetToolTip(labelFighterPowerCaption, toolTop);\r
+ }\r
+\r
+ private static Color AirControlLevelColor(int level)\r
+ {\r
+ var colors = new[]\r
+ {\r
+ DefaultForeColor, DefaultForeColor, CUDColors.Blue, CUDColors.Green, CUDColors.Orange, CUDColors.Red\r
+ };\r
+ return colors[level + 1];\r
}\r
\r
private void ShowResultRank()\r
var stat = Sniffer.Fleets[i].ChargeStatus;\r
fuelSq[i].ImageIndex = stat.Fuel;\r
bullSq[i].ImageIndex = stat.Bull;\r
+ var text = stat.Empty ? "" : $"燃{stat.FuelRatio * 100:f1}% 弾{stat.BullRatio * 100:f1}%";\r
+ _toolTip.SetToolTip(fuelSq[i], text);\r
+ _toolTip.SetToolTip(bullSq[i], text);\r
}\r
}\r
\r
private void UpdateNDocLabels()\r
{\r
- _mainLabels.SetNDockLabels(Sniffer.NDock);\r
+ _ndockLabels.SetName(Sniffer.NDock);\r
SetNDockLabel();\r
}\r
\r
var names = Sniffer.Missions.Select(mission => mission.Name).ToArray();\r
for (var i = 0; i < ShipInfo.FleetCount - 1; i++)\r
{\r
- var fleetParams = GenerateFleetParamsForMission(i + 1);\r
+ var fleetParams = Sniffer.Fleets[i + 1].MissionParameter;\r
var inPort = string.IsNullOrEmpty(names[i]);\r
paramsLabels[i].Visible = inPort;\r
paramsLabels[i].Text = fleetParams;\r
labelMission.Text = (Config.ShowEndTime & TimerKind.Mission) != 0 ? "遠征終了" : "遠征";\r
}\r
\r
- private string GenerateFleetParamsForMission(int fleetNumber)\r
- {\r
- var result = new List<string>();\r
- var fleet = Sniffer.Fleets[fleetNumber];\r
- var kira = fleet.Ships.Count(ship => ship.Cond > 49);\r
- var plus = fleet.Ships[0].Cond > 49;\r
- if (kira > 0)\r
- result.Add($"キラ{kira}{(plus ? "+" : "")}");\r
- var drums = fleet.Ships.SelectMany(ship => ship.Slot).Count(item => item.Spec.IsDrum);\r
- var drumShips = fleet.Ships.Count(ship => ship.Slot.Any(item => item.Spec.IsDrum));\r
- if (drums > 0)\r
- result.Add($"ド{drums}({drumShips}隻)");\r
- if (fleet.DaihatsuBonus > 0)\r
- result.Add($"ダ{fleet.DaihatsuBonus * 100:f1}%");\r
- return string.Join(" ", result);\r
- }\r
-\r
private void labelMission_Click(object sender, EventArgs e)\r
{\r
Config.ShowEndTime ^= TimerKind.Mission;\r
for (var i = 0; i < Sniffer.NDock.Length; i++)\r
{\r
var entry = Sniffer.NDock[i];\r
- _mainLabels.SetNDockTimer(i, entry.Timer, _now, (Config.ShowEndTime & TimerKind.NDock) != 0);\r
+ _ndockLabels.SetTimer(i, entry.Timer, _now, (Config.ShowEndTime & TimerKind.NDock) != 0);\r
}\r
var kdock = new[] {labelConstruct1, labelConstruct2, labelConstruct3, labelConstruct4};\r
for (var i = 0; i < kdock.Length; i++)\r