internal BaseInfo(RawApiStart rpData)
        {
            Ships = new Table<ShipInfo>();
            ShipGraphs = new Table<ShipGraphInfo>();
            Equipments = new Table<EquipmentInfo>();
            EquipmentTypes = new Table<EquipmentType>();
            Expeditions = new Table<ExpeditionInfo>();
            MapAreas = new Table<MapAreaInfo>();
            MapInfos = new Table<BaseMapInfo>();

            Update(rpData);
        }
        public void Update(RawApiStart rpBaseData)
        {
            Ships.UpdateRawData<RawShipInfo>(rpBaseData.Ships, r => new ShipInfo(r), (rpData, rpRawData) => rpData.Update(rpRawData));
            ShipGraphs.UpdateRawData<RawShipGraphInfo>(rpBaseData.ShipGraphes.Where(r => Ships.ContainsKey(r.ID)), r => new ShipGraphInfo(r, Ships[r.ID]), (rpData, rpRawData) => rpData.Update(rpRawData));

            Equipments.UpdateRawData<RawEquipmentInfo>(rpBaseData.Equipments, r => new EquipmentInfo(r), (rpData, rpRawData) => rpData.Update(rpRawData));
            EquipmentTypes.UpdateRawData<RawEquipmentType>(rpBaseData.EquipmentTypes, r => new EquipmentType(r), (rpData, rpRawData) => rpData.Update(rpRawData));

            Expeditions.UpdateRawData<RawExpeditionInfo>(rpBaseData.Expeditions, r => new ExpeditionInfo(r), (rpData, rpRawData) => rpData.Update(rpRawData));

            MapAreas.UpdateRawData<RawMapArea>(rpBaseData.MapAreas, r => new MapAreaInfo(r), (rpData, rpRawData) => rpData.Update(rpRawData));
            MapInfos.UpdateRawData<RawBaseMapInfo>(rpBaseData.MapInfos, r => new BaseMapInfo(r), (rpData, rpRawData) => rpData.Update(rpRawData));
        }
        internal void UpdateBaseInfo(RawApiStart rpData)
        {
            if (Base == null)
                Base = new BaseInfo(rpData);
            else
                Base.Update(rpData);

            Base.UpdateShipModelIDs();
            BaseDataLoaded();
        }