コード例 #1
0
        internal static void AddSceneToHistory(Node scene)
        {
            PackedScene packedScene = new PackedScene();

            packedScene.Pack(scene);
            History.Add(packedScene);
            SaveHero(CurrentHero);
        }
コード例 #2
0
    public void SaveLevel(string pPath)
    {
        PackedScene savedLevel = new PackedScene();

        CurrentLevel = GetTree().GetRoot().GetNode("Editor/ViewportContainer/Viewport/CurrentLevel") as Level;
        SetOwners(CurrentLevel);
        GD.Print("[Editor] - Setting Owners...");
        savedLevel.Pack(CurrentLevel);         // Packs the level into a scene.
        ResourceSaver.Save(pPath, savedLevel); // Save the PackedScene
        GD.Print("[Editor] Level Saved.");
    }
コード例 #3
0
        protected sealed override Error Import()
        {
            SceneContext = GetContext();

            if (UsedExtension is not null)
            {
                typeof(SceneImportExtension <SceneBase, Context>)
                .GetProperty(nameof(SceneImportExtension <SceneBase, Context> .SceneContext)) !
                .SetValue(UsedExtension, SceneContext);
            }

            ulong buildedSceneId;

            try
            {
                SceneBase sceneNode = BuildScene();
                buildedSceneId = sceneNode.GetInstanceId();
                UsedExtension?.OnSceneBuilt(sceneNode);
            }
            catch (Exception error)
            {
                GD.PushError(error.Message);
                return(Error.Bug);
            }

            SceneBase buildedScene = (GD.InstanceFromId(buildedSceneId) as SceneBase) !;

            foreach (Node child in buildedScene.GetChildren())
            {
                SetOwnerRecursive(child, buildedScene);
            }

            var packedScene = new PackedScene();

            packedScene.TakeOverPath(ImportContext.SavePath);

            if (packedScene.Pack(buildedScene) != Error.Ok)
            {
                return(Error.Failed);
            }

            return(ResourceSaver.Save($"{ImportContext.SavePath}.{GetSaveExtension()}", packedScene));
        }
コード例 #4
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);
    }