for (var i = 0; i < n; i++)\r
MaterialHistory[i] = new MaterialCount();\r
PrevPort = new int[n];\r
+ PrevPort[0] = -1;\r
}\r
\r
public bool NeedSave\r
}\r
}\r
\r
- public void InspectMaterial(dynamic json, bool port = false)\r
+ public void InspectMaterialPort(dynamic json)\r
{\r
- if (!port)\r
- UpdatePrevPort();\r
+ InspectMaterial(json);\r
+ _inPort = true;\r
+ if (PrevPort[0] == -1)\r
+ {\r
+ // 初期化する\r
+ for (var i = 0; i < MaterialHistory.Length; i++)\r
+ PrevPort[i] = MaterialHistory[i].Now;\r
+ }\r
+ }\r
+\r
+ public void InspectMaterial(dynamic json)\r
+ {\r
+ UpdatePrevPort();\r
foreach (var entry in json)\r
{\r
var i = (int)entry.api_id - 1;\r
var v = (int)entry.api_value;\r
MaterialHistory[i].Now = v;\r
}\r
- if (!port)\r
- return;\r
- _inPort = true;\r
- if (PrevPort[0] != 0)\r
- return;\r
- for (var i = 0; i < MaterialHistory.Length; i++)\r
- PrevPort[i] = MaterialHistory[i].Now;\r
}\r
\r
+ // 母港に戻ってから最初に資材に変化があったときに、母港の時点の資材を記録する\r
private void UpdatePrevPort()\r
{\r
if (!_inPort)\r
{\r
if ((int)json.api_clear_result == 0) // 失敗\r
return;\r
+ // 連続して遠征が帰投したときに資材の増加を積算する\r
if (DateTime.Now - _lastMission < TimeSpan.FromMinutes(1))\r
_inPort = false;\r
_lastMission = DateTime.Now;\r
private Update ApiPort(dynamic data)\r
{\r
_itemInfo.InspectBasic(data.api_basic);\r
- _materialInfo.InspectMaterial(data.api_material, true);\r
+ _materialInfo.InspectMaterialPort(data.api_material);\r
_logger.InspectBasic(data.api_basic);\r
_logger.InspectMaterial(data.api_material);\r
_shipInfo.InspectShip(data);\r