Inheritance: IDisposable
コード例 #1
0
ファイル: ViewModel.cs プロジェクト: nagyist/ToddlerAddition
        public static ViewModel CreateAddition(int max)
        {
            var count = Random.Next (2, max + 1);
            var first = Random.Next (1, count);
            var second = count - first;
            var vm = new ViewModel ();
            var itemImage = ItemHelper.Next ();
            var itemTitle = System.IO.Path.GetFileNameWithoutExtension (itemImage);
            Enumerable.Range (1, first).ForEach (x => {
                vm.FirstItems.Add(new Item{
                    Image = itemImage,
                    Title = itemTitle,
                    Selected = (i)=>	{
                        SoundPlayer.Speak(i.Count);
                        vm.FirstActivated();
                        vm.Update();
                    }
                });
            });

            Enumerable.Range (1, second).ForEach (x => {
                vm.SecondItems.Add(new Item{
                    Image = itemImage,
                    Title = itemTitle,
                    Selected = (i)=>	{
                        SoundPlayer.Speak(i.Count);
                        vm.SecondActivated();
                        vm.Update();
                    }
                });
            });

            return vm;
        }
コード例 #2
0
		void newModel()
		{
			if (model != null)
				model.Dispose ();

			model = ViewModel.CreateAddition (10);
			model.Finished = finished;
			view.SetupModel (model);
			SoundPlayer.SpeakIntro ();
			
		}
コード例 #3
0
			public void SetupModel(ViewModel model)
			{
				this.model = model;
				firstCard.Clear ();
				secondCard.Clear ();
				totalView.Clear ();

				firstCard.Items = model.FirstItems.Select (x => new ItemView (x) {
					Tapped = (i) => {
						i.Select (model.FirstCount);
					},
				}).ToList ();
				secondCard.Items = model.SecondItems.Select (x => new ItemView (x) {
					Tapped = (i)=>{
						i.Select(model.SecondCount);
					},
				}).ToList();
				model.FirstActivated = () => {
					secondCard.Lock();
					firstCard.Activated ();
				};
				model.FirstCompleted = (i) => {
					firstCard.Completed(i);
					secondCard.Activated();
				};
				model.SecondActivated = () => {
					secondCard.Activated();
					firstCard.Lock();
				};
				model.SecondCompleted = (i) => {
					secondCard.Completed(i);
					firstCard.Activated();
				};
				model.OneCompleted = async () => {
					await Task.Delay(1000);
					PulseOperator();
					SoundPlayer.SpeakPlus();
				};
			}
コード例 #4
0
			public void SetupModel(ViewModel model)
			{
				this.model = model;
				firstCard.Clear ();
				secondCard.Clear ();
				totalView.Clear ();
				HideNumbers ();
				firstCard.Items = model.FirstItems.Select (x => new ItemView (x) {
					Tapped = (i) => {
						i.Select (model.FirstCount);
					},
				}).ToList ();
				secondCard.Items = model.SecondItems.Select (x => new ItemView (x) {
					Tapped = (i)=>{
						i.Select(model.SecondCount);
					},
				}).ToList();
				model.FirstActivated = () => {
					secondCard.Lock();
					firstCard.Activated ();
				};
				model.FirstCompleted = (i) => {
					firstCard.Completed(i);
					secondCard.Activated();
				};
				model.SecondActivated = () => {
					secondCard.Activated();
					firstCard.Lock();
				};
				model.SecondCompleted = (i) => {
					secondCard.Completed(i);
					firstCard.Activated();
				};
				model.OneCompleted = async () => {
					await Task.Delay(1000);
					if(!model.AreBothFinished()){
						PulseOperator();
						SoundPlayer.SpeakPlus();
					}
					else if(model.Level == 1)
					{
						await SoundPlayer.SpeakQuestion();
						totalView.Activated();
					}
					else
					{
						await SoundPlayer.SpeakQuestion();
						ShowNumbers();
					}
				};
				model.FlipTotal = () => {
					UpdateTotal();
				};
				model.WrongValue = () => {
					//TODO: play error
				};

			}