67 lines
1.6 KiB
C#
67 lines
1.6 KiB
C#
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<AudioStreamPlayer>("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<PackedScene>("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<PackedScene>("res://Levels/" + Level.ToString() + ".tscn");
|
|
var instanceLevel = packedLevel.Instantiate();
|
|
AddChild(instanceLevel);
|
|
}
|
|
}
|
|
}
|