private string GetMaterialName(CompassData compass) { if (compass.GetItemID == 4) //"※" 大方資源専用ID { return(Constants.GetMaterialName(compass.GetItemIDMetadata)); } else { UseItemMaster item = KCDatabase.Instance.MasterUseItems[compass.GetItemIDMetadata]; if (item != null) { return(item.Name); } else { return("謎のアイテム"); } } }
public override void OnResponseReceived(dynamic data) { KCDatabase db = KCDatabase.Instance; //特別置換処理 data.api_mst_stype[7].api_name = "巡洋戦艦"; //api_mst_ship foreach (var elem in data.api_mst_ship) { int id = (int)elem.api_id; if (db.MasterShips[id] == null) { var ship = new ShipDataMaster(); ship.LoadFromResponse(APIName, elem); db.MasterShips.Add(ship); } else { db.MasterShips[id].LoadFromResponse(APIName, elem); } } //改装関連のデータ設定 foreach (var ship in db.MasterShips) { int remodelID = ship.Value.RemodelAfterShipID; if (remodelID != 0) { db.MasterShips[remodelID].RemodelBeforeShipID = ship.Key; } } //api_mst_slotitem_equiptype foreach (var elem in data.api_mst_slotitem_equiptype) { int id = (int)elem.api_id; if (db.EquipmentTypes[id] == null) { var eqt = new EquipmentType(); eqt.LoadFromResponse(APIName, elem); db.EquipmentTypes.Add(eqt); } else { db.EquipmentTypes[id].LoadFromResponse(APIName, elem); } } //api_mst_stype foreach (var elem in data.api_mst_stype) { int id = (int)elem.api_id; if (db.ShipTypes[id] == null) { var spt = new ShipType(); spt.LoadFromResponse(APIName, elem); db.ShipTypes.Add(spt); } else { db.ShipTypes[id].LoadFromResponse(APIName, elem); } } //api_mst_slotitem foreach (var elem in data.api_mst_slotitem) { int id = (int)elem.api_id; if (db.MasterEquipments[id] == null) { var eq = new EquipmentDataMaster(); eq.LoadFromResponse(APIName, elem); db.MasterEquipments.Add(eq); } else { db.MasterEquipments[id].LoadFromResponse(APIName, elem); } } //api_mst_useitem foreach (var elem in data.api_mst_useitem) { int id = (int)elem.api_id; if (db.MasterUseItems[id] == null) { var item = new UseItemMaster(); item.LoadFromResponse(APIName, elem); db.MasterUseItems.Add(item); } else { db.MasterUseItems[id].LoadFromResponse(APIName, elem); } } //api_mst_maparea foreach (var elem in data.api_mst_maparea) { int id = (int)elem.api_id; if (db.MapArea[id] == null) { var item = new MapAreaData(); item.LoadFromResponse(APIName, elem); db.MapArea.Add(item); } else { db.MapArea[id].LoadFromResponse(APIName, elem); } } //api_mst_mapinfo foreach (var elem in data.api_mst_mapinfo) { int id = (int)elem.api_id; if (db.MapInfo[id] == null) { var item = new MapInfoData(); item.LoadFromResponse(APIName, elem); db.MapInfo.Add(item); } else { db.MapInfo[id].LoadFromResponse(APIName, elem); } } //api_mst_mission foreach (var elem in data.api_mst_mission) { int id = (int)elem.api_id; if (db.Mission[id] == null) { var item = new MissionData(); item.LoadFromResponse(APIName, elem); db.Mission.Add(item); } else { db.Mission[id].LoadFromResponse(APIName, elem); } } //api_mst_shipupgrade Dictionary <int, int> upgradeLevels = new Dictionary <int, int>(); foreach (var elem in data.api_mst_shipupgrade) { int idbefore = (int)elem.api_current_ship_id; int idafter = (int)elem.api_id; var shipbefore = db.MasterShips[idbefore]; var shipafter = db.MasterShips[idafter]; int level = (int)elem.api_upgrade_level; if (upgradeLevels.ContainsKey(idafter)) { if (level < upgradeLevels[idafter]) { shipafter.RemodelBeforeShipID = idbefore; upgradeLevels[idafter] = level; } } else { shipafter.RemodelBeforeShipID = idbefore; upgradeLevels.Add(idafter, level); } if (shipbefore != null) { shipbefore.NeedBlueprint = (int)elem.api_drawing_count; shipbefore.NeedCatapult = (int)elem.api_catapult_count; shipbefore.NeedActionReport = (int)elem.api_report_count; shipbefore.NeedAviationMaterial = (int)elem.api_aviation_mat_count; shipbefore.NeedArmamentMaterial = elem.api_arms_mat_count() ? (int)elem.api_arms_mat_count : 0; } } foreach (var elem in data.api_mst_equip_ship) { int id = (int)elem.api_ship_id; db.MasterShips[id].specialEquippableCategory = (int[])elem.api_equip_type; } foreach (var elem in data.api_mst_equip_exslot_ship) { int id = (int)elem.api_slotitem_id; db.MasterEquipments[id].equippableShipsAtExpansion = (int[])elem.api_ship_ids; } //api_mst_shipgraph foreach (var elem in data.api_mst_shipgraph) { int id = (int)elem.api_id; if (db.ShipGraphics[id] == null) { var sgd = new ShipGraphicData(); sgd.LoadFromResponse(APIName, elem); db.ShipGraphics.Add(sgd); } else { db.ShipGraphics[id].LoadFromResponse(APIName, elem); } } Utility.Logger.Add(2, "提督が鎮守府に着任しました。これより艦隊の指揮を執ります。"); base.OnResponseReceived((object)data); }
private void Updated(string apiname, dynamic data) { Func <int, Color> getColorFromEventKind = ( int kind ) => { switch (kind) { case 0: case 1: default: //昼夜戦・その他 return(SystemColors.ControlText); case 2: case 3: //夜戦・夜昼戦 return(Color.Navy); case 4: //航空戦 return(Color.DarkGreen); } }; if (apiname == "api_port/port") { BasePanel.Visible = false; } else if (apiname == "api_req_member/get_practice_enemyinfo") { TextMapArea.Text = "演習"; TextDestination.Text = string.Format("{0} {1}", data.api_nickname, Constants.GetAdmiralRank((int)data.api_rank)); TextEventKind.Text = data.api_cmt; TextEventKind.ForeColor = getColorFromEventKind(0); TextEventDetail.Text = string.Format("Lv. {0} / {1} exp.", data.api_level, data.api_experience[0]); TextEnemyFleetName.Text = data.api_deckname; } else { CompassData compass = KCDatabase.Instance.Battle.Compass; BasePanel.SuspendLayout(); PanelEnemyFleet.Visible = false; TextMapArea.Text = string.Format("出撃海域 : {0}-{1}", compass.MapAreaID, compass.MapInfoID); TextDestination.Text = string.Format("次のセル : {0}{1}", compass.Destination, (compass.IsEndPoint ? " (終点)" : "")); if (compass.LaunchedRecon != 0) { TextDestination.ImageAlign = ContentAlignment.MiddleRight; TextDestination.ImageIndex = (int)ResourceManager.EquipmentContent.Seaplane; string tiptext; switch (compass.CommentID) { case 1: tiptext = "敵艦隊発見!"; break; case 2: tiptext = "攻撃目標発見!"; break; default: tiptext = "索敵機発艦!"; break; } ToolTipInfo.SetToolTip(TextDestination, tiptext); } else { TextDestination.ImageAlign = ContentAlignment.MiddleCenter; TextDestination.ImageIndex = -1; ToolTipInfo.SetToolTip(TextDestination, null); } TextEventKind.ForeColor = getColorFromEventKind(0); { string eventkind = Constants.GetMapEventID(compass.EventID); switch (compass.EventID) { case 0: //初期位置 case 1: //不明 TextEventDetail.Text = "どうしてこうなった"; break; case 2: //資源 case 8: //船団護衛成功 { string materialname; if (compass.GetItemID == 4) //"※" 大方資源専用ID { materialname = Constants.GetMaterialName(compass.GetItemIDMetadata); } else { UseItemMaster item = KCDatabase.Instance.MasterUseItems[compass.GetItemIDMetadata]; if (item != null) { materialname = item.Name; } else { materialname = "謎のアイテム"; } } TextEventDetail.Text = materialname + " x " + compass.GetItemAmount; } break; case 3: //渦潮 { int materialmax = KCDatabase.Instance.Fleet.Fleets.Values .Where(f => f != null && f.IsInSortie) .SelectMany(f => f.MembersWithoutEscaped) .Max(s => { if (s == null) { return(0); } switch (compass.WhirlpoolItemID) { case 1: return(s.Fuel); case 2: return(s.Ammo); default: return(0); } }); TextEventDetail.Text = string.Format("{0} x {1} ({2:p0})", Constants.GetMaterialName(compass.WhirlpoolItemID), compass.WhirlpoolItemAmount, (double)compass.WhirlpoolItemAmount / Math.Max(materialmax, 1)); } break; case 4: //通常戦闘 case 5: //ボス戦闘 if (compass.EventKind >= 2) { eventkind += "/" + Constants.GetMapEventKind(compass.EventKind); TextEventKind.ForeColor = getColorFromEventKind(compass.EventKind); } UpdateEnemyFleet(compass.EnemyFleetID); break; case 6: //気のせいだった TextEventDetail.Text = ""; break; case 7: //航空戦(連合艦隊) if (compass.EventKind >= 2) { if (compass.EventKind != 4) //必ず"航空戦"のはずなので除外 { eventkind += "/" + Constants.GetMapEventKind(compass.EventKind); } TextEventKind.ForeColor = getColorFromEventKind(compass.EventKind); } UpdateEnemyFleet(compass.EnemyFleetID); break; default: eventkind += "不明"; TextEventDetail.Text = ""; break; } TextEventKind.Text = eventkind; } BasePanel.ResumeLayout(); BasePanel.Visible = true; } }
public override void OnResponseReceived(dynamic data) { KCDatabase db = KCDatabase.Instance; //特別置換処理 data.api_mst_stype[7].api_name = "巡洋戦艦"; //api_mst_ship foreach (var elem in data.api_mst_ship) { int id = (int)elem.api_id; if (db.MasterShips[id] == null) { var ship = new ShipDataMaster(); ship.LoadFromResponse(APIName, elem); db.MasterShips.Add(ship); } else { db.MasterShips[id].LoadFromResponse(APIName, elem); } } //改装関連のデータ設定 foreach (var ship in db.MasterShips) { int remodelID = ship.Value.RemodelAfterShipID; if (remodelID != 0) { db.MasterShips[remodelID].RemodelBeforeShipID = ship.Key; } } //api_mst_shipgraph foreach (var elem in data.api_mst_shipgraph) { int id = (int)elem.api_id; ShipDataMaster ship = db.MasterShips[id]; if (ship != null) { ship.ResourceName = elem.api_filename; ship.ResourceVersion = elem.api_version; } } //api_mst_slotitem_equiptype foreach (var elem in data.api_mst_slotitem_equiptype) { int id = (int)elem.api_id; if (db.EquipmentTypes[id] == null) { var eqt = new EquipmentType(); eqt.LoadFromResponse(APIName, elem); db.EquipmentTypes.Add(eqt); } else { db.EquipmentTypes[id].LoadFromResponse(APIName, elem); } } //api_mst_stype foreach (var elem in data.api_mst_stype) { int id = (int)elem.api_id; if (db.ShipTypes[id] == null) { var spt = new ShipType(); spt.LoadFromResponse(APIName, elem); db.ShipTypes.Add(spt); } else { db.ShipTypes[id].LoadFromResponse(APIName, elem); } } //api_mst_slotitem foreach (var elem in data.api_mst_slotitem) { int id = (int)elem.api_id; if (db.MasterEquipments[id] == null) { var eq = new EquipmentDataMaster(); eq.LoadFromResponse(APIName, elem); db.MasterEquipments.Add(eq); } else { db.MasterEquipments[id].LoadFromResponse(APIName, elem); } } //api_mst_slotitemgraph /* * foreach ( var elem in data.api_mst_slotitemgraph ) { * * int id = (int)elem.api_id; * EquipmentDataMaster eq = db.MasterEquipments[id]; * if ( eq != null ) { * eq.ResourceVersion = elem.api_version; * } * } */ //api_mst_useitem foreach (var elem in data.api_mst_useitem) { int id = (int)elem.api_id; if (db.MasterUseItems[id] == null) { var item = new UseItemMaster(); item.LoadFromResponse(APIName, elem); db.MasterUseItems.Add(item); } else { db.MasterUseItems[id].LoadFromResponse(APIName, elem); } } //api_mst_mapinfo foreach (var elem in data.api_mst_mapinfo) { int id = (int)elem.api_id; if (db.MapInfo[id] == null) { var item = new MapInfoData(); item.LoadFromResponse(APIName, elem); db.MapInfo.Add(item); } else { db.MapInfo[id].LoadFromResponse(APIName, elem); } } //api_mst_mission foreach (var elem in data.api_mst_mission) { int id = (int)elem.api_id; if (db.Mission[id] == null) { var item = new MissionData(); item.LoadFromResponse(APIName, elem); db.Mission.Add(item); } else { db.Mission[id].LoadFromResponse(APIName, elem); } } //api_mst_shipupgrade Dictionary <int, int> upgradeLevels = new Dictionary <int, int>(); foreach (var elem in data.api_mst_shipupgrade) { int idbefore = (int)elem.api_current_ship_id; int idafter = (int)elem.api_id; var shipbefore = db.MasterShips[idbefore]; var shipafter = db.MasterShips[idafter]; int level = (int)elem.api_upgrade_level; if (upgradeLevels.ContainsKey(idafter)) { if (level < upgradeLevels[idafter]) { shipafter.RemodelBeforeShipID = idbefore; upgradeLevels[idafter] = level; } } else { shipafter.RemodelBeforeShipID = idbefore; upgradeLevels.Add(idafter, level); } if (shipbefore != null) { shipbefore.NeedBlueprint = (int)elem.api_drawing_count; shipbefore.NeedCatapult = (int)elem.api_catapult_count; } } Utility.Logger.Add(2, "提督が鎮守府に着任しました。これより艦隊の指揮を執ります。"); base.OnResponseReceived((object)data); }
private void Updated(string apiname, dynamic data) { Color colorNormal = SystemColors.ControlText; Color colorNight = Color.Navy; if (apiname == "api_port/port") { BasePanel.Visible = false; } else if (apiname == "api_req_member/get_practice_enemyinfo") { TextMapArea.Text = "演習"; TextDestination.Text = string.Format("{0} {1}", data.api_nickname, Constants.GetAdmiralRank((int)data.api_rank)); TextEventKind.Text = data.api_cmt; TextEventKind.ForeColor = colorNormal; TextEventDetail.Text = string.Format("Lv. {0} / {1} exp.", data.api_level, data.api_experience[0]); TextEnemyFleetName.Text = data.api_deckname; } else { CompassData compass = KCDatabase.Instance.Battle.Compass; BasePanel.SuspendLayout(); PanelEnemyFleet.Visible = false; TextMapArea.Text = "出撃海域 : " + compass.MapAreaID + "-" + compass.MapInfoID; TextDestination.Text = "次のセル : " + compass.Destination + (compass.IsEndPoint ? " (終点)" : ""); TextEventKind.ForeColor = colorNormal; { string eventkind = Constants.GetMapEventID(compass.EventID); switch (compass.EventID) { case 0: //初期位置 case 1: //不明 TextEventDetail.Text = "どうしてこうなった"; break; case 2: //資源 { string materialname; if (compass.GetItemID == 4) //"※" 大方資源専用ID { materialname = Constants.GetMaterialName(compass.GetItemIDMetadata); } else { UseItemMaster item = KCDatabase.Instance.MasterUseItems[compass.GetItemIDMetadata]; if (item != null) { materialname = item.Name; } else { materialname = "謎のアイテム"; } } TextEventDetail.Text = materialname + " x " + compass.GetItemAmount; } break; case 3: //渦潮 { int materialmax = KCDatabase.Instance.Fleet.Fleets.Values .Where(f => f != null && f.IsInSortie) .SelectMany(f => f.MembersWithoutEscaped) .Max(s => { if (s == null) { return(0); } switch (compass.WhirlpoolItemID) { case 1: return(s.Fuel); case 2: return(s.Ammo); default: return(0); } }); TextEventDetail.Text = string.Format("{0} x {1} ({2:p0})", Constants.GetMaterialName(compass.WhirlpoolItemID), compass.WhirlpoolItemAmount, (double)compass.WhirlpoolItemAmount / Math.Max(materialmax, 1)); } break; case 4: //通常戦闘 case 5: //ボス戦闘 if (compass.EventKind >= 2) { eventkind += "/" + Constants.GetMapEventKind(compass.EventKind); if (compass.EventKind == 2 || compass.EventKind == 3) { TextEventKind.ForeColor = colorNight; } } UpdateEnemyFleet(compass.EnemyFleetID); break; case 6: //気のせいだった TextEventDetail.Text = ""; break; case 7: //機動部隊航空戦 if (compass.EventKind >= 2 && compass.EventKind != 4) //必ず"航空戦"のはずなので除外 { eventkind += "/" + Constants.GetMapEventKind(compass.EventKind); } UpdateEnemyFleet(compass.EnemyFleetID); break; default: eventkind += "不明"; TextEventDetail.Text = ""; break; } TextEventKind.Text = eventkind; } BasePanel.ResumeLayout(); BasePanel.Visible = true; } }
public override void OnResponseReceived(dynamic data) { KCDatabase db = KCDatabase.Instance; //特別置換処理 data.api_mst_stype[7].api_name = "巡洋戦艦"; //api_mst_ship foreach (var elem in data.api_mst_ship) { int id = (int)elem.api_id; if (db.MasterShips[id] == null) { var ship = new ShipDataMaster(); ship.LoadFromResponse(APIName, elem); db.MasterShips.Add(ship); } else { db.MasterShips[id].LoadFromResponse(APIName, elem); } } //改装関連のデータ設定 foreach (var ship in db.MasterShips) { int remodelID = ship.Value.RemodelAfterShipID; if (remodelID != 0) { db.MasterShips[remodelID].RemodelBeforeShipID = ship.Key; } } //api_mst_shipgraph foreach (var elem in data.api_mst_shipgraph) { int id = (int)elem.api_id; ShipDataMaster ship = db.MasterShips[id]; if (ship != null) { ship.ResourceName = elem.api_filename; ship.ResourceVersion = elem.api_version; } } //api_mst_slotitem_equiptype foreach (var elem in data.api_mst_slotitem_equiptype) { int id = (int)elem.api_id; if (db.EquipmentTypes[id] == null) { var eqt = new EquipmentType(); eqt.LoadFromResponse(APIName, elem); db.EquipmentTypes.Add(eqt); } else { db.EquipmentTypes[id].LoadFromResponse(APIName, elem); } } //api_mst_stype foreach (var elem in data.api_mst_stype) { int id = (int)elem.api_id; if (db.ShipTypes[id] == null) { var spt = new ShipType(); spt.LoadFromResponse(APIName, elem); db.ShipTypes.Add(spt); } else { db.ShipTypes[id].LoadFromResponse(APIName, elem); } } //api_mst_slotitem foreach (var elem in data.api_mst_slotitem) { int id = (int)elem.api_id; if (db.MasterEquipments[id] == null) { var eq = new EquipmentDataMaster(); eq.LoadFromResponse(APIName, elem); db.MasterEquipments.Add(eq); } else { db.MasterEquipments[id].LoadFromResponse(APIName, elem); } } //api_mst_slotitemgraph foreach (var elem in data.api_mst_slotitemgraph) { int id = (int)elem.api_id; EquipmentDataMaster eq = db.MasterEquipments[id]; if (eq != null) { eq.ResourceVersion = elem.api_version; } } //api_mst_useitem foreach (var elem in data.api_mst_useitem) { int id = (int)elem.api_id; if (db.MasterUseItems[id] == null) { var item = new UseItemMaster(); item.LoadFromResponse(APIName, elem); db.MasterUseItems.Add(item); } else { db.MasterUseItems[id].LoadFromResponse(APIName, elem); } } //api_mst_mapinfo foreach (var elem in data.api_mst_mapinfo) { int id = (int)elem.api_id; if (db.MapInfo[id] == null) { var item = new MapInfoData(); item.LoadFromResponse(APIName, elem); db.MapInfo.Add(item); } else { db.MapInfo[id].LoadFromResponse(APIName, elem); } } //api_mst_mission foreach (var elem in data.api_mst_mission) { int id = (int)elem.api_id; if (db.Mission[id] == null) { var item = new MissionData(); item.LoadFromResponse(APIName, elem); db.Mission.Add(item); } else { db.Mission[id].LoadFromResponse(APIName, elem); } } //api_mst_shipupgrade foreach (var elem in data.api_mst_shipupgrade) { if (elem.api_drawing_count > 0) { int id = db.MasterShips[(int)elem.api_id].RemodelBeforeShipID; if (id != 0) { db.MasterShips[id].NeedBlueprint = (int)elem.api_drawing_count; } } } Utility.Logger.Add(2, "提督が鎮守府に着任しました。これより艦隊の指揮を執ります。"); base.OnResponseReceived((object)data); }