コード例 #1
0
    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();
    }
コード例 #2
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);
    }
コード例 #3
0
    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();
    }
コード例 #4
0
ファイル: RendererC02.cs プロジェクト: Pronnus/UnityReactor
    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();
                                        }
                                    },
                                },
                            };
                        }
                    },
                }
            });
コード例 #5
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();
    }
コード例 #6
0
ファイル: RendererC03.cs プロジェクト: Pronnus/UnityReactor
    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,
            }
        });
    }
コード例 #7
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,
            }
        });
    }
コード例 #8
0
    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();
    }
コード例 #9
0
    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();
    }
コード例 #10
0
    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();
    }
コード例 #11
0
    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();
    }