36 lines
839 B
C#
36 lines
839 B
C#
using Godot;
|
|
using System.Linq;
|
|
|
|
public partial class AreaExit : Node3D
|
|
{
|
|
[Export]
|
|
private int _levelIndex;
|
|
|
|
private GameManager _gameManager;
|
|
|
|
public override void _Ready()
|
|
{
|
|
_gameManager = GetTree().Root.GetNode<GameManager>("Main/GameManager");
|
|
}
|
|
|
|
|
|
private void OnExitEntered(Node3D node)
|
|
{
|
|
Character incoming = null;
|
|
if (node is Character nodeCharacter)
|
|
incoming = nodeCharacter;
|
|
else if (node.GetParent().GetParent() is Character parentedNode)
|
|
incoming = parentedNode;
|
|
|
|
if (incoming != null)
|
|
{
|
|
_gameManager.RemoveCharacterAndAddToExit(incoming.OwnerPlayer);
|
|
|
|
GD.Print($"Exit reached by {incoming.Name}");
|
|
|
|
if (!_gameManager.Players.Any(x => x.CharactersLeftOnStage.Any()))
|
|
_gameManager.OnLevelClear();
|
|
}
|
|
}
|
|
}
|