OSDN Git Service

装備一覧で艦隊分析用のデータをコピーできるようにする
authorKazuhiro Fujieda <fujieda@users.osdn.me>
Tue, 19 Nov 2019 11:57:31 +0000 (20:57 +0900)
committerKazuhiro Fujieda <fujieda@users.osdn.me>
Tue, 19 Nov 2019 11:57:31 +0000 (20:57 +0900)
KancolleSniffer.sln.DotSettings
KancolleSniffer/ListForm.Designer.cs
KancolleSniffer/ListForm.cs
KancolleSniffer/ListForm.resx
KancolleSniffer/Model/ItemInfo.cs
KancolleSniffer/Model/ItemStatus.cs
KancolleSniffer/TextGenerator.cs

index 74122b7..06e9813 100644 (file)
@@ -30,6 +30,7 @@
        <s:Boolean x:Key="/Default/Environment/SettingsMigration/IsMigratorApplied/=JetBrains_002EReSharper_002EPsi_002ECSharp_002ECodeStyle_002ESettingsUpgrade_002EMigrateThisQualifierSettings/@EntryIndexedValue">True</s:Boolean>
        <s:Boolean x:Key="/Default/UserDictionary/Words/=aero/@EntryIndexedValue">True</s:Boolean>
        <s:Boolean x:Key="/Default/UserDictionary/Words/=Akashi/@EntryIndexedValue">True</s:Boolean>
+       <s:Boolean x:Key="/Default/UserDictionary/Words/=Bunseki/@EntryIndexedValue">True</s:Boolean>
        <s:Boolean x:Key="/Default/UserDictionary/Words/=Daihatsu/@EntryIndexedValue">True</s:Boolean>
        <s:Boolean x:Key="/Default/UserDictionary/Words/=ensei/@EntryIndexedValue">True</s:Boolean>
        <s:Boolean x:Key="/Default/UserDictionary/Words/=hakuchi/@EntryIndexedValue">True</s:Boolean>
@@ -37,6 +38,7 @@
        <s:Boolean x:Key="/Default/UserDictionary/Words/=Kaisou/@EntryIndexedValue">True</s:Boolean>
        <s:Boolean x:Key="/Default/UserDictionary/Words/=Kana/@EntryIndexedValue">True</s:Boolean>
        <s:Boolean x:Key="/Default/UserDictionary/Words/=Kancolle/@EntryIndexedValue">True</s:Boolean>
+       <s:Boolean x:Key="/Default/UserDictionary/Words/=kantai/@EntryIndexedValue">True</s:Boolean>
        <s:Boolean x:Key="/Default/UserDictionary/Words/=kdock/@EntryIndexedValue">True</s:Boolean>
        <s:Boolean x:Key="/Default/UserDictionary/Words/=kira/@EntryIndexedValue">True</s:Boolean>
        <s:Boolean x:Key="/Default/UserDictionary/Words/=Kouku/@EntryIndexedValue">True</s:Boolean>
@@ -45,6 +47,7 @@
        <s:Boolean x:Key="/Default/UserDictionary/Words/=Nyukyo/@EntryIndexedValue">True</s:Boolean>
        <s:Boolean x:Key="/Default/UserDictionary/Words/=Pushbullet/@EntryIndexedValue">True</s:Boolean>
        <s:Boolean x:Key="/Default/UserDictionary/Words/=Ryusei/@EntryIndexedValue">True</s:Boolean>
+       <s:Boolean x:Key="/Default/UserDictionary/Words/=Sarashi/@EntryIndexedValue">True</s:Boolean>
        <s:Boolean x:Key="/Default/UserDictionary/Words/=Scaler/@EntryIndexedValue">True</s:Boolean>
        <s:Boolean x:Key="/Default/UserDictionary/Words/=Scroller/@EntryIndexedValue">True</s:Boolean>
        <s:Boolean x:Key="/Default/UserDictionary/Words/=Scrollify/@EntryIndexedValue">True</s:Boolean>
index 721f4dd..c4b7c5a 100644 (file)
@@ -48,10 +48,11 @@ namespace KancolleSniffer
             this.components = new System.ComponentModel.Container();\r
             System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(ListForm));\r
             this.contextMenuStripShipList = new System.Windows.Forms.ContextMenuStrip(this.components);\r
