private void BounceCount_OnValidate(Observable obs) { ObservableInt observable = obs as ObservableInt; // Optional, if you want to correct the values //observable.Value = Mathf.Clamp(observable.Value, 0, 10); }
private void MainModel_OnBounceCountChanged(Observable obs) { // 1 Controller: Responsible to observe the (somewhat "local") event ObservableInt observable = obs as ObservableInt; int bounceCountMax = _mainModel.MainConfigData.BounceCountMax; // 2 Controller: Responsible handle the consequence // Reset the count here, this is a contrived example // of a Controller mitigating changes to a Model if (observable.Value > bounceCountMax) { Debug.Log($"BounceCountMax of {bounceCountMax} reached. Reset count."); _mainModel.BounceCount.Value = 0; _mainModel.BouncyBallView.ResetBouncyBall(_mainModel.MainConfigData.InitialBouncyBallPosition, true, 1); return; } // 3 Controller: Responsible to play sounds Context.CommandManager.InvokeCommand( new PlayAudioClipCommand(MyBouncyBallExampleConstants.AudioIndexBounce)); // 4 Controller: Responsible dispatch the (somewhat "global") command Context.CommandManager.InvokeCommand( new BounceCountChangedCommand(observable.PreviousValue, observable.Value)); }
public void TestInterfaceArray() { IObservableNumericValue[] array = new IObservableNumericValue[5]; array[0] = new ObservableInt { Value = 1, Min = -1, Max = 1 }; array[1] = new ObservableFloat { Value = 1.0f, Min = -1.0f, Max = 2.0f }; array[2] = new ObservableDouble { Value = 1.5d, Min = -1.5d, Max = 2.0d }; array[3] = new ObservableInt { Value = 1, Min = -1, Max = 1 }; array[4] = new ObservableFloat { Value = 1.0f, Min = -1.0f, Max = 1.0f }; foreach (IObservableNumericValue val in array) { Assert.IsFalse(val.Over()); Assert.IsFalse(val.Under()); Assert.IsTrue(val.Stable()); } }
public void TestCollection() { ObservableNumericValueCollection collection = new ObservableNumericValueCollection(); ObservableInt oInt = new ObservableInt { Value = 1, Min = -1, Max = 1 }; collection.Add(oInt); Assert.AreEqual(1, collection.Count); Assert.AreEqual(1, collection.Get(0).Value); Console.WriteLine(collection.Get(0).Value); collection.Add(oInt); Assert.AreEqual(2, collection.Count); Assert.AreEqual(1, collection[1].Value); Console.WriteLine(collection[1].Value); Console.WriteLine(collection[1].Value.GetType()); collection[0].Value = 0; foreach (IObservableNumericValue val in collection) { Console.WriteLine(val.Value); } }
public void TestIndexOf() { ObservableNumericValueCollection collection = new ObservableNumericValueCollection(); ObservableInt oInt = new ObservableInt { Label = "int1", Value = 1, Min = -1, Max = 1 }; ObservableInt oInt2 = new ObservableInt { Value = 2, Min = -1, Max = 1 }; ObservableInt dontContain = new ObservableInt { Value = 3, Min = -1, Max = 1 }; collection.Add(oInt); collection.Add(oInt2); // This is a new observable int that is not added to the list, but has a label and value that exists ObservableInt checkExists = new ObservableInt { Label = "int1", Value = 1, Min = -1, Max = 1 }; Assert.AreEqual(0, collection.IndexOf(oInt)); Assert.AreEqual(0, collection.IndexOf(checkExists)); Assert.AreEqual(1, collection.IndexOf(oInt2)); Assert.AreEqual(-1, collection.IndexOf(dontContain)); }
public void TestCollectionInsert() { ObservableNumericValueCollection collection = new ObservableNumericValueCollection(); ObservableInt oInt = new ObservableInt { Value = 1, Min = -1, Max = 1 }; ObservableInt oInt2 = new ObservableInt { Value = 2, Min = -1, Max = 1 }; ObservableInt oInt3 = new ObservableInt { Value = 3, Min = -1, Max = 1 }; ObservableFloat oFloat = new ObservableFloat { Value = 4.0f, Min = -1.0f, Max = 1.0f }; collection.Add(oInt); collection.Add(oInt2); collection.Add(oInt3); collection.Insert(1, oFloat); Assert.AreEqual(1, collection[0].Value); Assert.AreEqual(4.0f, collection[1].Value); Assert.AreEqual(2, collection[2].Value); Assert.AreEqual(3, collection[3].Value); }
private void InitUiModels() { StylesVariationList = new ObservableCollection <ImageItem>(); StylesVariationListSelectedId = new ObservableInt { Number = -1 }; StylesVariationListSelectedItem = new ObservableImageItem(); CurrentVariantCategory = new ObservableString(); CurrentVariantCategoryId = new ObservableInt { Number = -1 }; VariantsCategory = new ObservableCollection <string>(); SelectedFontId = new ObservableInt(); SelectedFontFamily = new ObservableFont(); StylesPreviewList = new ObservableCollection <ImageItem>(); StylesPreviewListSelectedId = new ObservableInt { Number = -1 }; StylesPreviewListSelectedItem = new ObservableImageItem(); ImageSelectionList = new ObservableCollection <ImageItem>(); ImageSelectionList.Add(CreateChoosePicturesItem()); Settings = StoragePath.LoadSettings(); if (StoragePath.IsFirstTimeUsage()) { Logger.Log("First time use PSL"); ImageSelectionList.Add(CreateSamplePic1Item()); ImageSelectionList.Add(CreateSamplePic2Item()); } else { var loadedImageSelectionList = StoragePath.LoadPictures(); foreach (var item in loadedImageSelectionList) { if (item.FullSizeImageFile == null && item.BackupFullSizeImageFile != null) { item.FullSizeImageFile = item.BackupFullSizeImageFile; } else if (item.FullSizeImageFile == null && item.BackupFullSizeImageFile == null) { Logger.Log("Corrupted picture found. To be removed"); continue; } ImageSelectionList.Add(item); } } ImageSelectionListSelectedId = new ObservableInt { Number = -1 }; ImageSelectionListSelectedItem = new ObservableImageItem(); IsActiveDownloadProgressRing = new ObservableBoolean { Flag = false }; }
public void TestConainsLabel() { ObservableNumericValueCollection collection = new ObservableNumericValueCollection(); ObservableInt oInt = new ObservableInt { Label = "int1", Value = 1, Min = -1, Max = 1 }; collection.Add(oInt); Assert.IsTrue(collection.ContainsLabel("int1")); Assert.IsFalse(collection.ContainsLabel("iDoNotExist")); }
static void Main(string[] args) { ObservableInt a = new ObservableInt(6); Console.WriteLine(a.Value); using (var scope = new TransactionScope()) { a.Increment(7); //scope.Complete(); Console.WriteLine(a.Value); } Console.WriteLine(a.Value); }
private void MainModel_OnBounceCountChanged(Observable obs) { ObservableInt observable = obs as ObservableInt; // Reset the count here, this is a contrived example // of a Controller mitigating changes to a Model if (observable.Value > _mainModel.MainConfigData.BounceCountMax) { _mainModel.BounceCount.Value = 0; return; } Context.CommandManager.InvokeCommand( new BounceCountChangedCommand(observable.PreviousValue, observable.Value)); }
public void TestStringIndexAccess() { ObservableNumericValueCollection collection = new ObservableNumericValueCollection(); ObservableInt oInt = new ObservableInt { Label = "int1", Value = 1, Min = -1, Max = 1 }; ObservableInt oInt2 = new ObservableInt { Value = 1, Min = -1, Max = 1 }; collection.Add(oInt); collection.Add(oInt2); Assert.AreEqual(oInt, collection["int1"]); }
public void TestEventHandler() { ObservableInt oInt = new ObservableInt { Label = "int1", Value = 1, Min = -1, Max = 1 }; oInt.OnUpdate((v) => { Console.WriteLine("Callback 1"); }); oInt.OnUpdate((v) => { Console.WriteLine("Callback 2"); }); oInt.Value = 4; }
public void TestGeneric() { ObservableInt a = new ObservableInt { Value = 2, Min = 0, Max = 3 }; ObservableFloat b = new ObservableFloat { Value = 2.0f, Min = 0.0f, Max = 3.0f }; Console.WriteLine(a.Over()); Assert.IsFalse(a.Over()); Assert.IsFalse(a.Under()); Assert.IsFalse(b.Over()); Assert.IsFalse(b.Under()); Assert.IsTrue(a.Stable()); Assert.IsTrue(b.Stable()); }
public void TestContains() { ObservableNumericValueCollection collection = new ObservableNumericValueCollection(); ObservableInt oInt = new ObservableInt { Value = 1, Min = -1, Max = 1 }; ObservableInt oInt2 = new ObservableInt { Value = 2, Min = -1, Max = 1 }; ObservableInt oInt3 = new ObservableInt { Value = 3, Min = -1, Max = 1 }; collection.Add(oInt); collection.Add(oInt2); collection.Add(oInt3); Assert.IsTrue(collection.Contains(oInt)); Assert.IsTrue(collection.Contains(oInt2)); Assert.IsTrue(collection.Contains(oInt3)); }
private void InitUiModels() { StylesVariationList = new ObservableCollection <ImageItem>(); StylesVariationListSelectedId = new ObservableInt { Number = -1 }; StylesVariationListSelectedItem = new ObservableImageItem(); CurrentVariantCategory = new ObservableString(); CurrentVariantCategoryId = new ObservableInt { Number = -1 }; VariantsCategory = new ObservableCollection <string>(); SelectedFontId = new ObservableInt(); SelectedFontFamily = new ObservableFont(); StylesPreviewList = new ObservableCollection <ImageItem>(); StylesPreviewListSelectedId = new ObservableInt { Number = -1 }; StylesPreviewListSelectedItem = new ObservableImageItem(); ImageSelectionList = new ObservableCollection <ImageItem>(); ImageSelectionList.Add(CreateChoosePicturesItem()); var loadedImageSelectionList = StoragePath.Load(); foreach (var item in loadedImageSelectionList) { ImageSelectionList.Add(item); } ImageSelectionListSelectedId = new ObservableInt { Number = -1 }; ImageSelectionListSelectedItem = new ObservableImageItem(); IsActiveDownloadProgressRing = new ObservableBoolean { Flag = false }; }