using Godot; using System; using System.Collections.Generic; using System.Linq; public partial class Enemy : Actor { public int _number; public Player _playerOpponent; public Cell _cell; public Enemy _owner; public List _defaultGoals = new(); public override void _Ready() { base._Ready(); _board = GetNode("Board"); _board.ClaimOwnership(this); _board.Disable(true); _defaultGoals.Add(GoalName.TopRow); _defaultGoals.Add(GoalName.MiddleRow); _defaultGoals.Add(GoalName.BottomRow); _defaultGoals.Add(GoalName.LeftColumn); _defaultGoals.Add(GoalName.MiddleColumn); _defaultGoals.Add(GoalName.RightColumn); _defaultGoals.Add(GoalName.Diagonal1To9); _defaultGoals.Add(GoalName.Diagonal3To7); } public virtual void PassPlayer(Player PLAYER) { _playerOpponent = PLAYER; } public void CheckGoals() { List ownedCells = _board.GetCellsByOwner(this); Goal goal = new Goal(); for (int i = 0; i < _defaultGoals.Count; i++) { GoalName goalName = _defaultGoals[i]; List addresses = goal.GetAddresses(goalName); bool goalMet = addresses.All(a=>ownedCells.Select(c=>c._address).ToList().IndexOf(a)>-1); if (goalMet) { Victory(goalName); return; } } } public virtual void ClickCell(Cell CLICKEDCELL) { } public void Defeat(GoalName WINNINGPATTERN) { _board._winningPattern = WINNINGPATTERN; _owner._board.GetCellByTenant(this).Mark(_playerOpponent); } public void Victory(GoalName WINNINGPATTERN) { _board._winningPattern = WINNINGPATTERN; _owner._board.GetCellByTenant(this).Mark(this); } }