-            this.csvToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();\r
+            this.shipCsvToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();\r
             this.kantaiSarashiToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();\r
-            this.contextMenuStrip = new System.Windows.Forms.ContextMenuStrip(this.components);\r
-            this.copyToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();\r
+            this.contextMenuStripItemList = new System.Windows.Forms.ContextMenuStrip(this.components);\r
+            this.itemCsvToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();\r
+            this.kantaiBunsekiToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();\r
             this.labelHeaderHp = new System.Windows.Forms.Label();\r
             this.labelHeaderCond = new System.Windows.Forms.Label();\r
             this.labelHeaderExp = new System.Windows.Forms.Label();\r
@@ -71,7 +72,7 @@ namespace KancolleSniffer
             this.panelItemHeader = new System.Windows.Forms.Panel();\r
             this.richTextBoxMiscText = new System.Windows.Forms.RichTextBox();\r
             this.contextMenuStripFleetData = new System.Windows.Forms.ContextMenuStrip(this.components);\r
-            this.textToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();\r
+            this.fleetTextToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();\r
             this.deckBuilderToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();\r
             this.panelFleetHeader = new System.Windows.Forms.Panel();\r
             this.labelFleet4 = new System.Windows.Forms.Label();\r
@@ -96,9 +97,9 @@ namespace KancolleSniffer
             this.antiAirPanel = new KancolleSniffer.View.AntiAirPanel();\r
             this.fleetPanel = new KancolleSniffer.View.FleetPanel();\r
             this.itemTreeView = new KancolleSniffer.View.ItemTreeView();\r
-            this.shipListPanel = new ShipListPanel();\r
+            this.shipListPanel = new KancolleSniffer.View.ShipListPanel.ShipListPanel();\r
             this.contextMenuStripShipList.SuspendLayout();\r
-            this.contextMenuStrip.SuspendLayout();\r
+            this.contextMenuStripItemList.SuspendLayout();\r
             this.panelGroupHeader.SuspendLayout();\r
             this.panelRepairHeader.SuspendLayout();\r
             this.contextMenuStripFleetData.SuspendLayout();\r
@@ -109,17 +110,17 @@ namespace KancolleSniffer
             // contextMenuStripShipList\r
             // \r
             this.contextMenuStripShipList.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {\r
-            this.csvToolStripMenuItem,\r
+            this.shipCsvToolStripMenuItem,\r
             this.kantaiSarashiToolStripMenuItem});\r
             this.contextMenuStripShipList.Name = "contextMenuStripShipList";\r
             this.contextMenuStripShipList.Size = new System.Drawing.Size(193, 48);\r
             // \r
-            // csvToolStripMenuItem\r
+            // shipCsvToolStripMenuItem\r
             // \r
-            this.csvToolStripMenuItem.Name = "csvToolStripMenuItem";\r
-            this.csvToolStripMenuItem.Size = new System.Drawing.Size(192, 22);\r
-            this.csvToolStripMenuItem.Text = "CSV形式でコピー(&C)";\r
-            this.csvToolStripMenuItem.Click += new System.EventHandler(this.csvToolStripMenuItem_Click);\r
+            this.shipCsvToolStripMenuItem.Name = "shipCsvToolStripMenuItem";\r
+            this.shipCsvToolStripMenuItem.Size = new System.Drawing.Size(192, 22);\r
+            this.shipCsvToolStripMenuItem.Text = "CSV形式でコピー(&C)";\r
+            this.shipCsvToolStripMenuItem.Click += new System.EventHandler(this.shipCsvToolStripMenuItem_Click);\r
             // \r
             // kantaiSarashiToolStripMenuItem\r
             // \r
@@ -128,21 +129,29 @@ namespace KancolleSniffer
             this.kantaiSarashiToolStripMenuItem.Text = "艦隊晒し形式でコピー(&K)";\r
             this.kantaiSarashiToolStripMenuItem.Click += new System.EventHandler(this.kantaiSarashiToolStripMenuItem_Click);\r
             // \r
-            // contextMenuStrip\r
+            // contextMenuStripItemList\r
             // \r
