Exemplo n.º 1
0
    public bool DebugInput(Crawler crawler, InputEvent ev)
    {
        if (ev.IsActionPressed("quicksave", false))
        {
            temp = crawler.Model.SaveToDictionary();

            PackedScene packed = new PackedScene();
            packed.Pack(crawler.Model);
            ResourceSaver.Save("res://dump.tscn", packed);
            return(true);
        }

        if (ev.IsActionPressed("quickload", false))
        {
            // Delete the old stuff.
            {
                View old = crawler.GetNode <View>("View");
                crawler.RemoveChild(old);
                old.QueueFree();

                Model oldd = crawler.Model;
                crawler.RemoveChild(oldd);
                oldd.QueueFree();
            }

            // Add the new stuff.
            {
                // PackedScene modelScene = GD.Load<PackedScene>("res://dump.tscn");
                PackedScene modelScene = GD.Load <PackedScene>((string)temp["Filename"]);
                Model       model      = (Model)modelScene.Instance();
                model.Name = "Model";
                crawler.AddChild(model);

                PackedScene viewScene = GD.Load <PackedScene>("res://Crawler/View/View.tscn");
                View        view      = (View)viewScene.Instance();
                view.Name = "View";
                crawler.AddChild(view);

                view.ConnectToModel(model);

                LoadedGenerator gen = new LoadedGenerator(temp);
                gen.Generate(crawler.Model);
            }

            return(true);
        }

        if (ev is InputEventKey eventKey && eventKey.Pressed && !eventKey.IsEcho())
        {
            if (eventKey.Scancode == (int)KeyList.F1)
            {
                crawler.View.impatientMode = !crawler.View.impatientMode;
                string thing = (crawler.View.impatientMode ? "on" : "off");

                crawler.View.GetNode <RichTextLabel>("UILayer/MessageLog").AppendBbcode($"\n * Impatient mode {thing}!");
                return(true);
            }

            if (eventKey.Scancode == (int)KeyList.F9)
            {
                Node2D map = (Node2D)crawler.Model.FindNode("Map");
                map.Visible = !map.Visible;
                return(true);
            }

            // this makes people very confused. also its a hack anyways.
            // if (eventKey.Scancode == (int)KeyList.F11)
            // {
            //     GetTree().ChangeScene("res://Crawler/Crawler.tscn");
            //     return true;
            // }

            if (eventKey.Scancode == (int)KeyList.Quoteleft)
            {
                Control debugLog = crawler.View.GetNode <Control>("UILayer/DebugLog");
                debugLog.Visible = !debugLog.Visible;
                return(true);
            }
        }

        return(false);
    }