\r
namespace KancolleSniffer\r
{\r
+ public enum BattleResultRank\r
+ {\r
+ P,\r
+ S,\r
+ A,\r
+ B,\r
+ C,\r
+ D,\r
+ E\r
+ }\r
+\r
public class BattleInfo\r
{\r
private readonly ShipMaster _shipMaster;\r
private readonly ItemInfo _itemInfo;\r
private int _fleet;\r
private int[] _friendHp;\r
+ private int[] _friendStartHp;\r
private int[] _guardHp;\r
+ private int[] _guardStartHp;\r
+ private int[] _enemyHp;\r
+ private int[] _enemyStartHp;\r
private readonly List<int> _escapingShips = new List<int>();\r
\r
public bool InBattle { get; set; }\r
public bool HasDamagedShip { get; set; }\r
public string[] DamagedShipNames { get; private set; }\r
public int AirControlLevel { get; private set; }\r
+ public BattleResultRank ResultRank { get; private set; }\r
\r
public BattleInfo(ShipMaster shipMaster, ShipInfo shipInfo, ItemInfo itemInfo)\r
{\r
InBattle = true;\r
Formation = FormationName(json);\r
EnemyAirSuperiority = CalcEnemyAirSuperiority(json);\r
- if (_friendHp != null)\r
- {\r
- ShowResult(false); // 昼戦の結果を夜戦のときに表示する\r
- }\r
- else\r
- {\r
- _fleet = (int)DeckId(json);\r
- _friendHp = _shipInfo.GetShipStatuses(_fleet).Select(s => s.NowHp).ToArray();\r
- }\r
+ AirControlLevel = CheckAirControlLevel(json);\r
+ _fleet = (int)DeckId(json);\r
+ ShowResult(false); // 昼戦の結果を夜戦のときに表示する\r
+ SetupHp(json);\r
if (IsNightBattle(json))\r
- {\r
- CalcHougekiDamage(json.api_hougeki, _friendHp);\r
- }\r
+ CalcHougekiDamage(json.api_hougeki, _friendHp, _enemyHp);\r
else\r
- {\r
- AirControlLevel = CheckAirControlLevel(json);\r
CalcDamage(json);\r
- }\r
+ ClearOverKill(_friendHp);\r
+ ClearOverKill(_enemyHp);\r
+ ResultRank = CalcResultRank();\r
}\r
\r
private int DeckId(dynamic json)\r
return (int)json.api_deck_id - 1;\r
}\r
\r
- private bool IsNightBattle(dynamic json)\r
- {\r
- return json.api_hougeki();\r
- }\r
-\r
private string FormationName(dynamic json)\r
{\r
if (!json.api_formation()) // 演習の夜戦\r
return "";\r
}\r
\r
+ private void SetupHp(dynamic json)\r
+ {\r
+ if (_friendHp != null)\r
+ return;\r
+ var nowhps = (int[])json.api_nowhps;\r
+ _friendHp = nowhps.Skip(1).Take(6).TakeWhile(hp => hp != -1).ToArray();\r
+ _friendStartHp = (int[])_friendHp.Clone();\r
+ _enemyHp = nowhps.Skip(7).TakeWhile(hp => hp != -1).ToArray();\r
+ _enemyStartHp = (int[])_enemyHp.Clone();\r
+ if (json.api_nowhps_combined())\r
+ {\r
+ _guardHp = ((int[])json.api_nowhps_combined).Skip(1).ToArray();\r
+ _guardStartHp = (int[])_guardHp.Clone();\r
+ }\r
+ else\r
+ {\r
+ _guardHp = _guardStartHp = new int[0];\r
+ }\r
+ }\r
+\r
+ private void CleanupHp()\r
+ {\r
+ _friendHp = null;\r
+ }\r
+\r
private int CheckAirControlLevel(dynamic json)\r
{\r
+ if (!json.api_kouku())\r
+ return -1;\r
var stage1 = json.api_kouku.api_stage1;\r
if (stage1.api_f_count == 0 && stage1.api_e_count == 0)\r
return -1;\r
private void CalcDamage(dynamic json)\r
{\r
if (json.api_kouku.api_stage3 != null)\r
- CalcSimpleDamage(json.api_kouku.api_stage3.api_fdam, _friendHp);\r
+ CalcSimpleDamage(json.api_kouku.api_stage3, _friendHp, _enemyHp);\r
if (json.api_kouku2() && json.api_kouku2.api_stage3 != null) // 航空戦2回目\r
- CalcSimpleDamage(json.api_kouku2.api_stage3.api_fdam, _friendHp);\r
+ CalcSimpleDamage(json.api_kouku2.api_stage3, _friendHp, _enemyHp);\r
if (!json.api_opening_atack()) // 航空戦のみ\r
return;\r
if (json.api_opening_atack != null)\r
- CalcSimpleDamage(json.api_opening_atack.api_fdam, _friendHp);\r
+ CalcSimpleDamage(json.api_opening_atack, _friendHp, _enemyHp);\r
if (json.api_hougeki1 != null)\r
- CalcHougekiDamage(json.api_hougeki1, _friendHp);\r
+ CalcHougekiDamage(json.api_hougeki1, _friendHp, _enemyHp);\r
if (json.api_hougeki2 != null)\r
- CalcHougekiDamage(json.api_hougeki2, _friendHp);\r
+ CalcHougekiDamage(json.api_hougeki2, _friendHp, _enemyHp);\r
if (json.api_raigeki != null)\r
- CalcSimpleDamage(json.api_raigeki.api_fdam, _friendHp);\r
+ CalcSimpleDamage(json.api_raigeki, _friendHp, _enemyHp);\r
+ }\r
+\r
+ private bool IsNightBattle(dynamic json)\r
+ {\r
+ return json.api_hougeki();\r
+ }\r
+\r
+ private void CalcSimpleDamage(dynamic json, int[] friend, int[] enemy)\r
+ {\r
+ CalcSimpleDamage(json.api_fdam, friend);\r
+ CalcSimpleDamage(json.api_edam, enemy);\r
}\r
\r
private void CalcSimpleDamage(dynamic rawDamage, int[] result)\r
{\r
var damage = (int[])rawDamage;\r
- for (var i = 0; i < _friendHp.Length; i++)\r
+ for (var i = 0; i < result.Length; i++)\r
result[i] -= damage[i + 1];\r
}\r
\r
- private void CalcHougekiDamage(dynamic hougeki, int[] friend)\r
+ private void CalcHougekiDamage(dynamic hougeki, int[] friend, int[] enemy)\r
{\r
var targets = ((dynamic[])hougeki.api_df_list).Skip(1).SelectMany(x => (int[])x);\r
var damages = ((dynamic[])hougeki.api_damage).Skip(1).SelectMany(x => (double[])x);\r
foreach (var hit in targets.Zip(damages, (t, d) => new {t, d}))\r
{\r
- if (1 <= hit.t && hit.t <= friend.Length)\r
+ if (hit.t == -1)\r
+ continue;\r
+ if (hit.t <= 6)\r
friend[hit.t - 1] -= (int)hit.d;\r
+ else\r
+ enemy[(hit.t - 1) % 6] -= (int)hit.d;\r
}\r
}\r
\r
+ private void ClearOverKill(int[] result)\r
+ {\r
+ for (var i = 0; i < result.Length; i++)\r
+ if (result[i] < 0)\r
+ result[i] = 0;\r
+ }\r
+\r
public void InspectBattleResult(dynamic json)\r
{\r
ShowResult();\r
- _friendHp = null;\r
+ CleanupHp();\r
}\r
\r
public void InspectPracticeResult(dynamic json)\r
{\r
ShowResult(false);\r
- _friendHp = null;\r
+ CleanupHp();\r
}\r
\r
private void ShowResult(bool warnDamagedShip = true)\r
{\r
+ if (_friendHp == null)\r
+ return;\r
var ships = _shipInfo.GetShipStatuses(_fleet);\r
foreach (var e in ships.Zip(_friendHp, (ship, now) => new {ship, now}))\r
e.ship.NowHp = e.now;\r
InBattle = true;\r
Formation = FormationName(json);\r
EnemyAirSuperiority = CalcEnemyAirSuperiority(json);\r
- if (_friendHp != null)\r
- {\r
- ShowResultCombined(false);\r
- }\r
- else\r
- {\r
- _fleet = 10;\r
- _friendHp = _shipInfo.GetShipStatuses(0).Select(s => s.NowHp).ToArray();\r
- _guardHp = _shipInfo.GetShipStatuses(1).Select(s => s.NowHp).ToArray();\r
- }\r
+ AirControlLevel = CheckAirControlLevel(json);\r
+ _fleet = 10;\r
+ ShowResultCombined(false);\r
+ SetupHp(json);\r
if (IsNightBattle(json))\r
{\r
- CalcHougekiDamage(json.api_hougeki, _guardHp);\r
+ CalcHougekiDamage(json.api_hougeki, _guardHp, _enemyHp);\r
}\r
else\r
{\r
- AirControlLevel = CheckAirControlLevel(json);\r
if (surfaceFleet)\r
CalcDamageCombinedFleetSurface(json);\r
else\r
CalcDamageCombinedFleetAir(json);\r
}\r
+ ClearOverKill(_friendHp);\r
+ ClearOverKill(_guardHp);\r
+ ClearOverKill(_enemyHp);\r
+ ResultRank = CalcResultRank();\r
}\r
\r
public void InspectCombinedBattleResult(dynamic json)\r
{\r
_escapingShips.Clear();\r
ShowResultCombined();\r
- _friendHp = null;\r
+ CleanupHp();\r
if ((int)json.api_escape_flag == 0)\r
return;\r
var damaged = (int)json.api_escape.api_escape_idx[0] - 1;\r
\r
private void ShowResultCombined(bool warnDamagedShip = true)\r
{\r
+ if (_friendHp == null)\r
+ return;\r
var ships = _shipInfo.GetShipStatuses(0).Concat(_shipInfo.GetShipStatuses(1)).ToArray();\r
foreach (var e in ships.Zip(_friendHp.Concat(_guardHp), (ship, now) => new {ship, now}))\r
e.ship.NowHp = e.now;\r
{\r
var kouku = json.api_kouku;\r
if (kouku.api_stage3 != null)\r
- CalcSimpleDamage(kouku.api_stage3.api_fdam, _friendHp);\r
+ CalcSimpleDamage(kouku.api_stage3, _friendHp, _enemyHp);\r
if (kouku.api_stage3_combined != null)\r
CalcSimpleDamage(kouku.api_stage3_combined.api_fdam, _guardHp);\r
if (json.api_kouku2()) // 航空戦2回目\r
{\r
kouku = json.api_kouku2;\r
if (kouku.api_stage3 != null)\r
- CalcSimpleDamage(kouku.api_stage3.api_fdam, _friendHp);\r
+ CalcSimpleDamage(kouku.api_stage3, _friendHp, _enemyHp);\r
if (kouku.api_stage3_combined != null)\r
CalcSimpleDamage(kouku.api_stage3_combined.api_fdam, _guardHp);\r
}\r
if (json.api_opening_atack != null)\r
CalcSimpleDamage(json.api_opening_atack.api_fdam, _guardHp);\r
if (json.api_hougeki1 != null)\r
- CalcHougekiDamage(json.api_hougeki1, _guardHp);\r
+ CalcHougekiDamage(json.api_hougeki1, _guardHp, _enemyHp);\r
if (json.api_hougeki2() && json.api_hougeki2 != null)\r
- CalcHougekiDamage(json.api_hougeki2, _friendHp);\r
+ CalcHougekiDamage(json.api_hougeki2, _friendHp, _enemyHp);\r
if (json.api_hougeki3() && json.api_hougeki3 != null)\r
- CalcHougekiDamage(json.api_hougeki3, _friendHp);\r
+ CalcHougekiDamage(json.api_hougeki3, _friendHp, _enemyHp);\r
if (json.api_raigeki() && json.api_raigeki != null)\r
- CalcSimpleDamage(json.api_raigeki.api_fdam, _guardHp);\r
+ CalcSimpleDamage(json.api_raigeki, _guardHp, _enemyHp);\r
}\r
\r
private void CalcDamageCombinedFleetSurface(dynamic json)\r
{\r
var kouku = json.api_kouku;\r
if (kouku.api_stage3 != null)\r
- CalcSimpleDamage(kouku.api_stage3.api_fdam, _friendHp);\r
+ CalcSimpleDamage(kouku.api_stage3, _friendHp, _enemyHp);\r
if (kouku.api_stage3_combined != null)\r
CalcSimpleDamage(kouku.api_stage3_combined.api_fdam, _guardHp);\r
if (json.api_opening_atack != null)\r
- CalcSimpleDamage(json.api_opening_atack.api_fdam, _guardHp);\r
+ CalcSimpleDamage(json.api_opening_atack, _guardHp, _enemyHp);\r
if (json.api_hougeki1 != null)\r
- CalcHougekiDamage(json.api_hougeki1, _friendHp);\r
+ CalcHougekiDamage(json.api_hougeki1, _friendHp, _enemyHp);\r
if (json.api_hougeki2() && json.api_hougeki2 != null)\r
- CalcHougekiDamage(json.api_hougeki2, _friendHp);\r
+ CalcHougekiDamage(json.api_hougeki2, _friendHp, _enemyHp);\r
if (json.api_hougeki3() && json.api_hougeki3 != null)\r
- CalcHougekiDamage(json.api_hougeki3, _guardHp);\r
+ CalcHougekiDamage(json.api_hougeki3, _guardHp, _enemyHp);\r
if (json.api_raigeki() && json.api_raigeki != null)\r
- CalcSimpleDamage(json.api_raigeki.api_fdam, _guardHp);\r
+ CalcSimpleDamage(json.api_raigeki, _guardHp, _enemyHp);\r
+ }\r
+\r
+ // 以下のコードは航海日誌拡張版の以下のファイルのcalcResultRankを移植したもの\r
+ // https://github.com/nekopanda/logbook/blob/94ceca4be6d4ce79a8759d1ee747fb9827c08edc/main/logbook/dto/BattleExDto.java\r
+ //\r
+ // The MIT License (MIT)\r
+ //\r
+ // Copyright (c) 2013-2014 sanae_hirotaka\r
+ //\r
+ // Permission is hereby granted, free of charge, to any person obtaining a copy\r
+ // of this software and associated documentation files (the "Software"), to deal\r
+ // in the Software without restriction, including without limitation the rights\r
+ // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r
+ // copies of the Software, and to permit persons to whom the Software is\r
+ // furnished to do so, subject to the following conditions:\r
+ //\r
+ // The above copyright notice and this permission notice shall be included in\r
+ // all copies or substantial portions of the Software.\r
+ //\r
+ // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\r
+ // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\r
+ // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\r
+ // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\r
+ // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r
+ // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r
+ // THE SOFTWARE.\r
+ //\r
+ private BattleResultRank CalcResultRank()\r
+ {\r
+ var combinedHp = _friendHp.Concat(_guardHp).ToArray();\r
+ var combinedStartHp = _friendStartHp.Concat(_guardStartHp).ToArray();\r
+ // 戦闘後に残っている艦数\r
+ var friendNowShips = combinedHp.Count(hp => hp > 0);\r
+ var enemyNowShips = _enemyHp.Count(hp => hp > 0);\r
+ // 総ダメージ\r
+ var friendGauge = combinedStartHp.Sum() - combinedHp.Sum();\r
+ var enemyGauge = _enemyStartHp.Sum() - _enemyHp.Sum();\r
+ // 轟沈・撃沈数\r
+ var friendSunk = combinedHp.Count(hp => hp == 0);\r
+ var enemySunk = _enemyHp.Count(hp => hp == 0);\r
+\r
+ var friendGaugeRate = Math.Floor((double)friendGauge / combinedStartHp.Sum() * 100);\r
+ var enemyGaugeRate = Math.Floor((double)enemyGauge / _enemyStartHp.Sum() * 100);\r
+ var equalOrMore = enemyGaugeRate > (0.9 * friendGaugeRate);\r
+ var superior = enemyGaugeRate > 0 && enemyGaugeRate > (2.5 * friendGaugeRate);\r
+\r
+ if (friendSunk == 0)\r
+ {\r
+ if (enemyNowShips == 0)\r
+ {\r
+ if (friendGauge == 0)\r
+ return BattleResultRank.P;\r
+ return BattleResultRank.S;\r
+ }\r
+ if (_enemyHp.Length == 6)\r
+ {\r
+ if (enemySunk >= 4)\r
+ return BattleResultRank.A;\r
+ }\r
+ else if (enemySunk * 2 >= _enemyHp.Length)\r
+ {\r
+ return BattleResultRank.A;\r
+ }\r
+ if (_enemyHp[0] == 0)\r
+ return BattleResultRank.B;\r
+ if (superior)\r
+ return BattleResultRank.B;\r
+ }\r
+ else\r
+ {\r
+ if (enemyNowShips == 0)\r
+ return BattleResultRank.B;\r
+ if (_enemyHp[0] == 0 && friendSunk < enemySunk)\r
+ return BattleResultRank.B;\r
+ if (superior)\r
+ return BattleResultRank.B;\r
+ if (_enemyHp[0] == 0)\r
+ return BattleResultRank.C;\r
+ }\r
+ if (enemyGauge > 0 && equalOrMore)\r
+ return BattleResultRank.C;\r
+ if (friendSunk > 0 && friendNowShips == 1)\r
+ return BattleResultRank.E;\r
+ return BattleResultRank.D;\r
}\r
}\r
}
\ No newline at end of file
this.labelEnemyAirSuperiority = new System.Windows.Forms.Label();\r
this.label30 = new System.Windows.Forms.Label();\r
this.labelFormation = new System.Windows.Forms.Label();\r
- this.label29 = new System.Windows.Forms.Label();\r
+ this.labelResultRank = new System.Windows.Forms.Label();\r
this.labelLoS = new System.Windows.Forms.Label();\r
this.label19 = new System.Windows.Forms.Label();\r
this.labelAirSuperiority = new System.Windows.Forms.Label();\r
this.label13 = new System.Windows.Forms.Label();\r
this.timerMain = new System.Windows.Forms.Timer(this.components);\r
this.panel3 = new System.Windows.Forms.Panel();\r
+ this.labelQuestColor6 = new System.Windows.Forms.Label();\r
+ this.labelQuestColor5 = new System.Windows.Forms.Label();\r
+ this.labelQuestColor4 = new System.Windows.Forms.Label();\r
+ this.labelQuestColor3 = new System.Windows.Forms.Label();\r
+ this.labelQuestColor2 = new System.Windows.Forms.Label();\r
+ this.labelQuestColor1 = new System.Windows.Forms.Label();\r
this.labelProgress6 = new System.Windows.Forms.Label();\r
this.labelQuest6 = new System.Windows.Forms.Label();\r
this.labelProgress5 = new System.Windows.Forms.Label();\r
this.labelBullSq4 = new System.Windows.Forms.Label();\r
this.labelFuelSq4 = new System.Windows.Forms.Label();\r
this.toolTipAchievement = new System.Windows.Forms.ToolTip(this.components);\r
- this.labelQuestColor1 = new System.Windows.Forms.Label();\r
- this.labelQuestColor2 = new System.Windows.Forms.Label();\r
- this.labelQuestColor3 = new System.Windows.Forms.Label();\r
- this.labelQuestColor4 = new System.Windows.Forms.Label();\r
- this.labelQuestColor5 = new System.Windows.Forms.Label();\r
- this.labelQuestColor6 = new System.Windows.Forms.Label();\r
this.panelHeadquarters.SuspendLayout();\r
this.panelShipInfo.SuspendLayout();\r
this.panelBattleInfo.SuspendLayout();\r
this.panelBattleInfo.Controls.Add(this.labelEnemyAirSuperiority);\r
this.panelBattleInfo.Controls.Add(this.label30);\r
this.panelBattleInfo.Controls.Add(this.labelFormation);\r
- this.panelBattleInfo.Controls.Add(this.label29);\r
+ this.panelBattleInfo.Controls.Add(this.labelResultRank);\r
this.panelBattleInfo.Location = new System.Drawing.Point(59, 116);\r
this.panelBattleInfo.Name = "panelBattleInfo";\r
this.panelBattleInfo.Size = new System.Drawing.Size(157, 14);\r
this.labelFormation.Size = new System.Drawing.Size(48, 12);\r
this.labelFormation.TabIndex = 1;\r
// \r
- // label29\r
+ // labelResultRank\r
// \r
- this.label29.AutoSize = true;\r
- this.label29.Location = new System.Drawing.Point(1, 1);\r
- this.label29.Name = "label29";\r
- this.label29.Size = new System.Drawing.Size(41, 12);\r
- this.label29.TabIndex = 0;\r
- this.label29.Text = "交戦形";\r
+ this.labelResultRank.Location = new System.Drawing.Point(1, 1);\r
+ this.labelResultRank.Name = "labelResultRank";\r
+ this.labelResultRank.Size = new System.Drawing.Size(41, 12);\r
+ this.labelResultRank.TabIndex = 0;\r
+ this.labelResultRank.Text = "判定";\r
// \r
// labelLoS\r
// \r
this.panel3.Size = new System.Drawing.Size(220, 94);\r
this.panel3.TabIndex = 13;\r
// \r
+ // labelQuestColor6\r
+ // \r
+ this.labelQuestColor6.Location = new System.Drawing.Point(2, 79);\r
+ this.labelQuestColor6.Name = "labelQuestColor6";\r
+ this.labelQuestColor6.Size = new System.Drawing.Size(4, 10);\r
+ this.labelQuestColor6.TabIndex = 48;\r
+ // \r
+ // labelQuestColor5\r
+ // \r
+ this.labelQuestColor5.Location = new System.Drawing.Point(2, 64);\r
+ this.labelQuestColor5.Name = "labelQuestColor5";\r
+ this.labelQuestColor5.Size = new System.Drawing.Size(4, 10);\r
+ this.labelQuestColor5.TabIndex = 47;\r
+ // \r
+ // labelQuestColor4\r
+ // \r
+ this.labelQuestColor4.Location = new System.Drawing.Point(2, 49);\r
+ this.labelQuestColor4.Name = "labelQuestColor4";\r
+ this.labelQuestColor4.Size = new System.Drawing.Size(4, 10);\r
+ this.labelQuestColor4.TabIndex = 46;\r
+ // \r
+ // labelQuestColor3\r
+ // \r
+ this.labelQuestColor3.Location = new System.Drawing.Point(2, 34);\r
+ this.labelQuestColor3.Name = "labelQuestColor3";\r
+ this.labelQuestColor3.Size = new System.Drawing.Size(4, 10);\r
+ this.labelQuestColor3.TabIndex = 45;\r
+ // \r
+ // labelQuestColor2\r
+ // \r
+ this.labelQuestColor2.Location = new System.Drawing.Point(2, 19);\r
+ this.labelQuestColor2.Name = "labelQuestColor2";\r
+ this.labelQuestColor2.Size = new System.Drawing.Size(4, 10);\r
+ this.labelQuestColor2.TabIndex = 44;\r
+ // \r
+ // labelQuestColor1\r
+ // \r
+ this.labelQuestColor1.Location = new System.Drawing.Point(2, 4);\r
+ this.labelQuestColor1.Name = "labelQuestColor1";\r
+ this.labelQuestColor1.Size = new System.Drawing.Size(4, 10);\r
+ this.labelQuestColor1.TabIndex = 43;\r
+ // \r
// labelProgress6\r
// \r
this.labelProgress6.Location = new System.Drawing.Point(194, 78);\r
// \r
this.toolTipAchievement.ShowAlways = true;\r
// \r
- // labelQuestColor1\r
- // \r
- this.labelQuestColor1.Location = new System.Drawing.Point(2, 4);\r
- this.labelQuestColor1.Name = "labelQuestColor1";\r
- this.labelQuestColor1.Size = new System.Drawing.Size(4, 10);\r
- this.labelQuestColor1.TabIndex = 43;\r
- // \r
- // labelQuestColor2\r
- // \r
- this.labelQuestColor2.Location = new System.Drawing.Point(2, 19);\r
- this.labelQuestColor2.Name = "labelQuestColor2";\r
- this.labelQuestColor2.Size = new System.Drawing.Size(4, 10);\r
- this.labelQuestColor2.TabIndex = 44;\r
- // \r
- // labelQuestColor3\r
- // \r
- this.labelQuestColor3.Location = new System.Drawing.Point(2, 34);\r
- this.labelQuestColor3.Name = "labelQuestColor3";\r
- this.labelQuestColor3.Size = new System.Drawing.Size(4, 10);\r
- this.labelQuestColor3.TabIndex = 45;\r
- // \r
- // labelQuestColor4\r
- // \r
- this.labelQuestColor4.Location = new System.Drawing.Point(2, 49);\r
- this.labelQuestColor4.Name = "labelQuestColor4";\r
- this.labelQuestColor4.Size = new System.Drawing.Size(4, 10);\r
- this.labelQuestColor4.TabIndex = 46;\r
- // \r
- // labelQuestColor5\r
- // \r
- this.labelQuestColor5.Location = new System.Drawing.Point(2, 64);\r
- this.labelQuestColor5.Name = "labelQuestColor5";\r
- this.labelQuestColor5.Size = new System.Drawing.Size(4, 10);\r
- this.labelQuestColor5.TabIndex = 47;\r
- // \r
- // labelQuestColor6\r
- // \r
- this.labelQuestColor6.Location = new System.Drawing.Point(2, 79);\r
- this.labelQuestColor6.Name = "labelQuestColor6";\r
- this.labelQuestColor6.Size = new System.Drawing.Size(4, 10);\r
- this.labelQuestColor6.TabIndex = 48;\r
- // \r
// MainForm\r
// \r
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);\r
private System.Windows.Forms.Label labelEnemyAirSuperiority;\r
private System.Windows.Forms.Label label30;\r
private System.Windows.Forms.Label labelFormation;\r
- private System.Windows.Forms.Label label29;\r
+ private System.Windows.Forms.Label labelResultRank;\r
private System.Windows.Forms.ImageList imageListFuelSq;\r
private System.Windows.Forms.Label labelFuelSq1;\r
private System.Windows.Forms.ImageList imageListBullSq;\r