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();
    }
Exemplo n.º 2
0
    private UseState()
    {
        if (_instance != null)
        {
            return;
        }

        _instance = this;
    }
Exemplo n.º 3
0
 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;
     }
 }
Exemplo n.º 4
0
    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();
    }
Exemplo n.º 6
0
    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);
    }
Exemplo n.º 7
0
    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;
    }
Exemplo n.º 8
0
    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"),
            });
        }
Exemplo n.º 10
0
    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();
    }
Exemplo n.º 13
0
    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();
                                        }
                                    },
                                },
                            };
                        }
                    },
                }
            });
Exemplo n.º 14
0
 /// <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();
    }
Exemplo n.º 18
0
        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);
        }
Exemplo n.º 19
0
    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,
            }
        });
    }
Exemplo n.º 20
0
    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,
            }
        });
    }
Exemplo n.º 21
0
            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);
            }
Exemplo n.º 22
0
    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();
    }