public static MyPanel TestButton(object test, Sprite sprite, LoadingData data, Sprite backgroundTest)
    {
        var headPanel = new MyPanel(sprite, new Rect(0, 0, 0, 0));
        Destroy(headPanel.Element.GetComponent<Image>());
        headPanel.SetAnchor(new Vector2(0, 0), new Vector2(1, 1));
        headPanel.Element.AddComponent<VerticalLayoutGroup>();
        var headPanelContentSizeFilter = headPanel.Element.AddComponent<ContentSizeFitter>();
        headPanelContentSizeFilter.verticalFit = ContentSizeFitter.FitMode.PreferredSize;
        if ((test as Folder) != null)
        {
            var mainPanel = new MyPanel(sprite, new Rect(0, 0, 0, 0));
            Destroy(mainPanel.Element.GetComponent<Image>());
            mainPanel.Element.SetActive(((Folder)test).IsOpen);
            mainPanel.SetAnchor(new Vector2(0, 0), new Vector2(1, 1));
            mainPanel.Element.AddComponent<LayoutElement>();
            mainPanel.Element.AddComponent<VerticalLayoutGroup>().padding.left = 20;

            var buttonArea = new MyPanel(sprite, new Rect(0, 0, 0, 0));
            UIElement.SetSize(buttonArea.Element.GetComponent<RectTransform>(), new Vector2(60, 32));
            buttonArea.SetAnchor(new Vector2(0, 0), new Vector2(1, 1));
            buttonArea.Element.AddComponent<HorizontalLayoutGroup>();

            var button = new MyButton(
                () =>
                {
                    mainPanel.Element.SetActive(!mainPanel.Element.activeSelf);
                    ((Folder)test).IsOpen = !((Folder)test).IsOpen;
                    Debug.Log(((Folder)test).Name + " : " + mainPanel.Element.activeSelf);
                }
                , sprite, new Rect(0, 0, 0, 0), "  <color=#00000060>►</color> " + ((Folder)test).Name);
            button.Element.AddComponent<LayoutElement>();

            var buttonRunTestIn = new MyButton(
                () =>
                {
                    TestDispatcher.RunAnyTests(((Folder)test).GetChildrenTests().Select(e => e.NameTest), data);
                    foreach(var e in ((Folder)test).GetChildrenTests().Select(e => e.NameTest))
                        ((Test) test).State = TestDispatcher.LastTestExecution[e] ? 1 : -1;
                }
                , sprite, new Rect(0, 0, 0, 0), "  <color=#00ff0060>►</color> ");
            buttonRunTestIn.Element.AddComponent<LayoutElement>();

            buttonArea.AddElement(button);
            buttonArea.AddElement(buttonRunTestIn);

            button.Element.GetComponentInChildren<Text>().alignment = TextAnchor.MiddleLeft;
            UIElement.SetSize(button.Element.GetComponent<RectTransform>(), new Vector2(60, 32));
            button.SetAnchor(new Vector2(0, 0), new Vector2(1, 1));
            var layoutElement = button.Element.AddComponent<LayoutElement>();

            layoutElement.minHeight = 30;
            headPanel.AddElement(buttonArea);
            foreach (var e in ((Folder)test).GetChildren())
                mainPanel.AddElement(TestButton(e, sprite, data, backgroundTest));
            headPanel.AddElement(mainPanel);
        }
        else
        {
            var testName = ((Test)test).NameTest;
            var button = new MyButton(
                () => {
                    TestDispatcher.RunOneTest(data, testName);
                    if (TestDispatcher.LastTestExecution.ContainsKey(testName))
                        if (TestDispatcher.LastTestExecution[testName])
                            ((Test)test).State = 1;
                        else
                            ((Test)test).State = -1;
                    else
                        ((Test)test).State = 0;
                    ((Test)test).State = TestDispatcher.LastTestExecution[testName] ? 1 : -1;
                }, sprite, new Rect(0, 0, 0, 0), testName.Split('_').Last());
            button.SetAnchor(new Vector2(0, 0), new Vector2(1, 1));
            button.Element.AddComponent<LayoutElement>();
            var testStateImage = new MyPanel(backgroundTest, new Rect(0, 0, 0, 0));
            testStateImage.SetAnchor(new Vector2(0, 0), new Vector2(1, 1));
            button.AddElement(testStateImage);
            testStateImage.Element.transform.SetAsFirstSibling();
            //testStateImage.Element.GetComponent<Image>().color = new Color32(0, 0, 0, 100);
            testStateImage.Element.GetComponent<Image>().color = GetTestColor(testName);
            button.Element.GetComponent<Button>().onClick.AddListener(() => testStateImage.Element.GetComponent<Image>().color = GetTestColor(testName));
            headPanel.AddElement(button);
            UIElement.SetSize(button.Element.GetComponent<RectTransform>(), new Vector2(60, 32));
            button.SetAnchor(new Vector2(0, 0), new Vector2(1, 1));
            var layoutElement = button.Element.AddComponent<LayoutElement>();
            layoutElement.minHeight = 30;
        }
        return headPanel;
    }
