internal SortieConsumptionRecord(SQLiteDataReader rpReader) : base(rpReader) { ID = rpReader.GetInt64("id"); var rMapMaxHP = rpReader.GetInt32Optional("map_max_hp"); if (rMapMaxHP.HasValue) { var rMapHP = rpReader.GetInt32Optional("map_hp"); if (rMapHP.HasValue) MapHP = new ClampedValue(rMapMaxHP.Value, rMapHP.Value); } Fuel = rpReader.GetInt32("fuel"); Bullet = rpReader.GetInt32("bullet"); Steel = rpReader.GetInt32("steel"); Bauxite = rpReader.GetInt32("bauxite"); Bucket = rpReader.GetInt32("bucket"); RankingPoint = rpReader.GetDoubleOptional("ranking_point"); }
protected override void OnRawDataUpdated() { ShipInfo rInfo; if (!KanColleGame.Current.MasterInfo.Ships.TryGetValue(RawData.ShipID, out rInfo)) { Info = ShipInfo.Dummy; } else { if (Info?.ID != RawData.ShipID) { r_EquipmentIDs = null; r_Slots = null; } Info = rInfo; OnPropertyChanged(nameof(Info)); } HP = new ClampedValue(RawData.HPMaximum, RawData.HPCurrent); Fuel = new ClampedValue(Info.MaxFuelConsumption, RawData.Fuel); Bullet = new ClampedValue(Info.MaxBulletConsumption, RawData.Bullet); Condition = RawData.Condition; var rPort = KanColleGame.Current.Port; if (KanColleGame.Current.Sortie != null && rPort.EvacuatedShipIDs.Contains(ID)) { State |= ShipState.Evacuated; } else { State &= ~ShipState.Evacuated; } if (rPort.RepairDocks.Values.Any(r => r.Ship == this)) { State |= ShipState.Repairing; } else { State &= ~ShipState.Repairing; var rShips = OwnerFleet?.AnchorageRepair.RepairingShips; UpdateAnchorageRepairStatus(rShips != null && rShips.Any(r => r.Item1 == this)); } if (RawData.ModernizedStatus?.Length >= 5) { Status.Update(Info, RawData); } if (RawData.Equipment != null) { UpdateSlots(); } CombatAbility.Update(); IsLocked = RawData.IsLocked; OnPropertyChanged(nameof(Level)); OnPropertyChanged(nameof(ExperienceToNextLevel)); OnPropertyChanged(nameof(Status)); }