-            this.contextMenuStrip.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {\r
-            this.copyToolStripMenuItem});\r
-            this.contextMenuStrip.Name = "contextMenuStrip";\r
-            this.contextMenuStrip.Size = new System.Drawing.Size(108, 26);\r
+            this.contextMenuStripItemList.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {\r
+            this.itemCsvToolStripMenuItem,\r
+            this.kantaiBunsekiToolStripMenuItem});\r
+            this.contextMenuStripItemList.Name = "contextMenuStrip";\r
+            this.contextMenuStripItemList.Size = new System.Drawing.Size(197, 48);\r
             // \r
-            // copyToolStripMenuItem\r
+            // itemCsvToolStripMenuItem\r
             // \r
-            this.copyToolStripMenuItem.Name = "copyToolStripMenuItem";\r
-            this.copyToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.C)));\r
-            this.copyToolStripMenuItem.ShowShortcutKeys = false;\r
-            this.copyToolStripMenuItem.Size = new System.Drawing.Size(107, 22);\r
-            this.copyToolStripMenuItem.Text = "コピー(&C)";\r
-            this.copyToolStripMenuItem.Click += new System.EventHandler(this.copyToolStripMenuItem_Click);\r
+            this.itemCsvToolStripMenuItem.Name = "itemCsvToolStripMenuItem";\r
+            this.itemCsvToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.C)));\r
+            this.itemCsvToolStripMenuItem.ShowShortcutKeys = false;\r
+            this.itemCsvToolStripMenuItem.Size = new System.Drawing.Size(196, 22);\r
+            this.itemCsvToolStripMenuItem.Text = "CSV形式でコピー(&C)";\r
+            this.itemCsvToolStripMenuItem.Click += new System.EventHandler(this.itemCsvToolStripMenuItem_Click);\r
+            // \r
+            // kantaiBunsekiToolStripMenuItem\r
+            // \r
+            this.kantaiBunsekiToolStripMenuItem.Name = "kantaiBunsekiToolStripMenuItem";\r
+            this.kantaiBunsekiToolStripMenuItem.Size = new System.Drawing.Size(196, 22);\r
+            this.kantaiBunsekiToolStripMenuItem.Text = "艦隊分析形式でコピー(&K)";\r
+            this.kantaiBunsekiToolStripMenuItem.Click += new System.EventHandler(this.kantaiBunsekiToolStripMenuItem_Click);\r
             // \r
             // labelHeaderHp\r
             // \r
@@ -339,17 +348,17 @@ namespace KancolleSniffer
             // contextMenuStripFleetData\r
             // \r
             this.contextMenuStripFleetData.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {\r
-            this.textToolStripMenuItem,\r
+            this.fleetTextToolStripMenuItem,\r
             this.deckBuilderToolStripMenuItem});\r
             this.contextMenuStripFleetData.Name = "contextMenuStripFleetData";\r
-            this.contextMenuStripFleetData.Size = new System.Drawing.Size(211, 48);\r
+            this.contextMenuStripFleetData.Size = new System.Drawing.Size(211, 70);\r
             // \r
-            // textToolStripMenuItem\r
+            // fleetTextToolStripMenuItem\r
             // \r
-            this.textToolStripMenuItem.Name = "textToolStripMenuItem";\r
-            this.textToolStripMenuItem.Size = new System.Drawing.Size(210, 22);\r
-            this.textToolStripMenuItem.Text = "テキスト形式でコピー(&C)";\r
-            this.textToolStripMenuItem.Click += new System.EventHandler(this.textToolStripMenuItem_Click);\r
+            this.fleetTextToolStripMenuItem.Name = "fleetTextToolStripMenuItem";\r
+            this.fleetTextToolStripMenuItem.Size = new System.Drawing.Size(210, 22);\r
+            this.fleetTextToolStripMenuItem.Text = "テキスト形式でコピー(&C)";\r
+            this.fleetTextToolStripMenuItem.Click += new System.EventHandler(this.fleetTextToolStripMenuItem_Click);\r
             // \r
             // deckBuilderToolStripMenuItem\r
             // \r
@@ -612,7 +621,7 @@ namespace KancolleSniffer
             this.itemTreeView.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) \r
             | System.Windows.Forms.AnchorStyles.Left) \r
             | System.Windows.Forms.AnchorStyles.Right)));\r
