예제 #1
0
    public void ResizeCompoundPanel(string mode)
    {
        var bars = compoundsPanelBarContainer.GetChildren();

        if (mode == "compress" && !compundCompressed)
        {
            compundCompressed = true;
            compoundsPanelBarContainer.AddConstantOverride("vseparation", 20);
            compoundsPanelBarContainer.AddConstantOverride("hseparation", 14);

            if (bars.Count < 4)
            {
                compoundsPanelBarContainer.Columns = 2;
            }
            else
            {
                compoundsPanelBarContainer.Columns = 3;
            }

            foreach (ProgressBar bar in bars)
            {
                panelsTween.InterpolateProperty(bar, "rect_min_size", new Vector2(90, 25), new Vector2(64, 25), 0.3f);
                panelsTween.Start();

                bar.GetNode <Label>("Label").Hide();
            }
        }

        if (mode == "expand" && compundCompressed)
        {
            compundCompressed = false;
            compoundsPanelBarContainer.Columns = 1;
            compoundsPanelBarContainer.AddConstantOverride("vseparation", 5);
            compoundsPanelBarContainer.AddConstantOverride("hseparation", 0);

            foreach (ProgressBar bar in bars)
            {
                panelsTween.InterpolateProperty(bar, "rect_min_size", bar.RectMinSize, new Vector2(220, 25), 0.3f);
                panelsTween.Start();

                bar.GetNode <Label>("Label").Show();
            }
        }
    }
예제 #2
0
    public void ResizeEnvironmentPanel(string mode)
    {
        var bars = environmentPanelBarContainer.GetChildren();

        if (mode == "compress" && !environmentCompressed)
        {
            environmentCompressed = true;

            GUICommon.Instance.TweenUIProperty(
                environmentPanel, "rect_min_size", environmentPanel.RectMinSize, new Vector2(195, 170), 0.3f);
            environmentPanelBarContainer.Columns = 2;
            environmentPanelBarContainer.AddConstantOverride("vseparation", 20);
            environmentPanelBarContainer.AddConstantOverride("hseparation", 17);

            foreach (ProgressBar bar in bars)
            {
                GUICommon.Instance.TweenUIProperty(
                    bar, "rect_min_size", new Vector2(95, 25), new Vector2(73, 25), 0.3f);
                bar.GetNode <Label>("Label").Hide();
                bar.GetNode <Label>("Value").Align = Label.AlignEnum.Center;
            }
        }

        if (mode == "expand" && environmentCompressed)
        {
            environmentCompressed = false;

            GUICommon.Instance.TweenUIProperty(
                environmentPanel, "rect_min_size", environmentPanel.RectMinSize, new Vector2(195, 224), 0.3f);
            environmentPanelBarContainer.Columns = 1;
            environmentPanelBarContainer.AddConstantOverride("vseparation", 4);
            environmentPanelBarContainer.AddConstantOverride("hseparation", 0);

            foreach (ProgressBar bar in bars)
            {
                GUICommon.Instance.TweenUIProperty(
                    bar, "rect_min_size", bar.RectMinSize, new Vector2(162, 25), 0.3f);
                bar.GetNode <Label>("Label").Show();
                bar.GetNode <Label>("Value").Align = Label.AlignEnum.Right;
            }
        }
    }
예제 #3
0
    public void ResizeEnvironmentPanel(string mode)
    {
        var bars = environmentPanelBarContainer.GetChildren();

        if (mode == "compress" && !environmentCompressed)
        {
            environmentCompressed = true;
            environmentPanelBarContainer.Columns = 2;
            environmentPanelBarContainer.AddConstantOverride("vseparation", 20);
            environmentPanelBarContainer.AddConstantOverride("hseparation", 17);

            foreach (ProgressBar bar in bars)
            {
                panelsTween.InterpolateProperty(bar, "rect_min_size:x", 95, 73, 0.3f);
                panelsTween.Start();

                bar.GetNode <Label>("Label").Hide();
                bar.GetNode <Label>("Value").Align = Label.AlignEnum.Center;
            }
        }

        if (mode == "expand" && environmentCompressed)
        {
            environmentCompressed = false;
            environmentPanelBarContainer.Columns = 1;
            environmentPanelBarContainer.AddConstantOverride("vseparation", 4);
            environmentPanelBarContainer.AddConstantOverride("hseparation", 0);

            foreach (ProgressBar bar in bars)
            {
                panelsTween.InterpolateProperty(bar, "rect_min_size:x", bar.RectMinSize.x, 162, 0.3f);
                panelsTween.Start();

                bar.GetNode <Label>("Label").Show();
                bar.GetNode <Label>("Value").Align = Label.AlignEnum.Right;
            }
        }
    }
