\r
using System;\r
using System.Collections.Generic;\r
+using System.Drawing;\r
using System.Linq;\r
using System.Web;\r
\r
public string Name;\r
public int Type;\r
public string TypeName;\r
+ public int IconType;\r
public int AntiAir;\r
public int LoS;\r
\r
return false;\r
}\r
}\r
+\r
+ public Color Color\r
+ {\r
+ get\r
+ {\r
+ switch (IconType)\r
+ {\r
+ case 1:\r
+ case 2:\r
+ case 3: // 主砲\r
+ case 13: // 徹甲弾\r
+ return Color.FromArgb(209, 89, 89);\r
+ case 4: // 副砲\r
+ return Color.FromArgb(253, 233, 0);\r
+ case 5: // 魚雷\r
+ return Color.FromArgb(88, 134, 170);\r
+ case 6: // 艦戦\r
+ return Color.FromArgb(93, 179, 108);\r
+ case 7: // 艦爆\r
+ return Color.FromArgb(223, 102, 102);\r
+ case 8: // 艦攻\r
+ return Color.FromArgb(95, 173, 234);\r
+ case 9: // 艦偵\r
+ return Color.FromArgb(254, 191, 0);\r
+ case 10: // 水上機\r
+ return Color.FromArgb(142, 203, 152);\r
+ case 11: // 電探\r
+ return Color.FromArgb(231, 153, 53);\r
+ case 12: // 三式弾\r
+ return Color.FromArgb(69, 175, 88);\r
+ case 14: // 応急修理要員\r
+ return Color.FromArgb(254, 254, 254);\r
+ case 15: // 機銃\r
+ case 16: // 高角砲\r
+ return Color.FromArgb(102, 204, 118);\r
+ case 17: // 爆雷\r
+ case 18: // ソナー\r
+ return Color.FromArgb(126, 203, 215);\r
+ case 19: // 缶\r
+ return Color.FromArgb(254, 195, 77);\r
+ case 20: // 大発\r
+ return Color.FromArgb(154, 163, 90);\r
+ case 21: // オートジャイロ\r
+ return Color.FromArgb(99, 203, 115);\r
+ case 22: // 対潜哨戒機\r
+ return Color.FromArgb(125, 205, 217);\r
+ case 23: // 追加装甲\r
+ return Color.FromArgb(152, 124, 172);\r
+ case 24: // 探照灯\r
+ case 27: // 照明弾\r
+ return Color.FromArgb(254, 155, 0);\r
+ case 25: // ドラム缶\r
+ return Color.FromArgb(161, 161, 160);\r
+ case 26: // 艦艇修理施設\r
+ return Color.FromArgb(175, 156, 126);\r
+ case 28: // 司令部施設\r
+ return Color.FromArgb(204, 172, 252);\r
+ case 29: // 航空要員\r
+ return Color.FromArgb(206, 166, 108);\r
+ case 30: // 高射装置\r
+ return Color.FromArgb(137, 153, 77);\r
+ case 31: // 対地装備\r
+ return Color.FromArgb(253, 49, 49);\r
+ case 32: // 水上艦要員\r
+ return Color.FromArgb(188, 238, 155);\r
+ default:\r
+ return SystemColors.Control;\r
+ }\r
+ }\r
+ }\r
}\r
\r
public class ItemStatus\r
Name = (string)entry.api_name,\r
Type = (int)entry.api_type[2],\r
TypeName = dict[(int)entry.api_type[2]],\r
+ IconType = (int)entry.api_type[3],\r
AntiAir = (int)entry.api_tyku,\r
LoS = (int)entry.api_saku\r
};\r
private readonly HashSet<int>[] _groupSettings = new HashSet<int>[GroupCount];\r
private TreeNode _itemTreeNode;\r
private ItemStatus[] _prevItemList;\r
+ private EquipColumn[] _equipList;\r
\r
public ShipListForm(Sniffer sniffer, Config config)\r
{\r
if (InItemList())\r
{\r
HideShipLabels();\r
+ HideEquipLabels();\r
if (CreateItemNodes())\r
SetTreeViewItem();\r
}\r
+ else if (InEquip())\r
+ {\r
+ HideShipLabels();\r
+ CreateEquip();\r
+ CreateEquipLabels();\r
+ SetEquipLabels();\r
+ }\r
else\r
{\r
- if (InEquip())\r
- CreateEquip();\r
- else\r
- CreateShipList();\r
+ HideEquipLabels();\r
+ CreateShipList();\r
CreateListLabels();\r
SetShipLabels();\r
}\r
_shipList = ships.Concat(types).OrderBy(s => s, new CompareShip(true, InRepairList())).ToArray();\r
}\r
\r
+ private class EquipColumn\r
+ {\r
+ public string Fleet { get; set; }\r
+ public string Ship { get; set; }\r
+ public string Equip { get; set; }\r
+ public Color Color { get; set; }\r
+\r
+ public EquipColumn()\r
+ {\r
+ Fleet = Ship = Equip = "";\r
+ Color = DefaultBackColor;\r
+ }\r
+ }\r
+\r
private void CreateEquip()\r
{\r
- var list = new List<ShipStatus>();\r
+ var list = new List<EquipColumn>();\r
var fleet = new[] {"第一艦隊", "第二艦隊", "第三艦隊", "第四艦隊"};\r
for (var i = 0; i < fleet.Length; i++)\r
{\r
- list.Add(new ShipStatus {Spec = new ShipSpec {Name = fleet[i]}, Level = 1000});\r
+ list.Add(new EquipColumn {Fleet = fleet[i]});\r
foreach (var s in _sniffer.GetShipStatuses(i))\r
{\r
s.Fleet = -1;\r
- list.Add(s);\r
+ list.Add(new EquipColumn {Ship = s.Name});\r
list.AddRange(\r
(from e in Enumerable.Range(0, s.Slot.Length)\r
let slot = s.Slot[e]\r
where slot != -1\r
let item = _sniffer.Item.ItemDict[slot]\r
select\r
- CreateDummyEntry(item.Spec.Name + (item.Level == 0 ? "" : "★" + item.Level) +\r
- (!item.Spec.IsAircraft ? "" : " " + onslot + "/" + max), 500))\r
- .DefaultIfEmpty(CreateDummyEntry("なし", 500)));\r
+ new EquipColumn\r
+ {\r
+ Equip = item.Spec.Name + (item.Level == 0 ? "" : "★" + item.Level) +\r
+ (!item.Spec.IsAircraft ? "" : " " + onslot + "/" + max),\r
+ Color = item.Spec.Color\r
+ })\r
+ .DefaultIfEmpty(new EquipColumn {Equip = "なし"}));\r
}\r
}\r
- _shipList = list.ToArray();\r
- }\r
-\r
- private ShipStatus CreateDummyEntry(string name, int level)\r
- {\r
- return new ShipStatus {Spec = new ShipSpec {Name = name}, Level = level};\r
+ _equipList = list.ToArray();\r
}\r
\r
private IEnumerable<ShipStatus> FilterByGroup(IEnumerable<ShipStatus> ships)\r
CreateConfigComponents(i);\r
CreateRepairLabels(i);\r
CreateShipLabels(i);\r
- CreateEquipLabels(i);\r
}\r
panelShipList.ResumeLayout();\r
}\r
\r
+ private void CreateEquipLabels()\r
+ {\r
+ panelShipList.SuspendLayout();\r
+ for (var i = _equipLabelList.Count; i < _equipList.Length; i++)\r
+ CreateEquipLabels(i);\r
+ panelShipList.ResumeLayout();\r
+ }\r
+\r
private void CreateConfigComponents(int i)\r
{\r
var y = 3 + LineHeight * i;\r
{\r
new ShipLabel {Location = new Point(1, 2), AutoSize = true},\r
new ShipLabel {Location = new Point(10, 2), AutoSize = true},\r
- new ShipLabel {Location = new Point(40, 2), AutoSize = true}\r
+ new ShipLabel {Location = new Point(40, 2), AutoSize = true},\r
+ new ShipLabel {Location = new Point(37, 2), Size = new Size(4, LabelHeight - 2)}\r
};\r
_equipLabelList.Add(labels);\r
_equipPanelList.Add(lbp);\r
{\r
panelGroupHeader.Visible = InGroupConfig();\r
panelRepairHeader.Visible = InRepairList();\r
- panelItemHeader.Visible = InEquip();\r
panelShipList.SuspendLayout();\r
for (var i = 0; i < _shipList.Length; i++)\r
{\r
_checkBoxPanelList[i].Visible = false;\r
if (!InRepairList())\r
_repairPanelList[i].Visible = false;\r
- if (!InEquip())\r
- _equipPanelList[i].Visible = false;\r
}\r
for (var i = 0; i < _shipList.Length; i++)\r
{\r
SetGroupConfig(i);\r
if (InRepairList())\r
SetRepairList(i);\r
- if (InEquip())\r
- SetEquip(i);\r
}\r
for (var i = _shipList.Length; i < _labelPanelList.Count; i++)\r
{\r
- _labelPanelList[i].Visible = _checkBoxPanelList[i].Visible =\r
- _repairPanelList[i].Visible = _equipPanelList[i].Visible = false;\r
+ _labelPanelList[i].Visible = _checkBoxPanelList[i].Visible = _repairPanelList[i].Visible;\r
}\r
panelShipList.ResumeLayout();\r
}\r
lbp.Visible = true;\r
}\r
\r
+ private void SetEquipLabels()\r
+ {\r
+ panelItemHeader.Visible = true;\r
+ panelShipList.SuspendLayout();\r
+ for (var i = 0; i < _equipList.Length; i++)\r
+ SetEquip(i);\r
+ for (var i = _equipList.Length; i < _equipLabelList.Count; i++)\r
+ _equipPanelList[i].Visible = false;\r
+ panelShipList.ResumeLayout();\r
+ }\r
+\r
private void SetEquip(int i)\r
{\r
var lbp = _equipPanelList[i];\r
if (!lbp.Visible)\r
lbp.Location = new Point(lbp.Left, (int)lbp.Tag + panelShipList.AutoScrollPosition.Y);\r
- var s = _shipList[i];\r
+ var e = _equipList[i];\r
var labels = _equipLabelList[i];\r
- switch (s.Level)\r
- {\r
- case 1000:\r
- labels[0].Text = s.Name;\r
- labels[1].SetName("");\r
- labels[2].Text = "";\r
- break;\r
- case 500:\r
- labels[2].Text = s.Name;\r
- labels[0].Text = "";\r
- labels[1].SetName("");\r
- break;\r
- default:\r
- labels[1].SetName(s);\r
- labels[0].Text = labels[2].Text = "";\r
- break;\r
- }\r
+ labels[0].Text = e.Fleet;\r
+ labels[1].SetName(e.Ship);\r
+ labels[2].Text = e.Equip;\r
+ labels[3].Visible = e.Equip != "";\r
+ labels[3].BackColor = e.Color;\r
lbp.Visible = true;\r
}\r
\r
private void HideShipLabels()\r
{\r
panelShipList.SuspendLayout();\r
- for (var i = 0; i < _shipList.Length; i++)\r
- _labelPanelList[i].Visible = _checkBoxPanelList[i].Visible =\r
- _repairPanelList[i].Visible = _equipPanelList[i].Visible = false;\r
+ for (var i = 0; i < _labelPanelList.Count; i++)\r
+ _labelPanelList[i].Visible = _checkBoxPanelList[i].Visible = _repairPanelList[i].Visible = false;\r
+ panelShipList.ResumeLayout();\r
+ }\r
+\r
+ private void HideEquipLabels()\r
+ {\r
+ panelShipList.SuspendLayout();\r
+ foreach (var e in _equipPanelList)\r
+ e.Visible = false;\r
panelShipList.ResumeLayout();\r
}\r
\r