public override void OnResponseReceived(dynamic data) { KCDatabase db = KCDatabase.Instance; int setid = (int)data.api_ship_data.api_set_ship.api_id; int unsetid = (int)data.api_ship_data.api_unset_ship.api_id; // 念のため if (!db.Ships.ContainsKey(setid)) { var a = new ShipData(); a.LoadFromResponse(APIName, data.api_ship_data.api_set_ship); db.Ships.Add(a); } else { db.Ships[setid].LoadFromResponse(APIName, data.api_ship_data.api_set_ship); } if (!db.Ships.ContainsKey(unsetid)) { var a = new ShipData(); a.LoadFromResponse(APIName, data.api_ship_data.api_unset_ship); db.Ships.Add(a); } else { db.Ships[unsetid].LoadFromResponse(APIName, data.api_ship_data.api_unset_ship); } base.OnResponseReceived((object)data); }
public override void OnRequestReceived(Dictionary <string, string> data) { KCDatabase db = KCDatabase.Instance; //todo: ここに処理を書くのはみょんな感があるので、可能なら移動する int shipID = int.Parse(data["api_ship_id"]); db.Fleet.LoadFromRequest(APIName, data); ShipData ship = db.Ships[shipID]; Utility.Logger.Add(2, ship.NameWithLevel + " を解体しました。"); for (int i = 0; i < ship.Slot.Count; i++) { if (ship.Slot[i] != -1) { db.Equipments.Remove(ship.Slot[i]); } } db.Ships.Remove(shipID); base.OnRequestReceived(data); }
//データ更新時 public void Update(int dockID) { KCDatabase db = KCDatabase.Instance; DockData dock = db.Docks[dockID]; ToolTipInfo.SetToolTip(ShipName, null); ToolTipInfo.SetToolTip(RepairTime, null); if (dock == null || dock.State == -1) { //locked ShipName.Text = ""; RepairTime.Text = ""; RepairTime.Tag = null; } else if (dock.State == 0) { //empty ShipName.Text = "----"; RepairTime.Text = ""; RepairTime.Tag = null; } else { //repairing ShipName.Text = db.Ships[dock.ShipID].Name; ToolTipInfo.SetToolTip(ShipName, db.Ships[dock.ShipID].NameWithLevel); RepairTime.Text = DateTimeHelper.ToTimeRemainString(dock.CompletionTime); RepairTime.Tag = dock.CompletionTime; ToolTipInfo.SetToolTip(RepairTime, "完了日時 : " + dock.CompletionTime); } }
public override void OnResponseReceived(dynamic data) { KCDatabase db = KCDatabase.Instance; //api_ship_data foreach (var elem in data.api_ship_data) { int id = (int)elem.api_id; ShipData ship = db.Ships[id]; ship.LoadFromResponse(APIName, elem); for (int i = 0; i < ship.Slot.Count; i++) { if (ship.Slot[i] == -1) { continue; } if (!db.Equipments.ContainsKey(ship.Slot[i])) { //改装時に新装備を入手するが、追加される前にIDを与えられてしまうため EquipmentData eq = new EquipmentData(); eq.LoadFromResponse(APIName, ship.Slot[i]); db.Equipments.Add(eq); } } } //api_deck_data db.Fleet.LoadFromResponse(APIName, data.api_deck_data); base.OnResponseReceived((object)data); }
//データ更新時 public void Update(int dockID) { KCDatabase db = KCDatabase.Instance; DockData dock = db.Docks[dockID]; RepairTime.BackColor = Color.Transparent; RepairTime.ForeColor = Utility.Configuration.Config.UI.ForeColor; ToolTipInfo.SetToolTip(ShipName, null); ToolTipInfo.SetToolTip(RepairTime, null); if (dock == null || dock.State == -1) { //locked ShipName.Text = ""; RepairTime.Text = ""; RepairTime.Tag = null; } else if (dock.State == 0) { //empty ShipName.Text = "----"; RepairTime.Text = ""; RepairTime.Tag = null; } else { //repairing ShipName.Text = db.Ships[dock.ShipID].Name; ToolTipInfo.SetToolTip(ShipName, db.Ships[dock.ShipID].NameWithLevel); RepairTime.Text = DateTimeHelper.ToTimeRemainString(dock.CompletionTime); RepairTime.Tag = dock.CompletionTime; ToolTipInfo.SetToolTip(RepairTime, GeneralRes.TimeToCompletion + ":" + DateTimeHelper.TimeToCSVString(dock.CompletionTime)); } }
public override void OnResponseReceived(dynamic data) { KCDatabase db = KCDatabase.Instance; foreach (var dock in data) { int id = (int)dock.api_id; if (!db.Docks.ContainsKey(id)) { var d = new DockData(); d.LoadFromResponse(APIName, dock); db.Docks.Add(d); } else { db.Docks[id].LoadFromResponse(APIName, dock); } } db.Fleet.LoadFromResponse(APIName, data); base.OnResponseReceived((object)data); }
public override void OnRequestReceived(Dictionary <string, string> data) { KCDatabase db = KCDatabase.Instance; db.Fleet.LoadFromRequest(APIName, data); foreach (string id in data["api_id_items"].Split(",".ToCharArray())) { int shipID = int.Parse(id); ShipData ship = db.Ships[shipID]; for (int i = 0; i < ship.Slot.Count; i++) { if (ship.Slot[i] != -1) { db.Equipments.Remove(ship.Slot[i]); } } Utility.Logger.Add(2, ship.NameWithLevel + LoggerRes.Decomissioned); db.Ships.Remove(shipID); } base.OnRequestReceived(data); }
public override void OnRequestReceived(Dictionary <string, string> data) { KCDatabase db = KCDatabase.Instance; // 削除処理が終わってからだと装備データが取れないため db.QuestProgress.EquipmentDiscarded(APIName, data); Dictionary <string, int> itemsDestroyed = new Dictionary <string, int>(); foreach (int id in data["api_slotitem_ids"].Split(",".ToCharArray()).Select(str => int.Parse(str))) { string name = KCDatabase.Instance.Equipments[id].NameWithLevel; itemsDestroyed.TryGetValue(name, out int amount); itemsDestroyed[name] = amount + 1; db.Equipments.Remove(id); } foreach (var item in itemsDestroyed) { Utility.Logger.Add(2, String.Format("{0}{1} を廃棄しました。", item.Key, item.Value > 1 ? " x " + item.Value : "")); } base.OnRequestReceived(data); }
public override void OnResponseReceived(dynamic data) { KCDatabase db = KCDatabase.Instance; db.Material.LoadFromResponse(APIName, data.api_after_material); if (data.api_after_slot()) //改修成功時のみ存在 { EquipmentData eq = db.Equipments[(int)data.api_after_slot.api_id]; if (eq != null) { eq.LoadFromResponse(APIName, data.api_after_slot); } } if (data.api_use_slot_id()) { foreach (int id in data.api_use_slot_id) { db.Equipments.Remove(id); } } base.OnResponseReceived((object)data); }
public override void OnRequestReceived(Dictionary <string, string> data) { KCDatabase db = KCDatabase.Instance; db.Fleet.LoadFromRequest(APIName, data); bool destroysEquipments = data.ContainsKey("api_slot_dest_flag") ? (data["api_slot_dest_flag"] != "0") : true; foreach (string id in data["api_id_items"].Split(",".ToCharArray())) { int shipID = int.Parse(id); ShipData ship = db.Ships[shipID]; if (destroysEquipments) { for (int i = 0; i < ship.Slot.Count; i++) { if (ship.Slot[i] != -1) { db.Equipments.Remove(ship.Slot[i]); } } } Utility.Logger.Add(2, ship.NameWithLevel + " を除籍しました。"); db.Ships.Remove(shipID); } base.OnRequestReceived(data); }
public override void OnRequestReceived(Dictionary <string, string> data) { KCDatabase db = KCDatabase.Instance; bool destroyEquipments = int.Parse(data["api_slot_dest_flag"]) == 1; var shipIDs = data["api_ship_id"].Split(',').Select(id => int.Parse(id)); Dictionary <string, int> shipsToDestroy = new Dictionary <string, int>(); foreach (int shipID in shipIDs) { string name = db.Ships[shipID].NameWithLevel; shipsToDestroy.TryGetValue(name, out int amount); shipsToDestroy[name] = amount + 1; db.Ships[shipID].LoadFromRequest(APIName, data); } db.Fleet.LoadFromRequest(APIName, data); var shipsDestroyed = new List <string>(); foreach (var ship in shipsToDestroy) { shipsDestroyed.Add(String.Format("{0}{1}", ship.Key, ship.Value > 1 ? " x " + ship.Value : "")); } Utility.Logger.Add(2, "", "已解体 : ", String.Join(" , ", shipsDestroyed), destroyEquipments ? " ( 废弃装备 )" : " ( 保留装备 )"); base.OnRequestReceived(data); }
public override int[] EmulateBattle() { int[] hp = new int[12]; KCDatabase db = KCDatabase.Instance; Action <int, int> DealDamageFriend = (int index, int damage) => { //if ( hp[index] == -1 ) return; hp[index] -= Math.Max(damage, 0); //ダメコンは発動しない。 }; Action <int, int> DealDamageEnemy = (int index, int damage) => { //if ( hp[index + 6] == -1 ) return; hp[index + 6] -= Math.Max(damage, 0); }; for (int i = 0; i < 12; i++) { hp[i] = (int)RawData.api_nowhps[i + 1]; } //夜間砲撃戦 { dynamic hougeki = RawData.api_hougeki; int[] damageList = new int[12]; int leni = ((int[])hougeki.api_at_list).Length; for (int i = 1; i < leni; i++) { for (int j = 0; j < damageList.Length; j++) { damageList[j] = 0; } int lenj = ((int[])hougeki.api_df_list[i]).Length; for (int j = 0; j < lenj; j++) { int target = (int)hougeki.api_df_list[i][j]; if (target != -1) { damageList[target - 1] += (int)hougeki.api_damage[i][j]; } } for (int j = 0; j < 6; j++) { DealDamageFriend(j, damageList[j]); DealDamageEnemy(j, damageList[j + 6]); } } } return(hp); }
public void Update(FleetData fleet) { KCDatabase db = KCDatabase.Instance; if (fleet == null) { return; } Name.Text = fleet.Name; { int levelSum = fleet.MembersInstance.Sum(s => s != null ? s.Level : 0); int fueltotal = fleet.MembersInstance.Sum(s => s == null ? 0 : (int)(s.MasterShip.Fuel * (s.IsMarried ? 0.85 : 1.00))); int ammototal = fleet.MembersInstance.Sum(s => s == null ? 0 : (int)(s.MasterShip.Ammo * (s.IsMarried ? 0.85 : 1.00))); int speed = fleet.MembersWithoutEscaped.Min(s => s == null ? 10 : s.MasterShip.Speed); ToolTipInfo.SetToolTip(Name, string.Format( GeneralRes.FleetTooltip, levelSum, (double)levelSum / Math.Max(fleet.Members.Count(id => id != -1), 1), Constants.GetSpeed(speed), fleet.MembersInstance.Sum(s => s == null ? 0 : s.SlotInstanceMaster.Count(q => q == null ? false : q.CategoryType == 30)), fleet.MembersInstance.Count(s => s == null ? false : s.SlotInstanceMaster.Count(q => q == null ? false : q.CategoryType == 30) > 0), fleet.MembersInstance.Sum(s => s == null ? 0 : s.SlotInstanceMaster.Count(q => q == null ? false : q.CategoryType == 24)), fueltotal, ammototal, (int)(fueltotal * 0.2), (int)(ammototal * 0.2) )); } State = FleetData.UpdateFleetState(fleet, StateMain, ToolTipInfo, State, ref Timer); //制空戦力計算 { int airSuperiority = fleet.GetAirSuperiority(); AirSuperiority.Text = airSuperiority.ToString(); ToolTipInfo.SetToolTip(AirSuperiority, string.Format(GeneralRes.ASTooltip, (int)(airSuperiority / 3.0), (int)(airSuperiority / 1.5), (int)(airSuperiority * 1.5), (int)(airSuperiority * 3.0))); } //索敵能力計算 SearchingAbility.Text = fleet.GetSearchingAbilityString(); ToolTipInfo.SetToolTip(SearchingAbility, string.Format(GeneralRes.LoSTooltip, fleet.GetSearchingAbilityString(0), fleet.GetSearchingAbilityString(1), fleet.GetSearchingAbilityString(2))); }
public void Update(FleetData fleet) { KCDatabase db = KCDatabase.Instance; if (fleet == null) { return; } Name.Text = fleet.Name; { int levelSum = fleet.MembersInstance.Sum(s => s != null ? s.Level : 0); int fueltotal = fleet.MembersInstance.Sum(s => s == null ? 0 : (int)(s.MasterShip.Fuel * (s.IsMarried ? 0.85 : 1.00))); int ammototal = fleet.MembersInstance.Sum(s => s == null ? 0 : (int)(s.MasterShip.Ammo * (s.IsMarried ? 0.85 : 1.00))); int speed = fleet.MembersWithoutEscaped.Min(s => s == null ? 10 : s.MasterShip.Speed); ToolTipInfo.SetToolTip(Name, string.Format( "Lv合計: {0} / 平均: {1:0.00}\r\n{2}艦隊\r\nドラム缶搭載: {3}個 ({4}艦)\r\n大発動艇搭載: {5}個\r\n総積載: 燃 {6} / 弾 {7}\r\n(1戦当たり 燃 {8} / 弾 {9})", levelSum, (double)levelSum / Math.Max(fleet.Members.Count(id => id != -1), 1), Constants.GetSpeed(speed), fleet.MembersInstance.Sum(s => s == null ? 0 : s.SlotInstanceMaster.Count(q => q == null ? false : q.CategoryType == 30)), fleet.MembersInstance.Count(s => s == null ? false : s.SlotInstanceMaster.Count(q => q == null ? false : q.CategoryType == 30) > 0), fleet.MembersInstance.Sum(s => s == null ? 0 : s.SlotInstanceMaster.Count(q => q == null ? false : q.CategoryType == 24)), fueltotal, ammototal, (int)(fueltotal * 0.2), (int)(ammototal * 0.2) )); } State = FleetData.UpdateFleetState(fleet, StateMain, ToolTipInfo, State, ref Timer); //制空戦力計算 { int airSuperiority = fleet.GetAirSuperiority(); AirSuperiority.Text = airSuperiority.ToString(); ToolTipInfo.SetToolTip(AirSuperiority, string.Format("確保: {0}\r\n優勢: {1}\r\n均衡: {2}\r\n劣勢: {3}\r\n", (int)(airSuperiority / 3.0), (int)(airSuperiority / 1.5), (int)(airSuperiority * 1.5), (int)(airSuperiority * 3.0))); } //索敵能力計算 SearchingAbility.Text = fleet.GetSearchingAbilityString(); ToolTipInfo.SetToolTip(SearchingAbility, string.Format("(旧)2-5式: {0}\r\n2-5式(秋): {1}\r\n2-5新秋簡易式: {2}\r\n", fleet.GetSearchingAbilityString(0), fleet.GetSearchingAbilityString(1), fleet.GetSearchingAbilityString(2))); }
void Updated(string apiname, dynamic data) { if (IsRemodeling) { if (apiname == "api_get_member/slot_item") { IsRemodeling = false; } else { return; } } if (apiname == "api_req_kaisou/remodeling") { IsRemodeling = true; return; } KCDatabase db = KCDatabase.Instance; if (db.Ships.Count == 0) { return; } FleetData fleet = db.Fleet.Fleets[FleetID]; if (fleet == null) { return; } TableFleet.SuspendLayout(); ControlFleet.Update(fleet); TableFleet.Visible = true; TableFleet.ResumeLayout(); TableMember.SuspendLayout(); for (int i = 0; i < ControlMember.Length; i++) { ControlMember[i].Update(fleet.Members[i]); } TableMember.ResumeLayout(); if (Icon != null) { ResourceManager.DestroyIcon(Icon); } Icon = ResourceManager.ImageToIcon(ControlFleet.StateMain.Image); if (Parent != null) { Parent.Refresh(); //アイコンを更新するため } }
public ApiStart2Module(string loginId, string password, int fetchTime = 60000) : base(fetchTime) { m_loginId = loginId; m_password = password; m_forceUpdateToken = false; m_exportPath = Path.Combine(Directory.GetCurrentDirectory(), MODULE_PATH); Directory.CreateDirectory(m_exportPath); m_kcdbRef = KCDatabase.Instance; Utils.Log("ApiStart2Module has been initialized. Checking time interval is " + (fetchTime / 1000) + "s.", "ApiStart2Module", ConsoleColor.Green); }
public override void OnRequestReceived(Dictionary <string, string> data) { KCDatabase db = KCDatabase.Instance; foreach (string id in data["api_slotitem_ids"].Split(",".ToCharArray())) { db.Equipments.Remove(int.Parse(id)); } base.OnRequestReceived(data); }
public override void OnRequestReceived(Dictionary <string, string> data) { KCDatabase db = KCDatabase.Instance; db.Docks[int.Parse(data["api_ndock_id"])].LoadFromResponse(APIName, data); db.Material.InstantRepair--; db.Fleet.LoadFromRequest(APIName, data); base.OnRequestReceived(data); }
public override void OnRequestReceived(Dictionary <string, string> data) { KCDatabase db = KCDatabase.Instance; ArsenalData arsenal = db.Arsenals[int.Parse(data["api_kdock_id"])]; arsenal.State = 3; db.Material.InstantConstruction -= arsenal.Fuel >= 1000 ? 10 : 1; base.OnRequestReceived(data); }
/// <summary> /// 索敵能力を求めます。「2-5式」です。 /// </summary> /// <param name="fleet">対象の艦隊。</param> public static int GetSearchingAbility_Old(FleetData fleet) { KCDatabase db = KCDatabase.Instance; int los_reconplane = 0; int los_radar = 0; int los_other = 0; foreach (var ship in fleet.MembersWithoutEscaped) { if (ship == null) { continue; } los_other += ship.LOSBase; var slot = ship.SlotInstanceMaster; for (int j = 0; j < slot.Count; j++) { if (slot[j] == null) { continue; } switch (slot[j].EquipmentType[2]) { case 9: //艦偵 case 10: //水偵 case 11: //水爆 if (ship.Aircraft[j] > 0) { los_reconplane += slot[j].LOS * 2; } break; case 12: //小型電探 case 13: //大型電探 los_radar += slot[j].LOS; break; default: los_other += slot[j].LOS; break; } } } return((int)Math.Sqrt(los_other) + los_radar + los_reconplane); }
public override void OnRequestReceived(Dictionary <string, string> data) { KCDatabase db = KCDatabase.Instance; foreach (string sid in data["api_slotitem_ids"].Split(",".ToCharArray())) { int id = int.Parse(sid); Utility.Logger.Add(2, KCDatabase.Instance.Equipments[id].NameWithLevel + " を廃棄しました。"); db.Equipments.Remove(id); } base.OnRequestReceived(data); }
public override void OnResponseReceived(dynamic data) { KCDatabase db = KCDatabase.Instance; // Admiral - 各所でバグるので封印 //db.Admiral.LoadFromResponse( APIName, data.api_basic ); // Equipments db.Equipments.Clear(); foreach (var elem in data.api_slot_item) { var eq = new EquipmentData(); eq.LoadFromResponse(APIName, elem); db.Equipments.Add(eq); } // Arsenal foreach (var ars in data.api_kdock) { int id = (int)ars.api_id; if (!db.Arsenals.ContainsKey(id)) { var a = new ArsenalData(); a.LoadFromResponse(APIName, ars); db.Arsenals.Add(a); } else { db.Arsenals[id].LoadFromResponse(APIName, ars); } } // UseItem db.UseItems.Clear(); if (data.api_useitem()) { foreach (var elem in data.api_useitem) { var item = new UseItem(); item.LoadFromResponse(APIName, elem); db.UseItems.Add(item); } } base.OnResponseReceived((object)data); }
public override void OnResponseReceived(dynamic data) { KCDatabase db = KCDatabase.Instance; db.UseItems.Clear(); foreach (var elem in data) { var item = new UseItem(); item.LoadFromResponse(APIName, elem); db.UseItems.Add(item); } base.OnResponseReceived((object)data); }
public override void OnResponseReceived(dynamic data) { KCDatabase db = KCDatabase.Instance; //api_kdock foreach (var ars in data.api_kdock) { int id = (int)ars.api_id; if (!db.Arsenals.ContainsKey(id)) { var a = new ArsenalData(); a.LoadFromResponse(APIName, ars); db.Arsenals.Add(a); } else { db.Arsenals[id].LoadFromResponse(APIName, ars); } } //api_slotitem if (data.api_slotitem != null) { //装備なしの艦はnullになる foreach (var elem in data.api_slotitem) { var eq = new EquipmentData(); eq.LoadFromResponse(APIName, elem); db.Equipments.Add(eq); } } //api_ship { ShipData ship = new ShipData(); ship.LoadFromResponse(APIName, data.api_ship); db.Ships.Add(ship); Utility.Logger.Add(2, string.Format("{0}「{1}」の建造が完了しました。", ship.MasterShip.ShipTypeName, ship.MasterShip.NameWithClass)); } base.OnResponseReceived((object)data); }
public override void OnResponseReceived(dynamic data) { KCDatabase db = KCDatabase.Instance; //api_ship foreach (var elem in data.api_ship) { int shipID = (int)elem.api_id; ShipData ship = db.Ships[shipID]; ship.LoadFromResponse(APIName, elem); } int[] material = new int[] { db.Material.Fuel, db.Material.Ammo, db.Material.Steel, db.Material.Bauxite, }; //api_material db.Material.LoadFromResponse(APIName, data.api_material); material[0] -= db.Material.Fuel; material[1] -= db.Material.Ammo; material[2] -= db.Material.Steel; material[3] -= db.Material.Bauxite; { var sb = new StringBuilder("補給を行いました。消費: "); for (int i = 0; i < 4; i++) { if (material[i] > 0) { sb.Append(Constants.GetMaterialName(i + 1)).Append("x").Append(material[i]).Append(", "); } } sb.Remove(sb.Length - 2, 2); Utility.Logger.Add(2, sb.ToString()); } base.OnResponseReceived((object)data); }
public override void OnResponseReceived(dynamic data) { KCDatabase db = KCDatabase.Instance; { int id = (int)data.api_ship.api_id; db.Ships[id].LoadFromResponse(APIName, data.api_ship); } db.Fleet.LoadFromResponse(APIName, data.api_deck); base.OnResponseReceived((object)data); }
public override void OnResponseReceived(dynamic data) { KCDatabase db = KCDatabase.Instance; db.Equipments.Clear(); foreach (var elem in data) { var eq = new EquipmentData(); eq.LoadFromResponse(APIName, elem); db.Equipments.Add(eq); } base.OnResponseReceived((object)data); }
public override void OnResponseReceived(dynamic data) { KCDatabase db = KCDatabase.Instance; //api_material db.Material.LoadFromResponse(APIName, data.api_material); //api_basic db.Admiral.LoadFromResponse(APIName, data.api_basic); //api_ship //ちょっと遅くなるかもだけど、齟齬(幽霊とかドッペルゲンガーとか)の発生を防ぐため全入れ替え db.Ships.Clear(); foreach (var elem in data.api_ship) { var a = new ShipData(); a.LoadFromResponse(APIName, elem); db.Ships.Add(a); } //api_ndock foreach (var elem in data.api_ndock) { int id = (int)elem.api_id; if (!db.Docks.ContainsKey(id)) { var a = new DockData(); a.LoadFromResponse(APIName, elem); db.Docks.Add(a); } else { db.Docks[id].LoadFromResponse(APIName, elem); } } //api_deck_port db.Fleet.LoadFromResponse(APIName, data.api_deck_port); db.Fleet.CombinedFlag = data.api_combined_flag() ? (int)data.api_combined_flag : 0; db.Battle.LoadFromResponse(APIName, data); base.OnResponseReceived((object)data); }
public override void OnRequestReceived(Dictionary <string, string> data) { KCDatabase db = KCDatabase.Instance; DockData dock = db.Docks[int.Parse(data["api_ndock_id"])]; bool bucketUsed = data["api_highspeed"] == "1"; int shipID = int.Parse(data["api_ship_id"]); ShipData ship = db.Ships[shipID]; Utility.Logger.Add(2, string.Format("入渠ドック #{0}で {1} ({2}/{3}) の修復を開始しました。(燃料x{4}, 鋼材x{5}, {6})", dock.DockID, ship.NameWithLevel, ship.HPCurrent, ship.HPMax, ship.RepairFuel, ship.RepairSteel, bucketUsed ? "高速修復材x1" : ("修理完了予定: " + DateTimeHelper.TimeToCSVString(DateTime.Now + TimeSpan.FromMilliseconds(ship.RepairTime))) )); db.Material.Fuel -= ship.RepairFuel; db.Material.Steel -= ship.RepairSteel; if (bucketUsed) { ship.Repair(); db.Material.InstantRepair--; } else if (ship.RepairTime <= 60000) { ship.Repair(); } else { //この場合は直後に ndock が呼ばれるので自力で更新しなくてもよい /* * dock.State = 1; * dock.ShipID = shipID; * dock.CompletionTime = DateTime.Now.AddMilliseconds( ship.RepairTime ); */ } db.Fleet.LoadFromRequest(APIName, data); base.OnRequestReceived(data); }
//materialデータはresponseで返ってくるので、requestで読む必要があるのはログをとるときぐらい public override void OnResponseReceived(dynamic data) { KCDatabase db = KCDatabase.Instance; //装備の追加 データが不十分のため、自力で構築しなければならない if ((int)data.api_create_flag != 0) { var eq = new EquipmentData(); eq.LoadFromResponse(APIName, data.api_slot_item); db.Equipments.Add(eq); } db.Material.LoadFromResponse(APIName, data.api_material); base.OnResponseReceived((object)data); }