/// <summary>
        /// ドロップ条件のインスタンスを作成
        /// </summary>
        /// <param name="rashinData">羅針盤データ</param>
        /// <param name="mapDifficulty">作戦難易度</param>
        /// <param name="winRank">勝敗</param>
        /// <param name="targetShipPossess">同じ艦の所持数</param>
        /// <returns>ドロップ条件のインスタンス</returns>
        public static DropCondition CreateInstance(ApiRashin rashinData, int mapDifficulty, string winRank, int targetShipPossess)
        {
            var instance = new DropCondition();

            //羅針盤データのセット
            instance.api_maparea_id = rashinData.api_maparea_id;
            instance.api_mapinfo_no = rashinData.api_mapinfo_no;
            instance.api_no         = rashinData.api_no;

            //作戦難易度
            instance.Difficulty = (MapDifficulty)mapDifficulty;

            //勝敗条件
            instance.WRank = WinRankEx.GetWinRank(winRank);

            //該当艦の所持数
            instance.TargetShipPossess = targetShipPossess;

            return(instance);
        }
        public void ReadBattleResult(string responseBody, int targetShipId, int[] sameShipIds)
        {
            if (NowCell == null)
            {
                return;
            }

            var strjson      = responseBody.Replace("svdata=", "");
            var battleResult = JsonConvert.DeserializeObject <RootBattleResult>(strjson);

            if (battleResult.api_data == null)
            {
                return;
            }

            //勝敗ランクの取得
            var winrank = WinRankEx.GetWinRank(battleResult.api_data.api_win_rank);

            if (winrank != WinRank.S)
            {
                return;
            }

            //作戦難易度
            if (NowCell == null || MapInfo == null)
            {
                return;
            }
            var map        = MapInfo.Where(x => x.api_id == NowCell.api_maparea_id * 10 + NowCell.api_mapinfo_no).FirstOrDefault();
            var difficulty = 0;

            if (map != null && map.api_eventmap != null)
            {
                difficulty = map.api_eventmap.api_selected_rank;
            }

            //ドロップの取得
            int id = 0;

            if (battleResult.api_data.api_get_ship != null)
            {
                id = battleResult.api_data.api_get_ship.api_ship_id;
            }

            //同型艦の所持数
            int numTargetShip = 0;

            if (PortResponseBody != null)
            {
                foreach (var i in sameShipIds)
                {
                    var match = System.Text.RegularExpressions.Regex.Matches(PortResponseBody, "\"api_ship_id\":" + i + ",\"api_lv\"");
                    numTargetShip += match.Count;
                }
            }

            //サーチする艦以外はドロップなしとする
            if (id != targetShipId)
            {
                id = 0;
            }


            //ドロップ条件の取得
            var condition = DropCondition.CreateInstance(NowCell, difficulty, battleResult.api_data.api_win_rank, numTargetShip);

            //テーブルに追加
            DropResult result;

            if (!Summary.TryGetValue(condition, out result))
            {
                result = new DropResult();
            }
            result.AddTable(id);

            Summary[condition] = result;
        }