OutOfBody/Scripts/OoB.cs

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