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); }