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