-            this.itemTreeView.ContextMenuStrip = this.contextMenuStrip;\r
+            this.itemTreeView.ContextMenuStrip = this.contextMenuStripItemList;\r
             this.itemTreeView.Location = new System.Drawing.Point(6, 23);\r
             this.itemTreeView.Name = "itemTreeView";\r
             this.itemTreeView.Size = new System.Drawing.Size(238, 263);\r
@@ -665,7 +674,7 @@ namespace KancolleSniffer
             this.Load += new System.EventHandler(this.ListForm_Load);\r
             this.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.ListForm_KeyPress);\r
             this.contextMenuStripShipList.ResumeLayout(false);\r
-            this.contextMenuStrip.ResumeLayout(false);\r
+            this.contextMenuStripItemList.ResumeLayout(false);\r
             this.panelGroupHeader.ResumeLayout(false);\r
             this.panelGroupHeader.PerformLayout();\r
             this.panelRepairHeader.ResumeLayout(false);\r
@@ -702,13 +711,13 @@ namespace KancolleSniffer
         private FleetPanel fleetPanel;\r
         private ItemTreeView itemTreeView;\r
         private System.Windows.Forms.RichTextBox richTextBoxMiscText;\r
-        private System.Windows.Forms.ContextMenuStrip contextMenuStrip;\r
-        private System.Windows.Forms.ToolStripMenuItem copyToolStripMenuItem;\r
+        private System.Windows.Forms.ContextMenuStrip contextMenuStripItemList;\r
+        private System.Windows.Forms.ToolStripMenuItem itemCsvToolStripMenuItem;\r
         private System.Windows.Forms.ContextMenuStrip contextMenuStripFleetData;\r
-        private System.Windows.Forms.ToolStripMenuItem textToolStripMenuItem;\r
+        private System.Windows.Forms.ToolStripMenuItem fleetTextToolStripMenuItem;\r
         private System.Windows.Forms.ToolStripMenuItem deckBuilderToolStripMenuItem;\r
         private System.Windows.Forms.ContextMenuStrip contextMenuStripShipList;\r
-        private System.Windows.Forms.ToolStripMenuItem csvToolStripMenuItem;\r
+        private System.Windows.Forms.ToolStripMenuItem shipCsvToolStripMenuItem;\r
         private System.Windows.Forms.ToolStripMenuItem kantaiSarashiToolStripMenuItem;\r
         private System.Windows.Forms.Panel panelFleetHeader;\r
         private System.Windows.Forms.Label labelFleet4;\r
@@ -731,5 +740,6 @@ namespace KancolleSniffer
         private System.Windows.Forms.Label labelSTypeButton;\r
         private System.Windows.Forms.Label labelSType;\r
         private System.Windows.Forms.CheckBox checkBoxSTypeDetails;\r
+        private System.Windows.Forms.ToolStripMenuItem kantaiBunsekiToolStripMenuItem;\r
     }\r
 }
\ No newline at end of file
index 3b2df6d..ef2b988 100644 (file)
@@ -343,7 +343,6 @@ namespace KancolleSniffer
         {\r
             UpdateList();\r
             SetActiveControl();\r
-            copyToolStripMenuItem.Enabled = InShipStatus | InItemList;\r
             if (!(InShipStatus || InGroupConfig || InRepairList))\r
                 SetPanelSTypeState(false);\r
         }\r
@@ -379,12 +378,17 @@ namespace KancolleSniffer
             }\r
         }\r
 \r
-        private void copyToolStripMenuItem_Click(object sender, EventArgs e)\r
+        private void itemCsvToolStripMenuItem_Click(object sender, EventArgs e)\r
         {\r
             Clipboard.SetText(TextGenerator.GenerateItemList(_sniffer.ItemList));\r
         }\r
 \r
-        private void textToolStripMenuItem_Click(object sender, EventArgs e)\r
+        private void kantaiBunsekiToolStripMenuItem_Click(object sender, EventArgs e)\r
+        {\r
+            Clipboard.SetText(TextGenerator.GenerateKantaiBunsekiItemList(_sniffer.ItemList));\r
+        }\r
+\r
+        private void fleetTextToolStripMenuItem_Click(object sender, EventArgs e)\r
         {\r
             Clipboard.SetText(TextGenerator.GenerateFleetData(_sniffer));\r
         }\r
@@ -430,17 +434,15 @@ namespace KancolleSniffer
             UpdateList();\r
         }\r
 \r
