void UpdateCore() { if (r_SelectAllTypes.HasValue && !r_SelectAllTypes.Value) Ships = null; else { r_Ships = KanColleGame.Current.Port.Ships.Values.Select(r => { ShipViewModel rResult; if (!r_ShipVMs.TryGetValue(r.ID, out rResult)) rResult = new ShipViewModel(r, r_TypeMap[r.Info.Type]); return rResult; }).ToArray(); var rShips = r_Ships.Where(r => r.Type.IsSelected) .Where(r => !ExceptExpeditionShips || (r.Ship.State & ShipState.Expedition) == 0) .Where(r => !ExceptSparklingShips || (r.Ship.Condition < 50)) .Where(r => !ExceptLevel1Ships || (r.Ship.Level > 1)); switch (r_SortingColumn) { case "ID": rShips = rShips.OrderBy(r => r.Ship.ID); break; case "Name": rShips = rShips.OrderBy(r => r.Ship.Info.Name); break; case "ShipLocking": rShips = rShips.OrderByDescending(r => r.Ship.RawData.LockingTag != 0).ThenBy(r => r.Ship.RawData.LockingTag); break; case "Level": rShips = rShips.OrderByDescending(r => r.Ship.Level).ThenBy(r => r.Ship.ExperienceToNextLevel); break; case "Condition": rShips = rShips.OrderByDescending(r => r.Ship.Condition); break; case "Firepower": rShips = rShips.OrderByDescending(r => r.Ship.Status.FirepowerBase.Current); break; case "Torpedo": rShips = rShips.OrderByDescending(r => r.Ship.Status.TorpedoBase.Current); break; case "AA": rShips = rShips.OrderByDescending(r => r.Ship.Status.AABase.Current); break; case "Armor": rShips = rShips.OrderByDescending(r => r.Ship.Status.ArmorBase.Current); break; case "Luck": rShips = rShips.OrderByDescending(r => r.Ship.Status.LuckBase.Current); break; case "Evasion": rShips = rShips.OrderByDescending(r => r.Ship.Status.Evasion); break; case "ASW": rShips = rShips.OrderByDescending(r => r.Ship.Status.ASW); break; case "LoS": rShips = rShips.OrderByDescending(r => r.Ship.Status.LoS); break; case "RepairTime": rShips = rShips.OrderByDescending(r => r.Ship.RepairTime); break; } Ships = rShips.ToArray().AsReadOnly(); } OnPropertyChanged(nameof(Ships)); IsLoading = false; }
void UpdateCore() { if (r_SelectAllTypes.HasValue && !r_SelectAllTypes.Value) { Ships = null; } else { r_Ships = KanColleGame.Current.Port.Ships.Values.Select(r => { ShipViewModel rResult; if (!r_ShipVMs.TryGetValue(r.ID, out rResult)) { rResult = new ShipViewModel(r, r_TypeMap[r.Info.Type]); } return(rResult); }).ToArray(); var rShips = r_Ships.Where(r => r.Type.IsSelected) .Where(r => !ExceptExpeditionShips || (r.Ship.State & ShipState.Expedition) == 0) .Where(r => !ExceptSparklingShips || (r.Ship.Condition < 50)) .Where(r => !ExceptLevel1Ships || (r.Ship.Level > 1)); switch (r_SortingColumn) { case "ID": rShips = rShips.OrderBy(r => r.Ship.ID); break; case "Name": rShips = rShips.OrderBy(r => r.Ship.Info.Name); break; case "ShipLocking": rShips = rShips.OrderByDescending(r => r.Ship.RawData.LockingTag != 0).ThenBy(r => r.Ship.RawData.LockingTag); break; case "Level": rShips = rShips.OrderByDescending(r => r.Ship.Level).ThenBy(r => r.Ship.ExperienceToNextLevel); break; case "Condition": rShips = rShips.OrderByDescending(r => r.Ship.Condition); break; case "Firepower": rShips = rShips.OrderByDescending(r => r.Ship.Status.FirepowerBase.Current); break; case "Torpedo": rShips = rShips.OrderByDescending(r => r.Ship.Status.TorpedoBase.Current); break; case "AA": rShips = rShips.OrderByDescending(r => r.Ship.Status.AABase.Current); break; case "Armor": rShips = rShips.OrderByDescending(r => r.Ship.Status.ArmorBase.Current); break; case "Luck": rShips = rShips.OrderByDescending(r => r.Ship.Status.LuckBase.Current); break; case "Evasion": rShips = rShips.OrderByDescending(r => r.Ship.Status.Evasion); break; case "ASW": rShips = rShips.OrderByDescending(r => r.Ship.Status.ASW); break; case "LoS": rShips = rShips.OrderByDescending(r => r.Ship.Status.LoS); break; case "RepairTime": rShips = rShips.OrderByDescending(r => r.Ship.RepairTime); break; } Ships = rShips.ToArray().AsReadOnly(); } OnPropertyChanged(nameof(Ships)); IsLoading = false; }