Exemple #2
0
    public MyWindow(Sprite sprite, string title, Rect rect)
        : base()
    {
        isOpen = true;
        Head = new MyPanel(sprite, rect);
        Head.Element.name = "Window" + title;
        var trans = Head.Element.GetComponent<RectTransform>();
        Head.SetAnchor(new Vector2(0.5f, 0.5f), new Vector2(0.5f, 0.5f));

        trans.anchoredPosition3D = new Vector3(0, 0, 0);
        trans.anchoredPosition = new Vector2(0, 0);
        trans.localPosition = new Vector3(0, 0, 0);
        trans.localScale = new Vector3(1, 1, 1);
        SetSize(trans, rect.size);

        var header = new MyPanel(sprite, rect);

        trans = header.Element.GetComponent<RectTransform>();
        header.Element.GetComponent<Image>().color = new Color32(230, 230, 230, 200);
        header.SetAnchor(new Vector2(0, 1), new Vector2(1, 1));
        trans.anchoredPosition3D = new Vector3(0, 0, 0);
        trans.anchoredPosition = new Vector2(0, 0);
        trans.offsetMin = new Vector2(0, 0);
        trans.offsetMax = new Vector2(0, 0);
        trans.localPosition = new Vector3(0, -10, 0);
        trans.sizeDelta = new Vector2(0, 20);
        trans.localScale = new Vector3(1, 1, 1);

        var titleWindow = new MyText(title);
        header.AddElement(titleWindow);

        var buttonClosed = new MyButton(() => SetActive(false), sprite, new Rect(0, 0, 64, 48), "X");
        var rectButton = buttonClosed.Element.GetComponent<RectTransform>();
        buttonClosed.SetAnchor(new Vector2(1, 1), new Vector2(1, 1));
        rectButton.sizeDelta = new Vector2(50, 20);
        rectButton.localPosition = new Vector3(-25, -10, 0);
        //rectButton.pivot = new Vector2(1, 1);
        var buttonScript = buttonClosed.Element.GetComponent<Button>();
        buttonScript.transition = Selectable.Transition.ColorTint;
        var selColor = new ColorBlock();
        selColor.normalColor = buttonClosed.Element.GetComponent<Button>().colors.normalColor;
        selColor.pressedColor = new Color32(255, 80, 80, 255);
        selColor.highlightedColor = new Color32(255, 0, 0, 255);
        selColor.colorMultiplier = 1;
        selColor.fadeDuration = 0.2f;

        buttonClosed.Element.GetComponent<Button>().colors = selColor;

        Element = new MyPanel(sprite, rect).Element;
        var transM = Element.GetComponent<RectTransform>();

        SetAnchor(new Vector2(0, 0), new Vector2(1, 1));
        transM.anchoredPosition3D = new Vector3(0, 0, 0);
        transM.anchoredPosition = new Vector2(0, 0);

        transM.sizeDelta = new Vector2(0, 0);
        transM.localPosition = new Vector3(0, -20, 0);
        transM.offsetMin = new Vector2(transM.offsetMin.x, 0);

        transM.localScale = new Vector3(1, 1, 1);

        header.AddElement(buttonClosed);
        Head.AddElement(header);
        Head.AddElement(this);
    }
    void Start()
    {
        if (!serverIsRunned)
        {
            Server();
            serverIsRunned = true;
        }

        mainCanvas = new MyCanvas(new Vector2(Screen.width, Screen.height));
        MakeState();
        windowTests = MakeTests();
        windowTests.SetActive(stateMenu.IsOpenTestsWindow);
        var buttonWindowTests = new MyButton(() => windowTests.SetActive(!windowTests.isOpen), ButtonSprite, new Rect(0, 0, 64, 48), "Tests");
        var rectB = buttonWindowTests.Element.GetComponent<RectTransform>();
        var inputField = new MyInputField("Input", ButtonSprite, new Rect(0, 0, 160, 25));
        buttonWindowTests.SetAnchor(new Vector2(0, 1), new Vector2(0, 1));

        var buttonLog = new MyButton(
            () => Dispatcher.AddRunner(new LogRunner(inputField.Element.GetComponent<InputField>().text)),
            ButtonSprite,
            new Rect(0, 0, 64, 48),
            "Log play");

        var rectLog = buttonLog.Element.GetComponent<RectTransform>();
        buttonLog.SetAnchor(0, 0, 0, 0);
        rectLog.anchoredPosition = new Vector2(300, 40);

        rectB.offsetMin = new Vector2(100, -200);
        UIElement.SetSize(rectB, new Vector2(120, 30));
        var buttonTutorial = new MyButton(
            () => Dispatcher.AddRunner(new TutorialRunner(new LoadingData { AssemblyName = "RoboMovies", Level = "Test" })),
            ButtonSprite,
            new Rect(0, 00, 120, 48),
            "Tutorial");
        buttonTutorial.SetAnchor(new Vector2(0, 1), new Vector2(0, 1));

        rectB = buttonTutorial.Element.GetComponent<RectTransform>();
        rectB.offsetMin = new Vector2(100, -300);
        UIElement.SetSize(rectB, new Vector2(120, 30));

        dropDownListAssembly = Instantiate(DropDownList);
        dropDownListAssembly.name = "BambaLeilo";
        dropDownListAssembly.transform.localPosition = new Vector3(0, 0);
        var dropDown = dropDownListAssembly.GetComponent<Dropdown>();
        dropDown.GetComponent<RectTransform>().position = new Vector3(0, 0, 0);
        dropDown.options = new List<Dropdown.OptionData>();
        foreach (var e in Dispatcher.Loader.Levels.Keys)
            dropDown.options.Add(new Dropdown.OptionData(e));

        for (var i = 0; i < dropDown.options.Count; i++)
            if (dropDown.options[i].text == stateMenu.CurrentAssembly)
                dropDown.value = i;

        dropDownListLevel = Instantiate(DropDownList);
        dropDownListLevel.name = "BambaLeiloLevel";
        dropDownListLevel.transform.localPosition = new Vector3(0, 0);
        var dropDownList = dropDownListLevel.GetComponent<Dropdown>();
        dropDownList.GetComponent<RectTransform>().position = new Vector3(0, 0, 0);
        dropDownList.options = new List<Dropdown.OptionData>();
        foreach (var e in Dispatcher.Loader.Levels[stateMenu.CurrentAssembly].Keys)
            dropDownList.options.Add(new Dropdown.OptionData(e));

        for (var i = 0; i < dropDownList.options.Count; i++)
            if (dropDownList.options[i].text == stateMenu.CurrentLevel)
            {
                dropDownList.value = i;
                dropDownList.options[i] = new Dropdown.OptionData(stateMenu.CurrentLevel);
            }

        var backGround = new MyImage(menuBackground, new Rect(0, 0, menuBackground.textureRect.width, menuBackground.textureRect.height));

        mainCanvas.AddElement(backGround);
        mainCanvas.AddElement(inputField);
        mainCanvas.AddElement(windowTests.Head);
        mainCanvas.AddElement(buttonWindowTests);
        mainCanvas.AddElement(buttonTutorial);
        mainCanvas.AddElement(buttonLog);
        dropDownListLevel.transform.SetParent(mainCanvas.Element.transform);
        dropDown.transform.SetParent(mainCanvas.Element.transform);

        var rectDrop = dropDownListAssembly.GetComponent<RectTransform>();
        rectDrop.anchorMin = new Vector2(0, 1);
        rectDrop.anchorMax = new Vector2(0, 1);
        rectDrop.anchoredPosition = new Vector3(100, -40, 0);

        rectDrop = dropDownListLevel.GetComponent<RectTransform>();
        rectDrop.anchorMin = new Vector2(0, 1);
        rectDrop.anchorMax = new Vector2(0, 1);
        rectDrop.anchoredPosition = new Vector3(300, -40, 0);

        rectDrop = inputField.Element.GetComponent<RectTransform>();
        inputField.SetAnchor(0, 0, 0, 0);
        rectDrop.anchoredPosition = new Vector3(100, 40, 0);
    }
Exemple #4
0
    void Start()
    {
        Dispatcher.RoundStart();

        timeOnStartSession = Time.fixedTime;
        curWorldTime = 0;
        Behaviour = this;
        CameraCreator();
        ScoresFieldsCreator();
        var mainCanvas = new MyCanvas(new Vector2(Screen.width, Screen.height));
        var buttonGO = new MyButton(() => Dispatcher.SetGameOver(), button, new Rect(100, -100, 100, 30), "Back to menu");
        buttonGO.SetAnchor(new Vector2(0,1), new Vector2(0, 1));
        mainCanvas.AddElement(buttonGO);
        world = Dispatcher.CurrentRunner.World;
        if (world != null)
            Debugger.Log(DebuggerMessageType.Unity, "World loaded");
        else
            Debugger.Log(DebuggerMessageType.Unity, "Fail. World not loaded");

        CollisionInfo = new Tuple<string, string, int>(null, null, 0);
        Time.timeScale = 1; // вот почему так?
        //в момент повторного запуска время уже не нулевое
    }