/// <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; }