public IEnumerator Hooks_UseState_WrongValues() { var wordState = new UseState <string>("Hola a todos !!"); // A Component REcanvas MainReactorComponent() { return(new REcanvas { childs = () => new REbase[] { new REtext { propsId = () => new REtext.IdSetter { id = "ProveText" }, propsText = () => new REtext.TextSetter { text = wordState.value, }, useState = new IuseState[] { wordState, }, }, }, }); } var routerProve = MainReactorComponent(); yield return(new WaitForSecondsRealtime(1)); routerProve.Draw(); Assert.IsTrue(REtext.FindOne("#ProveText").textCmp.text == "Hola a todos !!"); yield return(new WaitForSecondsRealtime(1)); wordState.SetState("NewWord"); Assert.IsTrue(REtext.FindOne("#ProveText").textCmp.text == "NewWord"); wordState.SetState("OtherWord"); Assert.IsTrue(REtext.FindOne("#ProveText").textCmp.text == "OtherWord"); wordState.PrevState(0); Assert.IsTrue(REtext.FindOne("#ProveText").textCmp.text == "OtherWord"); wordState.SetState("OtherWord"); wordState.SetState("Word"); wordState.SetState("LastWord"); wordState.SetState("FinalWord"); Assert.IsTrue(REtext.FindOne("#ProveText").textCmp.text == "FinalWord"); wordState.PrevState(-1); Assert.IsTrue(REtext.FindOne("#ProveText").textCmp.text == "FinalWord"); wordState.PrevState(-2); Assert.IsTrue(REtext.FindOne("#ProveText").textCmp.text == "FinalWord"); wordState.PrevState(-10); Assert.IsTrue(REtext.FindOne("#ProveText").textCmp.text == "FinalWord"); wordState.PrevState(-2); Assert.IsTrue(REtext.FindOne("#ProveText").textCmp.text == "FinalWord"); yield return(new WaitForSecondsRealtime(2)); routerProve.Erase(); }
private UseState() { if (_instance != null) { return; } _instance = this; }
public void Use(BodyInterface user) { if (this.state == UseState.Unused) { Debug.Log("Using"); this.user = user; user.NavSetTarget(this.navTarget.position); this.state = UseState.Approaching; } }
private void Awake() { sleepState = new SleepState(this); outState = new OutState(this); useState = new UseState(this); wanderState = new WanderState(this); timesRefused = 1; navMeshAgent = GetComponent <NavMeshAgent>(); time = clock.GetComponent <DigitalGameTimeClock>().currentTime; prefKeys = new float[activities.Length]; SortPreferences(); }
public IEnumerator Hooks_GenerateChildWithUseState_NotInitializatingTheHook() { var listState = new UseState <List <string> >(); // <-- Not create a new list // A Component REcanvas MainReactorComponent() { return(new REcanvas { propsId = () => new REcanvas.IdSetter { id = "MainCanvas", }, useState = new IuseState[] { listState, }, childs = () => listState.value.Select(c => new REtext { propsId = () => new REtext.IdSetter { id = c + "Num", }, propsText = () => new REtext.TextSetter { text = c, } } ), }); } var routerProve = MainReactorComponent(); yield return(new WaitForSecondsRealtime(1)); // Draw the component Debug.Log("Drawing"); routerProve.Draw(); yield return(new WaitForSecondsRealtime(2)); routerProve.Erase(); }
public IEnumerator Hooks_UseStateUseEffect() { var wordState = new UseState <string>("Hola a todos !!"); // A Component REcanvas MainReactorComponent() { return(new REcanvas { childs = () => new REbase[] { new REtext { propsId = () => new REtext.IdSetter { id = "Textmain", }, propsText = () => new REtext.TextSetter { text = wordState.value, }, useState = new IuseState[] { wordState, }, useEffect = new REtext.UseEffect.Hook[] { new REtext.UseEffect.Hook { duration = 3, deltaFunction = (d, s) => wordState.SetState("A new word"), } } }, }, }); } var routerProve = MainReactorComponent(); routerProve.Draw(); // Waint until useeffect act yield return(new WaitForSecondsRealtime(4)); // Find the component Assert.IsTrue(REtext.FindOne("#Textmain").textCmp.text == "A new word"); yield return(null); }
private IEnumerator UseCR() { CircleCollider2D coll = puncher.GetComponent <CircleCollider2D>(); state = UseState.Extending; float distance = 0; while (state == UseState.Extending) { distance += outSpeed * Time.deltaTime; if (distance > punchDistance) { state = UseState.Retracting; distance = punchDistance; } puncher.transform.localPosition = Vector2.up * distance; yield return(null); } coll.enabled = false; while (state == UseState.Retracting) { distance -= inSpeed * Time.deltaTime; if (distance < 0) { state = UseState.CoolingDown; distance = 0; } puncher.transform.localPosition = Vector2.up * distance; yield return(null); } coll.enabled = true; float cooldownTimer = cooldown; while (!ProcessCooldown(ref cooldownTimer)) { yield return(null); } state = UseState.NotInUse; }
private IEnumerator Spin() { state = UseState.Spinning; Rigidbody2D rBody = owner.Rigidbody; owner.controllable = false; rBody.AddForce(owner.transform.up * useImpulse, ForceMode2D.Impulse); float totalRotation = 0; float startRotation = rBody.rotation; while (Mathf.Abs(totalRotation) < spinAmount) { totalRotation += spinSpeed * Time.deltaTime; if (Mathf.Abs(totalRotation) > spinAmount) { totalRotation = Mathf.Sign(totalRotation) * spinAmount; } rBody.MoveRotation(startRotation + totalRotation); yield return(null); } owner.controllable = true; state = UseState.CoolingDown; if (breakWhenDone) { Break(breakSource); } else { float cooldownTimer = cooldown; while (!ProcessCooldown(ref cooldownTimer)) { yield return(null); } state = UseState.NotInUse; } }
public IEnumerator Hooks_GenerateChildWith_ButThrowError() { var listState = new UseState <List <string> >(); // <-- Not create a new list // A Component REcanvas MainReactorComponent() { return(new REcanvas { propsId = () => new REcanvas.IdSetter { id = "MainCanvas", }, useState = new IuseState[] { listState, }, childs = () => throw new Exception("Expected exception"), }); }
protected override void OnCollisionEnter2D(Collision2D collision) { Debug.Log(this.gameObject.name + " Glove"); base.OnCollisionEnter2D(collision); if (state == UseState.Extending) { state = UseState.Retracting; Rigidbody2D collBody = collision.gameObject.GetComponent <Rigidbody2D>(); if (collBody != null) { ContactPoint2D[] contacts = new ContactPoint2D[100]; int numContacts = collision.GetContacts(contacts); if (numContacts > 0) { ContactPoint2D cp = contacts[0]; collBody.AddForceAtPosition(this.transform.up * punchForce, cp.point, ForceMode2D.Impulse); CollisionBurstManager.Instance.CreateBurst(cp.point, this.transform.up * outSpeed); } } } }
public IEnumerator Hooks_UseState_GenerateChildWithUseState_ManualTriggerToChange() { var listState = new UseState <List <string> >(new List <string>()); // A Component REcanvas MainReactorComponent() { return(new REcanvas { propsId = () => new REcanvas.IdSetter { id = "MainCanvas", }, useState = new IuseState[] { listState, }, childs = () => listState.value.Select(c => new REtext { propsId = () => new REtext.IdSetter { id = c + "Num", }, propsText = () => new REtext.TextSetter { text = c, } } ), }); } var routerProve = MainReactorComponent(); yield return(new WaitForSecondsRealtime(1)); // Draw the component Debug.Log("Drawing"); routerProve.Draw(); // First check Debug.Log("Childs: " + REbase.FindOne("#MainCanvas").childs.Length); Assert.IsTrue(REbase.FindOne("#MainCanvas").childs.Length == 0); // usestate the component adding elements to the list manually Debug.Log("UseState: " + listState.value.Count()); listState.value.Add("Dog"); listState.value.Add("Cat"); // Check, childs are 0, because the useState will not trigger if .SetState is not used Debug.Log("Childs: " + REbase.FindOne("#MainCanvas").childs.Length); Assert.IsTrue(REbase.FindOne("#MainCanvas").childs.Length == 0); // But can be triggered manually listState.Trigger(); // Check, childs are 2, because the useState will not trigger if .SetState is not used Debug.Log("Childs: " + REbase.FindOne("#MainCanvas").childs.Length); Assert.IsTrue(REbase.FindOne("#MainCanvas").childs.Length == 2); yield return(new WaitForSecondsRealtime(2)); routerProve.Erase(); }
public IEnumerator Hooks_GenerateChildWithUseState() { var listState = new UseState <List <string> >(new List <string>()); // A Component REcanvas MainReactorComponent() { return(new REcanvas { propsId = () => new REcanvas.IdSetter { id = "MainCanvas", }, useState = new IuseState[] { listState, }, childs = () => listState.value.Select(c => new REtext { propsId = () => new REtext.IdSetter { id = c + "Num", }, propsText = () => new REtext.TextSetter { text = c, } } ), }); } var routerProve = MainReactorComponent(); yield return(new WaitForSecondsRealtime(1)); // Draw the component Debug.Log("Drawing"); routerProve.Draw(); // First check Debug.Log("Childs: " + REbase.FindOne("#MainCanvas").childs.Length); Assert.IsTrue(REbase.FindOne("#MainCanvas").childs.Length == 0); // Simulate the fetch yield return(new WaitForSecondsRealtime(1)); var fetchData = new List <string> { "Six", "Seven", "Eight", "Nine", }; // Draw again the component Debug.Log("UseState: " + listState.value.Count()); listState.SetState(fetchData); // Check Debug.Log("Childs: " + REbase.FindOne("#MainCanvas").childs.Length); Assert.IsTrue(REbase.FindOne("#MainCanvas").childs.Length == 4); Debug.Log("Childs"); foreach (var word in listState.value) { //Debug.Log("Child: " + "#" + word + "Num" + " == " + word); //Debug.Log("Child: " + ReactorElement.Find<REtext.Selector>("#" + word + "Num")[0].textCmp.text + " == " + word); Assert.IsTrue(REtext.FindOne("#" + word + "Num").textCmp.text == word); } yield return(new WaitForSecondsRealtime(2)); routerProve.Erase(); }
private REcanvas ConsoleView() { var addChildToConsole = new UseAddChilds(); var textAddedTrigger = new UseTrigger(); var deleteAllTrigger = new UseTrigger(); var copyTextTrigger = new UseTrigger(); string inputText = ""; REbase TextChild(string text) { string displayText = text; var editMode = new UseState <bool>(false); return(new REbox { propsRectTransform = () => new REbox.RectTransformSetter { height = 200, width = 800, }, childs = () => new REbase[] { new REpanelHorizontal { childs = () => { return new REbase[] { new REbox { propsRectTransform = () => new REbox.RectTransformSetter { width = 400, height = 200, }, useState = new IuseState[] { editMode, }, childs = () => { if (editMode.value) { return new REbase[] { new REinputField { propsInputField = () => new REinputField.InputFieldSetter { text = displayText, OnValueChangedListener = (v, s) => { displayText = v; } }, }, }; } else { return new REbase[] { new RElabel { propsText = () => new RElabel.TextSetter { text = displayText, }, }, }; } } }, new REbutton { propsText = () => { if (editMode.value) { return new REbutton.TextSetter { text = "Save" } } ; else { return new REbutton.TextSetter { text = "Edit" } }; }, propsButton = () => new REbutton.ButtonSetter { OnClickListener = (s) => { editMode.SetState(!editMode.value); } }, useState = new IuseState[] { editMode, }, }, new REbutton { propsText = () => new REbutton.TextSetter { text = "Copy", }, propsButton = () => new REbutton.ButtonSetter { OnClickListener = (s) => { inputText = displayText; copyTextTrigger.Trigger(); } }, }, new REbutton { propsText = () => new REbutton.TextSetter { text = "Delete", }, propsButton = () => new REbutton.ButtonSetter { OnClickListener = (s) => { Debug.Log(s.parent.parent.elementId.elementType + " r " + s.parent.parent.parent.childs.Length); s.parent.parent.Erase(); } }, }, }; } }, } });
/// <summary> /// /// </summary> /// <param name="useState"></param> /// <returns></returns> public bool Add(UseState useState) { this.context.UseState.Add(useState); this.context.SaveChanges(); return(true); }
public IEnumerator Hooks_UseState_InHidedCanvas() { var alphaState = new UseState <float>(0f); // A Component REcanvas MainReactorComponent() { return(new REcanvas { propsId = () => new REcanvas.IdSetter { id = "ProveCanvas" }, propsCanvasGroup = () => new REcanvas.CanvasGroupSetter { alpha = alphaState.value, }, useState = new IuseState[] { alphaState, }, childs = () => new REbase[] { new REtext(), }, }); } var routerProve = MainReactorComponent(); yield return(new WaitForSecondsRealtime(1)); // Drawing the component Debug.Log("Drawing"); routerProve.Draw(); Assert.IsTrue(REcanvas.FindOne("#ProveCanvas").canvasGroup.alpha == 0f); yield return(new WaitForSecondsRealtime(1)); // Hide the element routerProve.Hide(); Assert.IsFalse(REbase.FindOne("#ProveCanvas").rootCanvasSelector.canvas.enabled); // Change the states alphaState.SetState(.33f); Assert.IsTrue(REcanvas.FindOne("#ProveCanvas").canvasGroup.alpha == .33f); Assert.IsFalse(REcanvas.FindOne("#ProveCanvas").rootCanvasSelector.canvas.enabled); alphaState.SetState(.66f); Assert.IsTrue(REcanvas.FindOne("#ProveCanvas").canvasGroup.alpha == .66f); Assert.IsFalse(REcanvas.FindOne("#ProveCanvas").rootCanvasSelector.canvas.enabled); alphaState.PrevState(); Assert.IsTrue(REcanvas.FindOne("#ProveCanvas").canvasGroup.alpha == .33f); Assert.IsFalse(REcanvas.FindOne("#ProveCanvas").rootCanvasSelector.canvas.enabled); // Enable and check routerProve.Show(); Assert.IsTrue(REcanvas.FindOne("#ProveCanvas").canvasGroup.alpha == .33f); Assert.IsTrue(REcanvas.FindOne("#ProveCanvas").rootCanvasSelector.canvas.enabled); yield return(new WaitForSecondsRealtime(2)); routerProve.Erase(); }
public IEnumerator Hooks_UseState_VariableNumberOfStates() { var wordState = new UseState <string>("Hola a todos !!"); var fontSizeState = new UseState <int>(20); // A Component REcanvas MainReactorComponent() { return(new REcanvas { childs = () => new REbase[] { new REtext { propsId = () => new REtext.IdSetter { id = "ProveText" }, propsText = () => new REtext.TextSetter { text = wordState.value, fontSize = fontSizeState.value, }, useState = new IuseState[] { wordState, fontSizeState, }, }, }, }); } var routerProve = MainReactorComponent(); yield return(new WaitForSecondsRealtime(1)); // Draw the component routerProve.Draw(); Debug.Log("Check"); Assert.IsTrue(REtext.FindOne("#ProveText").textCmp.text == "Hola a todos !!"); yield return(new WaitForSecondsRealtime(1)); // Erase the component routerProve.Erase(); wordState.SetState("NewWord"); wordState.SetState("OtherWord"); fontSizeState.SetState(23); wordState.PrevState(); wordState.SetState("OtherWord"); fontSizeState.SetState(44); wordState.SetState("Word"); wordState.SetState("LastWord"); fontSizeState.SetState(39); wordState.SetState("FinalWord"); fontSizeState.SetState(34); // Draw the component again routerProve.Draw(); Debug.Log("Check"); Assert.IsTrue(REtext.FindOne("#ProveText").textCmp.text == "FinalWord"); yield return(new WaitForSecondsRealtime(2)); routerProve.Erase(); }
public IEnumerator Hooks_UseState_InDisabledElements() { var wordState = new UseState <string>("Hola a todos !!"); // A Component REcanvas MainReactorComponent() { return(new REcanvas { childs = () => new REbase[] { new REtext { propsId = () => new REtext.IdSetter { id = "ProveText" }, propsText = () => new REtext.TextSetter { text = wordState.value, }, useState = new IuseState[] { wordState, }, }, }, }); } var routerProve = MainReactorComponent(); yield return(new WaitForSecondsRealtime(1)); // Drawing the component Debug.Log("Drawing"); routerProve.Draw(); Assert.IsTrue(REtext.FindOne("#ProveText").textCmp.text == "Hola a todos !!"); yield return(new WaitForSecondsRealtime(1)); // Hide the element routerProve.Disable(); Assert.IsFalse(REbase.FindOne("#ProveText").gameObject.activeInHierarchy); // Change the states wordState.SetState("NewWord"); Debug.Log("Check"); Assert.IsFalse(REbase.FindOne("#ProveText").gameObject.activeInHierarchy); Assert.IsTrue(REtext.FindOne("#ProveText").textCmp.text == "NewWord"); wordState.SetState("OtherWord"); Debug.Log("Check"); Assert.IsFalse(REbase.FindOne("#ProveText").gameObject.activeInHierarchy); Assert.IsTrue(REtext.FindOne("#ProveText").textCmp.text == "OtherWord"); wordState.PrevState(); Debug.Log("Check"); Assert.IsFalse(REbase.FindOne("#ProveText").gameObject.activeInHierarchy); Assert.IsTrue(REtext.FindOne("#ProveText").textCmp.text == "NewWord"); wordState.SetState("OtherWord"); wordState.SetState("Word"); wordState.SetState("LastWord"); wordState.SetState("FinalWord"); Debug.Log("Check"); Assert.IsFalse(REbase.FindOne("#ProveText").gameObject.activeInHierarchy); Assert.IsTrue(REtext.FindOne("#ProveText").textCmp.text == "FinalWord"); wordState.PrevState(1); Debug.Log("Check"); Assert.IsFalse(REbase.FindOne("#ProveText").gameObject.activeInHierarchy); Assert.IsTrue(REtext.FindOne("#ProveText").textCmp.text == "LastWord"); wordState.PrevState(2); Debug.Log("Check"); Assert.IsFalse(REbase.FindOne("#ProveText").gameObject.activeInHierarchy); Assert.IsTrue(REtext.FindOne("#ProveText").textCmp.text == "OtherWord"); wordState.PrevState(10); Debug.Log("Check"); Assert.IsFalse(REbase.FindOne("#ProveText").gameObject.activeInHierarchy); Assert.IsTrue(REtext.FindOne("#ProveText").textCmp.text == "Hola a todos !!"); wordState.PrevState(); Debug.Log("Check"); Assert.IsFalse(REbase.FindOne("#ProveText").gameObject.activeInHierarchy); Assert.IsTrue(REtext.FindOne("#ProveText").textCmp.text == "Hola a todos !!"); Debug.Log("Check"); // Enable and check routerProve.Enable(); Assert.IsTrue(REbase.FindOne("#ProveText").gameObject.activeInHierarchy); Assert.IsTrue(REtext.FindOne("#ProveText").textCmp.text == "Hola a todos !!"); Debug.Log("Check"); yield return(new WaitForSecondsRealtime(2)); routerProve.Erase(); }
public override object Convert(object value, Type targetType, object parameter, CultureInfo culture) { var behavior = (parameter != null) ? ((parameter is PartBaseStateDenyReasonSetConverterBehavior) ? (PartBaseStateDenyReasonSetConverterBehavior)parameter : ValueContainer.CreateFromObject(parameter).GetValue <PartBaseStateDenyReasonSetConverterBehavior>(rethrow: false)) : default(PartBaseStateDenyReasonSetConverterBehavior); IBaseState baseState = (value as IBaseState).MapDefaultTo(BaseState.None); UseState useState = baseState.UseState; ConnState connState = baseState.ConnState; bool useStateIsBusy = (useState == UseState.OnlineBusy || useState == UseState.AttemptOnline); bool connStateIsBusy = (connState == ConnState.Connecting); bool connStateIsApplicable = (connState != ConnState.NotApplicable && connState != ConnState.Undefined); BaseState.ToStringSelect toStringSelect = BaseState.ToStringSelect.UseStateNoPrefix | BaseState.ToStringSelect.ConnState | ((useState == UseState.OnlineBusy) ? BaseState.ToStringSelect.ActionName : BaseState.ToStringSelect.Reason); switch (behavior) { case PartBaseStateDenyReasonSetConverterBehavior.IsFullyOnlineAndIdle: if (useStateIsBusy) { return("Part '{0}' is not idle: {1}".CheckedFormat(baseState.PartID, baseState.ToString(toStringSelect))); } else if (!useState.IsOnline(acceptAttemptOnline: false, acceptUninitialized: false, acceptOnlineFailure: false, acceptAttemptOnlineFailed: false)) { return("Part '{0}' is not online: {1}".CheckedFormat(baseState.PartID, baseState.ToString(toStringSelect))); } else if (!connState.IsConnected() && connStateIsApplicable) { return("Part '{0}' is not connected: {1}".CheckedFormat(baseState.PartID, baseState.ToString(toStringSelect))); } break; case PartBaseStateDenyReasonSetConverterBehavior.IsOnlineAndIdle: if (useStateIsBusy) { return("Part '{0}' is not idle: {1}".CheckedFormat(baseState.PartID, baseState.ToString(toStringSelect))); } else if (!useState.IsOnline(acceptAttemptOnline: false, acceptUninitialized: true, acceptOnlineFailure: true, acceptAttemptOnlineFailed: false)) { return("Part '{0}' is not online: {1}".CheckedFormat(baseState.PartID, baseState.ToString(toStringSelect))); } else if (!connState.IsConnected() && connStateIsApplicable) { return("Part '{0}' is not connected: {1}".CheckedFormat(baseState.PartID, baseState.ToString(toStringSelect))); } break; case PartBaseStateDenyReasonSetConverterBehavior.IsOnline: if (!useState.IsOnline(acceptAttemptOnline: true, acceptUninitialized: true, acceptOnlineFailure: true, acceptAttemptOnlineFailed: false)) { return("Part '{0}' is not online: {1}".CheckedFormat(baseState.PartID, baseState.ToString(toStringSelect))); } break; case PartBaseStateDenyReasonSetConverterBehavior.IsNotBusy: if (useStateIsBusy) { return("Part '{0}' is not idle: {1}".CheckedFormat(baseState.PartID, baseState.ToString(BaseState.ToStringSelect.AllForPart))); } break; default: return("Invalid requested conversion beahvior [{0}]".CheckedFormat(behavior)); } return(EmptyArrayFactory <string> .Instance); }
private REcanvas SingnInView() { string usernameText = ""; string passwordText = ""; User currentUser = null; string error = "Write your credentials"; bool rememberme = false; // Hooks var viweState = new UseState <int>(0); var errorTrigger = new UseTrigger(); return(new REcanvas { childs = () => { // Profile if (viweState.value == 1) { return new REbase[] { new REpanelVertical { propsRectTransform = () => REpanelVertical.TableRectTransform(20, 80, 20, 80), propsVerticalLayoutGroup = () => new REpanelVertical.VerticalLayoutGroupSetter { childAlignment = TextAnchor.MiddleCenter, }, childs = () => new REbase[] { new REtext { propsText = () => new REtext.TextSetter { text = "Welcome " + currentUser.username, } }, new REtext { propsText = () => new REtext.TextSetter { text = "Username: "******"Password: "******"Logout" }, propsButton = () => new REbutton.ButtonSetter { OnClickListener = (s) => { currentUser = null; error = "Write your credentials"; if (!rememberme) { usernameText = ""; passwordText = ""; } errorTrigger.Trigger(); viweState.SetState(0); } } }, new REtext { propsText = () => new REtext.TextSetter { text = error, }, useTrigger = new UseTrigger.Hook[] { new UseTrigger.Hook { hook = errorTrigger, OnTrigger = (s) => { REtext.CastSelector(s).textCmp.text = error; } } } }, new REbox { propsRectTransform = () => new REbox.RectTransformSetter { height = 400, width = 800, }, childs = () => new REbase[] { new REpanelVertical { childs = () => User.Find().Select(u => new REtext { propsText = () => new REtext.TextSetter { text = u.username, } } ), } } } } }, }; } // Sign Up Component else if (viweState.value == 3) { string newUsername = ""; string newPassword = ""; return new REbase[] { new REpanelVertical { propsRectTransform = () => REpanelVertical.TableRectTransform(20, 80, 20, 80), propsVerticalLayoutGroup = () => new REpanelVertical.VerticalLayoutGroupSetter { childAlignment = TextAnchor.MiddleCenter, }, childs = () => new REbase[] { new REtext { propsText = () => new REtext.TextSetter { text = "Sign Up" } }, new REtext { propsText = () => new REtext.TextSetter { text = "Username" } }, new REinputField { propsInputField = () => new REinputField.InputFieldSetter { text = newUsername, OnValueChangedListener = (v, s) => { newUsername = v; } } }, new REtext { propsText = () => new REtext.TextSetter { text = "Password" } }, new REinputField { propsInputField = () => new REinputField.InputFieldSetter { text = newPassword, OnValueChangedListener = (v, s) => { newPassword = v; } } }, new REbutton { propsText = () => new REbutton.TextSetter { text = "Create" }, propsButton = () => new REbutton.ButtonSetter { OnClickListener = (s) => { var newUser = new User { username = newUsername, password = newPassword, }.Save(); if (newUser) { error = "Succesfull Created"; newUsername = ""; newPassword = ""; errorTrigger.Trigger(); viweState.SetState(0); } else { error = "Cant create a user"; errorTrigger.Trigger(); } } } }, new REtext { propsText = () => new REtext.TextSetter { text = error, }, useTrigger = new UseTrigger.Hook[] { new UseTrigger.Hook { hook = errorTrigger, OnTrigger = (s) => { REtext.CastSelector(s).textCmp.text = error; } } } }, new REbutton { propsText = () => new REbutton.TextSetter { text = "Sign In" }, propsButton = () => new REbutton.ButtonSetter { OnClickListener = (s) => { error = "Write your credentials"; errorTrigger.Trigger(); viweState.SetState(0); } } }, } }, }; } // Sign In Component else { return new REbase[] { new REpanelVertical { propsRectTransform = () => REpanelVertical.TableRectTransform(20, 80, 20, 80), propsVerticalLayoutGroup = () => new REpanelVertical.VerticalLayoutGroupSetter { childAlignment = TextAnchor.MiddleCenter, }, childs = () => new REbase[] { new REtext { propsText = () => new REtext.TextSetter { text = "Sign In" } }, new REtext { propsText = () => new REtext.TextSetter { text = "Username" } }, new REinputField { propsInputField = () => new REinputField.InputFieldSetter { text = usernameText, OnValueChangedListener = (v, s) => { usernameText = v; } } }, new REtext { propsText = () => new REtext.TextSetter { text = "Password" } }, new REinputField { propsInputField = () => new REinputField.InputFieldSetter { text = passwordText, OnValueChangedListener = (v, s) => { passwordText = v; } } }, new REtoggle { propsText = () => new REtoggle.TextSetter { text = "Remember me" }, propsToggle = () => new REtoggle.ToggleSetter { isOn = rememberme, OnValueChangedListener = (v, s) => rememberme = v, } }, new REbutton { propsText = () => new REbutton.TextSetter { text = "Login" }, propsButton = () => new REbutton.ButtonSetter { OnClickListener = (s) => { var findUser = User.Find(usernameText, passwordText); currentUser = findUser; if (findUser != null) { Debug.Log("Username: "******" Password: "******"Succesfull sign In"; errorTrigger.Trigger(); viweState.SetState(1); } else { error = "Invalid credentials, try again"; errorTrigger.Trigger(); } } } }, new REtext { propsText = () => new REtext.TextSetter { text = error, }, useTrigger = new UseTrigger.Hook[] { new UseTrigger.Hook { hook = errorTrigger, OnTrigger = (s) => { REtext.CastSelector(s).textCmp.text = error; } } } }, new REbutton { propsText = () => new REbutton.TextSetter { text = "Sign Up" }, propsButton = () => new REbutton.ButtonSetter { OnClickListener = (s) => { error = "Create your credentials"; errorTrigger.Trigger(); viweState.SetState(3); } } }, } }, }; } }, useState = new IuseState[] { viweState, } }); }
private REcanvas SingnInView() { string usernameText = ""; string passwordText = ""; User currentUser = null; string message = "Write your credentials"; bool rememberme = false; // Hooks var viweState = new UseState <int>(0); var errorTrigger = new UseTrigger(); var usersList = new UseState <User[]>(new User[0]); var userslistRequest = false; return(new REcanvas { childs = () => { // Profile if (viweState.value == 1) { return new REbase[] { new REpanelVertical { propsRectTransform = () => REpanelVertical.TableRectTransform(20, 80, 20, 80), propsVerticalLayoutGroup = () => new REpanelVertical.VerticalLayoutGroupSetter { childAlignment = TextAnchor.MiddleCenter, }, childs = () => new REbase[] { new REtext { propsText = () => new REtext.TextSetter { text = "Welcome " + currentUser.username, } }, new REtext { propsText = () => new REtext.TextSetter { text = "Username: "******"Password: "******"Logout" }, propsButton = () => new REbutton.ButtonSetter { OnClickListener = (s) => { currentUser = null; message = "Write your credentials"; if (!rememberme) { usernameText = ""; passwordText = ""; } errorTrigger.Trigger(); viweState.SetState(0); } } }, new REtext { propsText = () => new REtext.TextSetter { text = message, }, useTrigger = new UseTrigger.Hook[] { new UseTrigger.Hook { hook = errorTrigger, OnTrigger = (s) => { REtext.CastSelector(s).textCmp.text = message; } } } }, new REbox { propsRectTransform = () => new REbox.RectTransformSetter { height = 400, width = 800, }, childs = () => new REbase[] { new REpanelVertical { childs = () => usersList.value.Select(u => new REtext { propsText = () => new REtext.TextSetter { text = u.username, } }), } }, useState = new IuseState[] { usersList, }, useObjectEvents = new REbox.UseObjectEvents.Hook { onAwake = async(s) => { if (userslistRequest) { return; } Debug.Log("Requesting List ..."); try { var users = await User.Find(); userslistRequest = true; usersList.SetState(users); } catch (System.Exception) { } } }, } } , useObjectEvents = new REpanelVertical.UseObjectEvents.Hook { onDestroy = (s) => { userslistRequest = false; } }, }, }; } // Sign Up Component else if (viweState.value == 3) { string newUsername = ""; string newPassword = ""; return new REbase[] { new REpanelVertical { propsRectTransform = () => REpanelVertical.TableRectTransform(20, 80, 20, 80), propsVerticalLayoutGroup = () => new REpanelVertical.VerticalLayoutGroupSetter { childAlignment = TextAnchor.MiddleCenter, }, childs = () => new REbase[] { new REtext { propsText = () => new REtext.TextSetter { text = "Sign Up" } }, new REtext { propsText = () => new REtext.TextSetter { text = "Username" } }, new REinputField { propsInputField = () => new REinputField.InputFieldSetter { text = newUsername, OnValueChangedListener = (v, s) => { newUsername = v; } } }, new REtext { propsText = () => new REtext.TextSetter { text = "Password" } }, new REinputField { propsInputField = () => new REinputField.InputFieldSetter { text = newPassword, OnValueChangedListener = (v, s) => { newPassword = v; } } }, new REbutton { propsText = () => new REbutton.TextSetter { text = "Create" }, propsButton = () => new REbutton.ButtonSetter { OnClickListener = async(s) => { try { var newUser = await new User { username = newUsername, password = newPassword, }.Save(); if (newUser) { message = "Succesfull Created"; newUsername = ""; newPassword = ""; errorTrigger.Trigger(); viweState.SetState(0); } else { message = "Cant create a user"; errorTrigger.Trigger(); } } catch (System.Exception e) { message = e + ""; errorTrigger.Trigger(); } } } }, new REtext { propsText = () => new REtext.TextSetter { text = message, }, useTrigger = new UseTrigger.Hook[] { new UseTrigger.Hook { hook = errorTrigger, OnTrigger = (s) => { REtext.CastSelector(s).textCmp.text = message; } } } }, new REbutton { propsText = () => new REbutton.TextSetter { text = "Sign In" }, propsButton = () => new REbutton.ButtonSetter { OnClickListener = (s) => { message = "Write your credentials"; errorTrigger.Trigger(); viweState.SetState(0); } } }, } }, }; } // Sign In Component else { return new REbase[] { // Get request new REpanelVertical { propsRectTransform = () => REpanelVertical.TableRectTransform(20, 80, 20, 80), propsVerticalLayoutGroup = () => new REpanelVertical.VerticalLayoutGroupSetter { childAlignment = TextAnchor.MiddleCenter, }, childs = () => new REbase[] { new REtext { propsText = () => new REtext.TextSetter { text = "Sign In" } }, new REtext { propsText = () => new REtext.TextSetter { text = "Username" } }, new REinputField { propsInputField = () => new REinputField.InputFieldSetter { text = usernameText, OnValueChangedListener = (v, s) => { usernameText = v; } } }, new REtext { propsText = () => new REtext.TextSetter { text = "Password" } }, new REinputField { propsInputField = () => new REinputField.InputFieldSetter { text = passwordText, OnValueChangedListener = (v, s) => { passwordText = v; } } }, new REtoggle { propsText = () => new REtoggle.TextSetter { text = "Remember me" }, propsToggle = () => new REtoggle.ToggleSetter { isOn = rememberme, OnValueChangedListener = (v, s) => rememberme = v, } }, new REbutton { propsText = () => new REbutton.TextSetter { text = "Login" }, propsButton = () => new REbutton.ButtonSetter { OnClickListener = async(s) => { try { var findUser = await User.Find(usernameText, passwordText); currentUser = findUser; } catch (System.Exception e) { message = e + ""; currentUser = null; errorTrigger.Trigger(); return; } if (currentUser != null) { Debug.Log("Username: "******" Password: "******"Succesfull sign In"; errorTrigger.Trigger(); viweState.SetState(1); } else { message = "Bad credentials"; errorTrigger.Trigger(); } } } }, new REtext { propsText = () => new REtext.TextSetter { text = message, }, useTrigger = new UseTrigger.Hook[] { new UseTrigger.Hook { hook = errorTrigger, OnTrigger = (s) => { REtext.CastSelector(s).textCmp.text = message; } } } }, new REbutton { propsText = () => new REbutton.TextSetter { text = "Sign Up" }, propsButton = () => new REbutton.ButtonSetter { OnClickListener = (s) => { message = "Create your credentials"; errorTrigger.Trigger(); viweState.SetState(3); } } }, } }, }; } }, useState = new IuseState[] { viweState, } }); }
static UseState() { InUse = new UseState() { State = 1, Name = "在用" }; Rent = new UseState() { State = 2, Name = "出租" }; Idle = new UseState() { State = 3, Name = "闲置" }; UseStates = new Dictionary<int, UseState>(); UseStates.Add(InUse.State, InUse); UseStates.Add(Rent.State, Rent); UseStates.Add(Idle.State, Idle); }
public IEnumerator Find_AndUseState() { var letterState = new UseState <string>("Hello world"); // Create a reactor component REcanvas MainReactorComponent() { return(new REcanvas { childs = () => new REbase[] { new REtext { propsId = () => new REtext.IdSetter { id = "ProveText" }, propsText = () => new REtext.TextSetter { text = letterState.value, }, useState = new IuseState[] { letterState, }, childs = () => new REbase[] { new REimage(), new REimage(), } }, new REtext(), new REtext(), new REtext(), }, }); } var reactorComponent = MainReactorComponent(); yield return(new WaitForSecondsRealtime(1)); // Draw the component for the first time Debug.Log("Drawing"); reactorComponent.Draw(); yield return(new WaitForSecondsRealtime(1)); // Look fr the component Debug.Log("Finding"); var textSelector = REtext.FindOne("#ProveText"); // Check that the compoennt exist Assert.IsFalse(textSelector.isDisposed); Assert.IsFalse(textSelector.rectTransform == null); Assert.IsFalse(textSelector.gameObject == null); Assert.IsFalse(textSelector.parent == null); Assert.IsFalse(textSelector.childs == null); Assert.IsFalse(textSelector.brothersSelector == null); Assert.IsFalse(textSelector.canvasRenderer == null); Assert.IsTrue(textSelector.textCmp.text == "Hello world"); // Redraw the component Debug.Log("Changing and drawing again"); letterState.SetState("New text"); // Check that the selector references are now null Debug.Log("Changing and drawing again"); Assert.IsTrue(textSelector.isDisposed); Debug.Log("Changing and drawing again"); Assert.IsTrue(textSelector.rectTransform == null); Debug.Log("Changing and drawing again"); Assert.IsTrue(textSelector.gameObject == null); Debug.Log("Changing and drawing again"); Assert.IsTrue(textSelector.parent == null); Debug.Log("Changing and drawing again"); Assert.IsTrue(textSelector.childs == null); Debug.Log("Changing and drawing again"); Assert.IsTrue(textSelector.brothersSelector == null); Debug.Log("Changing and drawing again"); Assert.IsTrue(textSelector.canvasRenderer == null); Debug.Log("Changing and drawing again"); Assert.Throws <NullReferenceException>(() => Debug.Log("V: " + textSelector.rectTransform.rect)); Debug.Log("Changing and drawing again"); // Try to find again the component that it must exist Debug.Log("Finding again"); textSelector = REtext.FindOne("#ProveText"); // Check that the compoennt exist Assert.IsFalse(textSelector.isDisposed); Assert.IsFalse(textSelector.rectTransform == null); Assert.IsFalse(textSelector.gameObject == null); Assert.IsFalse(textSelector.parent == null); Assert.IsFalse(textSelector.childs == null); Assert.IsFalse(textSelector.brothersSelector == null); Assert.IsFalse(textSelector.canvasRenderer == null); Assert.IsTrue(textSelector.textCmp.text == "New text"); yield return(new WaitForSecondsRealtime(2)); reactorComponent.Erase(); }
public IEnumerator Hooks_UseState_InDisabledCanvas() { var alphaState = new UseState <float>(0f); // A Component REcanvas MainReactorComponent() { return(new REcanvas { propsId = () => new REcanvas.IdSetter { id = "ProveCanvas" }, propsCanvasGroup = () => new REcanvas.CanvasGroupSetter { alpha = alphaState.value, }, useState = new IuseState[] { alphaState, }, childs = () => new REbase[] { new REtext(), }, }); } var routerProve = MainReactorComponent(); yield return(new WaitForSecondsRealtime(1)); // Drawing the component Debug.Log("Drawing"); routerProve.Draw(); Assert.IsTrue(REcanvas.FindOne("#ProveCanvas").canvasGroup.alpha == 0f); yield return(new WaitForSecondsRealtime(1)); // Hide the element routerProve.Disable(); Assert.IsFalse(REbase.FindOne("#ProveCanvas").gameObject.activeSelf); // Change the states alphaState.SetState(.33f); Assert.IsTrue(REcanvas.FindOne("#ProveCanvas").canvasGroup.alpha == .33f); // Will disable after one frame, because need to be active to calculate all the rect transform parameters yield return(new WaitForSecondsRealtime(.3f)); Assert.IsFalse(REbase.FindOne("#ProveCanvas").gameObject.activeSelf); alphaState.SetState(.66f); // Will disable after one frame, because need to be active to calculate all the rect transform parameters yield return(new WaitForSecondsRealtime(.3f)); Assert.IsTrue(REcanvas.FindOne("#ProveCanvas").canvasGroup.alpha == .66f); Assert.IsFalse(REbase.FindOne("#ProveCanvas").gameObject.activeSelf); alphaState.PrevState(); // Will disable after one frame, because need to be active to calculate all the rect transform parameters yield return(new WaitForSecondsRealtime(.3f)); Assert.IsTrue(REcanvas.FindOne("#ProveCanvas").canvasGroup.alpha == .33f); Assert.IsFalse(REbase.FindOne("#ProveCanvas").gameObject.activeSelf); // Enable and check routerProve.Enable(); // Will disable after one frame, because need to be active to calculate all the rect transform parameters yield return(new WaitForSecondsRealtime(.3f)); Assert.IsTrue(REcanvas.FindOne("#ProveCanvas").canvasGroup.alpha == .33f); Assert.IsTrue(REbase.FindOne("#ProveCanvas").gameObject.activeSelf); yield return(new WaitForSecondsRealtime(2)); routerProve.Erase(); }