Files
peggle-roguelike/PlayerController.cs
T

54 lines
1.6 KiB
C#

using Godot;
using System;
using System.Collections.Generic;
using System.Linq;
public partial class PlayerController : TurnController
{
public EnemyController _enemyController;
public PackedScene _commanderScene = GD.Load<PackedScene>("res://Commander.tscn");
public List<Tower> _towers = new();
public override void _Ready()
{
base._Ready();
}
public void CheckForTurnEnd()
{
if (_towers.Where(t => t._commander != null).ToList().All(t=>t._commander._actions == 0))
{
EmitSignal(SignalName.TurnDone);
}
}
public void SetUpTowers(int TOWER_COUNT = 5)
{
Tower tower = GetNode<Tower>("Tower1");
Vector2 towerPositionCorrection = tower._offset.Position;
float spaceBetweenTowers = _playArea._map._sizeInPixels.X / (TOWER_COUNT - 1);
tower.GlobalPosition = _playArea._map.GlobalPosition - _playArea._map._sizeInPixels / 2 + towerPositionCorrection;
_towers.Add(tower);
for (int i = 1; i < TOWER_COUNT; i++)
{
Tower newTower = (Tower)tower.Duplicate();
newTower.GlobalPosition += new Vector2(spaceBetweenTowers * i - towerPositionCorrection.X * i / (TOWER_COUNT - 1) * 2, 0);
_towers.Add(newTower);
AddChild(newTower);
}
Commander newCommander = _commanderScene.Instantiate<Commander>();
newCommander._playerController = this;
newCommander.ActionsUp += CheckForTurnEnd;
_towers[3]._commander = newCommander;
_towers[3].AddChild(newCommander);
}
public override void StartTurn()
{
_towers.ForEach(t => t.StartTurn());
}
}