예제 #1
0
        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("謎のアイテム");
                }
            }
        }
예제 #2
0
        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);
        }
예제 #3
0
        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;
            }
        }
예제 #4
0
        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);
        }
예제 #5
0
        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;
            }
        }
예제 #6
0
        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);
        }