From ad48e723d5caa6f17233533ac1cbbfe480421eb5 Mon Sep 17 00:00:00 2001 From: Zenny Date: Mon, 4 Sep 2023 16:40:14 -0700 Subject: [PATCH] End to end kind of works --- Scripts/GameManager.cs | 40 +++++++++++++++++++++++++--------------- Scripts/Level.cs | 1 + 2 files changed, 26 insertions(+), 15 deletions(-) diff --git a/Scripts/GameManager.cs b/Scripts/GameManager.cs index 665cffe..b6ddc6a 100644 --- a/Scripts/GameManager.cs +++ b/Scripts/GameManager.cs @@ -36,9 +36,19 @@ public partial class GameManager : Node public void OnAllEnemiesDefeated() { GD.Print("All enemies defeated"); - P1CharactersOut.AddRange(Players.ElementAt(0).CharactersLeftOnStage); - if (Players.Count() == 2) - P2CharactersOut.AddRange(Players.ElementAt(1).CharactersLeftOnStage); + //var remainingCharacters = Players.ElementAt(0).CharactersLeftOnStage; + + //foreach (var player in remainingCharacters) + // RemoveCharacterAndAddToExit((Character1)player); + + //if (Players.Count() == 2) + //{ + // var remainingPlayers2 = Players.ElementAt(1).CharactersLeftOnStage; + + // foreach (var player in remainingPlayers2) + // RemoveCharacterAndAddToExit((Character2)player); + //} + OnLevelClear(); } @@ -69,26 +79,24 @@ public partial class GameManager : Node GD.Print("Instancing..."); var names = player.CharactersLeftOnStage.Select(x => x.Name).ToArray(); GD.Print(names); - var selectedCharacter = player.CharactersLeftOnStage[player._characterIndex]; - player.SelectedCharacter = selectedCharacter; - GetTree().Root.AddChild(player.SelectedCharacter); - player.SpawnPoint.SetPlayerPosition(player.SelectedCharacter); - } - - public void RemoveCharacter(Player player) - { - player.CharactersLeftOnStage.Remove(player.CharactersLeftOnStage.ElementAt(player._characterIndex)); - player.SelectedCharacter?.QueueFree(); - player._characterIndex = 0; if (player.CharactersLeftOnStage.Any()) - EmitSignal(SignalName.ReselectCharacter, player); + { + var selectedCharacter = player.CharactersLeftOnStage[player._characterIndex]; + player.SelectedCharacter = selectedCharacter; + GetTree().Root.AddChild(player.SelectedCharacter); + player.SpawnPoint.SetPlayerPosition(player.SelectedCharacter); + } } public void RemoveCharacterAndAddToExit(Character1 character) { P1CharactersOut.Add(character); Players.ElementAt(0).CharactersLeftOnStage.Remove(character); + GetTree().Root.RemoveChild(character); + + GD.Print(Players.ElementAt(0).CharactersLeftOnStage.Select(x => x.Name).ToArray()); + Players.ElementAt(0)._characterIndex = 0; if (Players.ElementAt(0).CharactersLeftOnStage.Any()) EmitSignal(SignalName.ReselectCharacter, Players.ElementAt(0)); @@ -98,7 +106,9 @@ public partial class GameManager : Node { P2CharactersOut.Add(character); Players.ElementAt(1).CharactersLeftOnStage.Remove(character); + GetTree().Root.RemoveChild(character); + Players.ElementAt(1)._characterIndex = 0; if (Players.ElementAt(1).CharactersLeftOnStage.Any()) EmitSignal(SignalName.ReselectCharacter, Players.ElementAt(1)); diff --git a/Scripts/Level.cs b/Scripts/Level.cs index 94d003c..385b039 100644 --- a/Scripts/Level.cs +++ b/Scripts/Level.cs @@ -28,6 +28,7 @@ public partial class Level : Node3D public void OnEnemyDefeated(Node3D enemyDefeated) { + GD.Print("On enemy defeated"); _enemies.Remove(enemyDefeated); if (!_enemies.Any()) _gameManager.OnAllEnemiesDefeated();