-
Notifications
You must be signed in to change notification settings - Fork 0
/
BA_Dominate.cs
128 lines (101 loc) · 3.65 KB
/
BA_Dominate.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
using UnityEngine;
using System.Collections;
public class BA_Dominate : BossAbility
{
BossAgonist bossAgonist;
ChessPiece targetChessPiece;
ArrayList potentialPlacesToMoveTarget;
ArrayList potentialTargets;
//Cycle through potential moves of target chess piece, and move it into a position in which it can be captured.
void Awake ()
///////////////////////////////////////////////////////////////////////////
{
hasCastingCinematic = true;
}
override protected void OnStart ()
///////////////////////////////////////////////////////////////////////////
{
abilityName = "Dominate";
canMoveAfterComplete = true;
bossAgonist = gameObject.GetComponent<BossAgonist> ();
}
override public bool IsReady ()
///////////////////////////////////////////////////////////////////////////
{
potentialTargets = new ArrayList ();
foreach (ChessPiece player1Piece in scenario.GetAllChessPiecesForPlayer(1)) {
foreach (ChessPiece player2Piece in scenario.GetAllChessPiecesForPlayer(2)) {
if (player1Piece.CanCaptureXY (player2Piece.x, player2Piece.y))
potentialTargets.Add (player1Piece);
}
}
int targetValue = 0;
foreach (ChessPiece piece in potentialTargets) {
if (piece.GetValue () > targetValue) {
targetValue = piece.GetValue ();
targetChessPiece = piece;
}
}
if (targetChessPiece == null)
{
return false;
}
else
{
potentialPlacesToMoveTarget = new ArrayList ();
foreach (PotentialMove move in targetChessPiece.GetMoveList())
{
//Debug.Log (player2Piece.gameObject.name + ": Has " + player2Piece.GetMoveList().Count + " potential moves");
//int goodmoves = 0;
foreach (ChessPiece player2Piece in scenario.GetAllChessPiecesForPlayer(2)) {
//Debug.Log ("checked" + counter + "moves");
if (player2Piece.CanCaptureChessPieceIfItMovedToXY (targetChessPiece, move.x, move.y))
{
if (GameObject.FindGameObjectWithTag ("Scenario").GetComponent<Scenario> ().GetPieceAtXY (move.x, move.y) == null)
{
//goodmoves++;
potentialPlacesToMoveTarget.Add (move);
Debug.Log(potentialPlacesToMoveTarget.Count);
}
}
}
// Debug.Log (player2Piece.gameObject.name + ": Potential Places to Move Target: " + goodmoves);
}
}
if(potentialPlacesToMoveTarget.Count > 0){
return true;
}
else {
return false;
}
}
override public void Activate ()
///////////////////////////////////////////////////////////////////////////
{
base.Activate ();
//Debug.Log (gameObject.name + ": I have " + potentialPlacesToMoveTarget.Count + " places I can move the target piece so it can be captured");
int chosenSpot = (int)UnityEngine.Random.Range (0, potentialPlacesToMoveTarget.Count);
targetChessPiece.MoveToXY (((PotentialMove)potentialPlacesToMoveTarget [chosenSpot]).x, ((PotentialMove)potentialPlacesToMoveTarget [chosenSpot]).y);
}
override public void OnUpdate ()
///////////////////////////////////////////////////////////////////////////
{
}
override public void Deactivate ()
///////////////////////////////////////////////////////////////////////////
{
base.Deactivate ();
}
override public PotentialMove GetMove ()
///////////////////////////////////////////////////////////////////////////
{
if (targetChessPiece != null) {
PotentialMove move = new PotentialMove (GetComponent<ChessPiece> (), targetChessPiece.GetX (), targetChessPiece.GetY (), targetChessPiece);
move.SetBossAbility (true);
return move;
} else {
Debug.Log ("ERROR! " + gameObject.name + " tried to get a potential move on a null target!");
return null;
}
}
}