136 lines
4.1 KiB
C#
136 lines
4.1 KiB
C#
using Godot;
|
|
using System.Linq;
|
|
using static Godot.Projection;
|
|
|
|
public partial class StageGUI : Control
|
|
{
|
|
[Signal]
|
|
public delegate void OnCharacterSelectionMadeEventHandler(Player player);
|
|
[Signal]
|
|
public delegate void CapricornP1SelectedEventHandler();
|
|
[Signal]
|
|
public delegate void CapricornP2SelectedEventHandler();
|
|
[Signal]
|
|
public delegate void PiscesP1SelectedEventHandler();
|
|
[Signal]
|
|
public delegate void PiscesP2SelectedEventHandler();
|
|
[Signal]
|
|
public delegate void SagP1SelectedEventHandler();
|
|
[Signal]
|
|
public delegate void SagP2SelectedEventHandler();
|
|
[Signal]
|
|
public delegate void ScorpioP1SelectedEventHandler();
|
|
[Signal]
|
|
public delegate void ScorpioP2SelectedEventHandler();
|
|
|
|
private GameManager _gameManager;
|
|
|
|
public override void _Ready()
|
|
{
|
|
_gameManager = GetTree().Root.GetNode<GameManager>("Main/GameManager");
|
|
}
|
|
|
|
public void OnCharacterSelect(Player player)
|
|
{
|
|
if (player.GameOver)
|
|
return;
|
|
|
|
player.IsSelectingCharacter = true;
|
|
ChangeBG(player);
|
|
}
|
|
|
|
public override void _Process(double delta)
|
|
{
|
|
if (_gameManager.Players.ElementAt(0).IsSelectingCharacter)
|
|
{
|
|
if (Input.IsActionJustPressed("p1_right"))
|
|
{
|
|
_gameManager.SetToNextCharacter(_gameManager.Players.ElementAt(0));
|
|
ChangeBG(_gameManager.Players.ElementAt(0));
|
|
}
|
|
if (Input.IsActionJustPressed("p1_left"))
|
|
{
|
|
_gameManager.SetToPreviousCharacter(_gameManager.Players.ElementAt(0));
|
|
ChangeBG(_gameManager.Players.ElementAt(0));
|
|
}
|
|
|
|
if (Input.IsActionJustPressed("p1_fire"))
|
|
{
|
|
GD.Print("Selected character");
|
|
_gameManager.Players.ElementAt(0).IsSelectingCharacter = false;
|
|
EmitSignal(SignalName.OnCharacterSelectionMade, _gameManager.Players.ElementAt(0));
|
|
GetTree().Paused = false;
|
|
}
|
|
}
|
|
|
|
if (_gameManager.Players.Count() == 2 && _gameManager.Players.ElementAt(0).IsSelectingCharacter)
|
|
{
|
|
if (Input.IsActionJustPressed("p2_right"))
|
|
{
|
|
_gameManager.SetToNextCharacter(_gameManager.Players.ElementAt(1));
|
|
ChangeBG(_gameManager.Players.ElementAt(1));
|
|
}
|
|
if (Input.IsActionJustPressed("p2_left"))
|
|
{
|
|
_gameManager.SetToPreviousCharacter(_gameManager.Players.ElementAt(1));
|
|
ChangeBG(_gameManager.Players.ElementAt(1));
|
|
}
|
|
|
|
if (Input.IsActionJustPressed("p2_fire"))
|
|
{
|
|
GD.Print("Selected character");
|
|
_gameManager.Players.ElementAt(1).IsSelectingCharacter = false;
|
|
EmitSignal(SignalName.OnCharacterSelectionMade, _gameManager.Players.ElementAt(1));
|
|
GetTree().Paused = false;
|
|
}
|
|
}
|
|
}
|
|
|
|
private void ChangeBG(Player player)
|
|
{
|
|
var name = player.CharactersLeftOnStage.ElementAt(player._characterIndex).Name;
|
|
GD.Print(name);
|
|
switch (name)
|
|
{
|
|
case "CapricornP1":
|
|
EmitSignal(SignalName.CapricornP1Selected);
|
|
break;
|
|
case "CapricornP2":
|
|
EmitSignal(SignalName.CapricornP2Selected);
|
|
break;
|
|
case "ScorpioP1":
|
|
EmitSignal(SignalName.ScorpioP1Selected);
|
|
break;
|
|
case "ScorpioP2":
|
|
EmitSignal(SignalName.ScorpioP2Selected);
|
|
break;
|
|
case "PiscesP1":
|
|
EmitSignal(SignalName.PiscesP1Selected);
|
|
break;
|
|
case "PiscesP2":
|
|
EmitSignal(SignalName.PiscesP2Selected);
|
|
break;
|
|
case "MegamiP1":
|
|
EmitSignal(SignalName.SagP1Selected);
|
|
break;
|
|
case "MegamiP2":
|
|
EmitSignal(SignalName.SagP2Selected);
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
private void OnFirstPlayerCharacterSelect()
|
|
{
|
|
var player = _gameManager.Players.ElementAt(0);
|
|
OnCharacterSelect(player);
|
|
}
|
|
|
|
private void OnSecondPlayerCharacterSelect()
|
|
{
|
|
var player = _gameManager.Players.ElementAt(1);
|
|
OnCharacterSelect(player);
|
|
}
|
|
}
|