internal EquipmentsGroupByLevel(EquipmentGroupingKey rpKey, IEnumerable<Equipment> rpEquipments)
        {
            Key = rpKey;
            r_Fleets = new Dictionary<int, EquipmentsGroupByFleet>(5);

            Count = RemainingCount = rpEquipments.Count();
        }
        internal EquipmentGroupByLevel(EquipmentGroupByMasterID rpOwner, EquipmentGroupingKey rpKey, IEnumerable<Equipment> rpEquipment)
        {
            r_Owner = rpOwner;

            Key = rpKey;
            r_Fleets = new ListDictionary<int, EquipmentGroupByFleet>();

            Count = rpEquipment.Count();

            var rUnequipedEquipment = KanColleGame.Current.Port.UnequippedEquipment[r_Owner.Info.Type];
            if (rUnequipedEquipment == null)
                RemainingCount = 0;
            else
                RemainingCount = rUnequipedEquipment.Count(r => r.Info == r_Owner.Info && r.Level == Key.Level && r.Proficiency == Key.Proficiency);
        }
 internal void Update(Ship rpShip, EquipmentGroupingKey rpLevel) => r_LevelMap[rpLevel].Update(rpShip);