-        private void csvToolStripMenuItem_Click(object sender, EventArgs e)\r
+        private void shipCsvToolStripMenuItem_Click(object sender, EventArgs e)\r
         {\r
             Clipboard.SetText(TextGenerator.GenerateShipList(shipListPanel.CurrentShipList));\r
         }\r
 \r
-        // ReSharper disable IdentifierTypo\r
         private void kantaiSarashiToolStripMenuItem_Click(object sender, EventArgs e)\r
         {\r
             Clipboard.SetText(TextGenerator.GenerateKantaiSarashiData(shipListPanel.CurrentShipList));\r
         }\r
-        // ReSharper enable IdentifierTypo\r
 \r
         private void labelFleet_Click(object sender, EventArgs e)\r
         {\r
index 4cea662..e19f4e2 100644 (file)
     <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r
   </resheader>\r
   <metadata name="contextMenuStripShipList.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">\r
-    <value>388, 17</value>\r
+    <value>409, 17</value>\r
   </metadata>\r
-  <metadata name="contextMenuStrip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">\r
+  <metadata name="contextMenuStripItemList.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">\r
     <value>17, 17</value>\r
   </metadata>\r
   <metadata name="contextMenuStripFleetData.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">\r
-    <value>174, 17</value>\r
+    <value>209, 17</value>\r
   </metadata>\r
   <assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />\r
   <data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">\r
index 02c722c..dd3d488 100644 (file)
@@ -56,7 +56,8 @@ namespace KancolleSniffer.Model
                 {\r
                     Spec = _itemMaster[(int)entry.api_slotitem_id],\r
                     Level = entry.api_level() ? (int)entry.api_level : 0,\r
-                    Alv = entry.api_alv() ? (int)entry.api_alv : 0\r
+                    Alv = entry.api_alv() ? (int)entry.api_alv : 0,\r
+                    Locked = entry.api_locked() && (int)entry.api_locked == 1\r
                 };\r
             }\r
         }\r
index eb28c32..142c084 100644 (file)
@@ -25,6 +25,7 @@ namespace KancolleSniffer.Model
         public ItemSpec Spec { get; set; } = new ItemSpec();\r
         public int Level { get; set; }\r
         public int Alv { get; set; }\r
+        public bool Locked { get; set; }\r
         public ShipStatus Holder { get; set; }\r
 \r
         public ItemStatus()\r
index 8b9e227..357a47c 100644 (file)
@@ -15,6 +15,7 @@
 using System.Collections.Generic;\r
 using System.IO;\r
 using System.Linq;\r
+using System.Net.Sockets;\r
 using System.Text;\r
 using KancolleSniffer.Model;\r
 \r
@@ -29,7 +30,6 @@ namespace KancolleSniffer
                    orderby ship.Spec.ShipType, -ship.Level, ship.ExpToNext\r
                    select $"{ship.Id},{ship.Spec.ShipTypeName},{ship.Name},{ship.Level},{ship.ExpToNext},{ship.Cond},{ship.ShipAntiSubmarine}");\r
 \r
-        // ReSharper disable IdentifierTypo\r
         public static string GenerateKantaiSarashiData(IEnumerable<ShipStatus> shipList)\r
         {\r
             return ".2|" +\r
@@ -45,7 +45,6 @@ namespace KancolleSniffer
                                       ? "." + ship.Spec.Remodel.Step\r
                                       : "")));\r
         }\r
-        // ReSharper restore IdentifierTypo\r
 \r
         public static string GenerateItemList(IEnumerable<ItemStatus> itemList)\r
             => "区分,装備名,熟練度,改修,個数\r\n" +\r
@@ -58,6 +57,11 @@ namespace KancolleSniffer
                        into grp\r
                        select grp.Key + $",{grp.Count()}"));\r
 \r
+        public static string GenerateKantaiBunsekiItemList(IEnumerable<ItemStatus> itemList)\r
+            => "[" + string.Join(",",\r
+                   (from item in itemList where item.Locked\r
+                       select $"{{\"api_slotitem_id\":{item.Spec.Id},\"api_level\":{item.Level}}}")) + "]";\r
+\r
         public static string GenerateFleetData(Sniffer sniffer)\r
         {\r
             var dict = new ItemName();\r