using Godot; using System; public partial class OoB : Node2D { public int currentLevel = 0; //the current level, so that level only changese when it changes private AudioStreamPlayer ExitDoot; //just an audio track [Export] public int Level = 0; //level counter, 0 is main menue, all else is normal public override void _Ready() // on startup { ExitDoot = GetNode("ExitDoot"); } // Called every frame. 'delta' is the elapsed time since the previous frame. public override void _Process(double delta) { if(Level != currentLevel) //if the level has changed { ExitDoot.Play(); for(int i = 0; i < GetChildCount(); i++) { if(GetChild(i).IsInGroup("Level")) { GetChild(i).QueueFree(); //removing current level } } if(Level == 7) { for(int i = 0; i < GetChildCount(); i++) { if(GetChild(i).IsInGroup("Player")) { GetChild(i).QueueFree(); //removing current level } } } //making new level var packedLevel = GD.Load("res://Levels/" + Level.ToString() + ".tscn"); var instanceLevel = packedLevel.Instantiate(); AddChild(instanceLevel); currentLevel = Level; } } public override void _Input(InputEvent @event) { if (@event.IsActionPressed("Reset")) { for(int i = 0; i < GetChildCount(); i++) { if(GetChild(i).IsInGroup("Level")) { GetChild(i).QueueFree(); //removing current level } } //making new level var packedLevel = GD.Load("res://Levels/" + Level.ToString() + ".tscn"); var instanceLevel = packedLevel.Instantiate(); AddChild(instanceLevel); } } }