/// <summary> /// API資源情報から情報をもらうコンストラクタ /// </summary> /// <param name="memberMaterial"></param> /// <param name="basicData"></param> public MaterialChangeInfo(MemberData.Material memberMaterial, MemberData.Basic basicData) { Fuel = memberMaterial.Fuel; Ammo = memberMaterial.Ammo; Steel = memberMaterial.Steel; Bauxite = memberMaterial.Bauxite; FastRepair = memberMaterial.FastRepair; FastBuild = memberMaterial.FastBuild; Devel = memberMaterial.Developer; Updater = memberMaterial.Updater; MemberID = basicData.MemberID; }
// /// <summary> /// 建造記録を生成 /// /kcsapi/api_get_member/kdock /// </summary> /// <param name="dockDat"></param> /// <param name="basicDat"></param> /// <param name="deckDat"></param> /// <param name="shipDat"></param> /// <returns></returns> public IEnumerable <LogData.CreateShipInfo> CreateLogData(MemberData.Dock dockDat, MemberData.Basic basicDat, MemberData.Deck deckDat, MemberData.Ship shipDat) { List <LogData.CreateShipInfo> retList = new List <LogData.CreateShipInfo>(); for (int n = 0; n < kdock_build.Count(); n++) { ///既に建造記録を生成しているか、建造していないドックを飛ばす if (!kdock_build[n]) { continue; } var secretary = shipDat.GetShip(deckDat.Secretary); var info = new LogData.CreateShipInfo(); lock (dockDat.KDockLock) { var kdock = dockDat.GetKDock(n + 1); info.Resource = new LogData.Material(kdock); info.ShipType = kdock.Type; info.ShipName = kdock.Name; info.OfficeLv = basicDat.Level; info.SecretaryShip = string.Format("{0}(Lv{1})", secretary.ShipName, secretary.Level); info.Date = DateTime.Now; info.MemberID = basicDat.MemberID; } retList.Add(info); Debug.WriteLine("KDockLog:" + info.ToString()); kdock_build[n] = false; } if (retList.Count == 0) { return(null); } return(retList); }
/// <summary> /// 戦闘終了 /kcsapi/api_req_sortie/battleresult /// </summary> /// <param name="JSON"></param> public LogData.BattleResultInfo Finish(string JSON, MemberData.Ship shipData, MemberData.Deck deckData, MasterData.Ship shipMaster, MemberData.Basic basicData) { // var json = DynamicJson.Parse(JSON); var json = JsonConvert.DeserializeObject <KCB.api_req_sortie.BattleResult>(JSON); if ((int)json.api_result != 1) { return(null); } var data = json.api_data; LogData.BattleResultInfo result = new LogData.BattleResultInfo(); result.MemberID = basicData.MemberID; result.Date = DateTime.Now; result.AreaName = data.api_quest_name; result.Rank = data.api_win_rank; //敵情報 result.Foe.DeckName = data.api_enemy_info.api_deck_name; Debug.WriteLine("FoeDeckName:" + result.Foe.DeckName); // double[] enemylist = (double[])data.api_ship_id; // for (int i = 1; i < enemylist.Count(); i++) for (int i = 1; i < data.api_ship_id.Count(); i++) { int enemyID = data.api_ship_id[i]; if (enemyID <= 0) { result.Foe.ShipList[i - 1] = ""; continue; } //何故かeliteとかflagの文字は読みに入ってる var t = shipMaster.LookupShipMaster(enemyID); if (t.Yomi.Length == 1) { result.Foe.ShipList[i - 1] = t.Name; } else { result.Foe.ShipList[i - 1] = string.Format("{0}({1})", t.Name, t.Yomi); } Debug.WriteLine(string.Format("ShipList({0})={1}", i - 1, result.Foe.ShipList[i - 1])); } //自軍情報 var fleet = deckData.GetFleet(battleFleetID); result.Friend.DeckName = fleet.Name; Debug.WriteLine("FriendDeckName:" + result.Friend.DeckName); for (int i = 0; i < fleet.Member.Count(); i++) { if (fleet.Member[i] <= 0) { result.Friend.ShipList[i] = ""; continue; } string header = ""; ///ロスト艦艇 if (data.api_lost_flag != null && (int)data.api_lost_flag[i + 1] != 0) { header = "x"; } //MVPは1オリジン if ((int)data.api_mvp == i + 1) { header = "*"; } var t = shipData.GetShip(fleet.Member[i]); result.Friend.ShipList[i] = string.Format("{0}{1}(Lv{2} HP{3})", header, t.ShipName, t.Level, t.HP); Debug.WriteLine(string.Format("ShipList({0})={1}", i, result.Friend.ShipList[i])); } ///ドロップ // if (data.IsDefined("api_get_ship")) if (data.api_get_ship != null) { result.ShipDropped = string.Format("{0}({1})", data.api_get_ship.api_ship_name, data.api_get_ship.api_ship_type); } Debug.WriteLine("GetShip:" + result.ShipDropped); return(result); }
public LogData.MaterialChangeInfo RecordMaterial(MemberData.Material matDat, MemberData.Basic basicData) { var info = new LogData.MaterialChangeInfo(matDat, basicData); return(info); }
public LogData.CreateItemInfo CreateLogData(string responseJson, IDictionary <string, string> queryParam, MasterData.Item itemData, MemberData.Deck deckDat, MemberData.Ship shipDat, MemberData.Basic basicDat) { // var json = DynamicJson.Parse(oSession.ResponseJSON); var json = JsonConvert.DeserializeObject <KCB.api_req_kousyou.CreateItem>(responseJson); if ((int)json.api_result != 1) { return(null); } var info = new LogData.CreateItemInfo(queryParam, json.api_data); info.OfficeLv = basicDat.Level; var secretary = shipDat.GetShip(deckDat.Secretary); info.SecretaryShip = string.Format("{0}(Lv{1})", secretary.ShipName, secretary.Level); info.MemberID = basicDat.MemberID; if (info.Succeess) { var it = itemData.GetItemParam(info.ItemNameID); info.ItemName = it.Name; info.ItemType = it.Type; } return(info); }
/// <summary> /// 遠征結果のログ情報を生成 /// </summary> /// <param name="JSON"></param> /// <param name="shipList"></param> /// <returns></returns> public LogData.MissionResultInfo CreateResult(string JSON, MemberData.Ship shipList, MemberData.Basic basicData) { // var json = DynamicJson.Parse(JSON); var json = JsonConvert.DeserializeObject <KCB.api_req_mission.Result>(JSON); if ((int)json.api_result != 1) { return(null); } var result = json.api_data; if (result == null) { return(null); } LogData.MissionResultInfo res = new LogData.MissionResultInfo(); res.MemberID = basicData.MemberID; res.AreaName = result.api_maparea_name; res.QuestName = result.api_quest_name; res.Date = DateTime.Now; res.Succeeded = (int)result.api_clear_result; //失敗したとき、api_get_material = -1で帰ってくる // Type typMaterial = result.api_get_material.GetType(); // if (typMaterial != typeof(Codeplex.Data.DynamicJson)) // if(result.api_get_material is Codeplex.Data.DynamicJson) // res.Material = new LogData.Material((double[])result.api_get_material); if (result.api_get_material is Newtonsoft.Json.Linq.JArray) { res.Material = new LogData.Material((Newtonsoft.Json.Linq.JArray)result.api_get_material); } else { res.Material = new LogData.Material(); } if (result.api_useitem_flag[0] != 0) { res.Item.Add( string.Format("{0}x{1}", itemName((int)result.api_useitem_flag[0] , result.api_get_item1.api_useitem_name), (int)result.api_get_item1.api_useitem_count) ); } if (result.api_useitem_flag[1] != 0) { res.Item.Add( string.Format("{0}x{1}", itemName((int)result.api_useitem_flag[1] , result.api_get_item2.api_useitem_name), (int)result.api_get_item2.api_useitem_count) ); } // double[] ships = (double[]) result.api_ship_id; // for (int n = 1; n < ships.Count(); n++) for (int n = 1; n < result.api_ship_id.Count(); n++) { var it = shipList.GetShip(result.api_ship_id[n]); res.Member.Add(string.Format("{0}({1}Lv{2})", it.ShipName, it.ShipType, it.Level)); Debug.WriteLine("Member:" + res.Member.Last()); } Debug.WriteLine("result:" + res.ToString()); return(res); }