Example #1
0
        private CombinedFleetViewModel MakeCombinedFleetViewModel(CombinedFleet fleet)
        {
            if (combinedFleetInstance == null || combinedFleetInstance.Source != fleet)
            {
                combinedFleetInstance = new CombinedFleetViewModel(fleet);
            }

            return(combinedFleetInstance);
        }
		private void UpdateFleets()
		{
			// ややこしいけど、CombinedFleetViewModel は連合艦隊が編成・解除される度に使い捨て
			// FleetViewModel は InitializeFleets() で作ったインスタンスをずっと使う

			foreach (var f in this.Fleets.OfType<CombinedFleetViewModel>()) f.Dispose();

			if (KanColleClient.Current.Homeport.Organization.Combined)
			{
				var cfvm = new CombinedFleetViewModel(KanColleClient.Current.Homeport.Organization.CombinedFleet);
				var fleets = this.allFleets.Where(x => cfvm.Source.Fleets.All(f => f != x.Source));

				this.Fleets = EnumerableEx.Return<ItemViewModel>(cfvm).Concat(fleets).ToArray();
				this.SelectedFleet = cfvm;
			}
			else
			{
				this.Fleets = this.allFleets.OfType<ItemViewModel>().ToArray();

				if (this.allFleets.All(x => x != this.SelectedFleet))
				{
					// SelectedFleet が allFleets の中のどれでもないとき
					// -> SelectedFleet は連合艦隊だったので、改めて第一艦隊を選択
					this.SelectedFleet = this.Fleets.FirstOrDefault();
				}
			}
		}