예제 #4
0
    public void ResizeEnvironmentPanel(string mode)
    {
        var bars = environmentPanelBarContainer.GetChildren();

        if (mode == "compress" && !environmentCompressed)
        {
            environmentCompressed = true;

            HandleEnvironmentResize(170, 2, 20, 17);

            foreach (ProgressBar bar in bars)
            {
                panelsTween.InterpolateProperty(
                    bar, "rect_min_size", new Vector2(95, 25), new Vector2(73, 25), 0.3f);
                panelsTween.Start();

                bar.GetNode <Label>("Label").Hide();
                bar.GetNode <Label>("Value").Align = Label.AlignEnum.Center;
            }
        }

        if (mode == "expand" && environmentCompressed)
        {
            environmentCompressed = false;

            HandleEnvironmentResize(224, 1, 4, 0);

            foreach (ProgressBar bar in bars)
            {
                panelsTween.InterpolateProperty(bar, "rect_min_size", bar.RectMinSize, new Vector2(162, 25), 0.3f);
                panelsTween.Start();

                bar.GetNode <Label>("Label").Show();
                bar.GetNode <Label>("Value").Align = Label.AlignEnum.Right;
            }
        }
    }
    public async void SearchSimulation()
    {
        Control root = GetNode("SearchSimulation") as Control;

        root.SetVisible(true);

        Tween tween = new Tween();

        AddChild(tween);

        // setting up maps
        GridContainer  mapContainer = root.GetNode("NodeMaps") as GridContainer;
        List <NodeMap> maps         = new List <NodeMap>();

        foreach (Node node in mapContainer.GetChildren())
        {
            maps.Add(node.GetNode("NodeMap") as NodeMap);
        }

        // setup the chart
        Control chart = root.GetNode("Chart") as Control;


        Random random = new Random();
        int    seed   = -1;

        foreach (NodeMap maze in maps)
        {
            maze.SetWidth(55);
            maze.ResizeBlock();
        }

        // rename the title and size
        (mapContainer.GetNode("DFS/GraphTitle") as Label).Text      = "DFS - " + maps[0].width + " x " + maps[0].height;
        (mapContainer.GetNode("BFS/GraphTitle") as Label).Text      = "BFS - " + maps[1].width + " x " + maps[1].height;
        (mapContainer.GetNode("Dijkstra/GraphTitle") as Label).Text = "Dijkstra - " + maps[2].width + " x " + maps[2].height;
        (mapContainer.GetNode("AStar/GraphTitle") as Label).Text    = "AStar - " + maps[3].width + " x " + maps[3].height;

        // reset the active nodemap
        activeNodeMaps.Clear();
        paths.Clear();
        foreach (NodeMap map in maps)
        {
            activeNodeMaps.Add(map, true);
            // connect the signals
            map.Connect("finished_pathfinding", this, nameof(OnPathFound));
            paths[map] = new Tuple <Godot.Collections.Array <int>, Godot.Collections.Array <int> >(new Godot.Collections.Array <int>(), new Godot.Collections.Array <int>());
        }

        for (int i = 0; i < 20; i++)
        {
            seed = random.Next();

            foreach (NodeMap maze in maps)
            {
                maze.seed = seed;
                maze.GenerateMap();
            }

            foreach (NodeMap map in maps)
            {
                activeNodeMaps[map] = true;
                WaitForActiveNodeMaps(map);
            }

            await ToSignal(this, "active_nodemaps_finished");

            // record place
            foreach (NodeMap map in maps)
            {
                activeNodeMaps[map] = true;
            }

            // record distance here and expansion
            maps[0].DFS();
            maps[1].BFS();
            maps[2].Dijkstra();
            maps[3].AStar();

            await ToSignal(this, "active_nodemaps_finished");

            // toggle all the info now
        }

        await ToSignal(this, "next");

        tween = CommonTweenUtil.Fade(root, 0.3f, 1, 0, tween);
        tween.Start();
        await ToSignal(tween, "tween_completed");

        tween.QueueFree();
        root.SetVisible(false);

        EmitSignal("section_finished");
    }