From 92ed7b523d3e225abd73b9bcf2c9b630606beee4 Mon Sep 17 00:00:00 2001
From: Pan Hu
Date: Thu, 17 Jan 2019 17:04:22 +1300
Subject: [PATCH] work commit
---
enemyAI/defenseManagerAI.java | 19 ++++++++++++++++---
1 file changed, 16 insertions(+), 3 deletions(-)
diff --git a/enemyAI/defenseManagerAI.java b/enemyAI/defenseManagerAI.java
index 1e364a7..985393e 100644
--- a/enemyAI/defenseManagerAI.java
+++ b/enemyAI/defenseManagerAI.java
@@ -151,7 +151,7 @@ public class defenseManagerAI {
System.out.println("SOS!");
}
}else if(mainPlayerForceSize >= 5){
- //if the size of player unit cluster is bigger or equal to 5 then inform combatAI about the threat
+ //if the size of player unit cluster is bigger or equal to 5 then check if the threat is a big one
}
//take over controls of defenders from combat AI to deal with minor threat
@@ -182,7 +182,7 @@ public class defenseManagerAI {
if(defenersInStandbyMode) {
giveBackControlOfDefendersToCombatAI();
- //move back to combat center
+ //move back to rally point
for(int i =0; i < defenders.length; i++) {
if(defenders[i] != null && gameTime%20==0) {
defenders[i].moveTo(mainThread.ec.theUnitProductionAI.rallyPoint.x, mainThread.ec.theUnitProductionAI.rallyPoint.z);
@@ -286,7 +286,7 @@ public class defenseManagerAI {
}
- if(numOfDefenders == defenders.length && minorThreatLocation.x == 0 && defenersInStandbyMode) {
+ if(numOfDefenders == defenders.length && (minorThreatLocation.x == 0 && defenersInStandbyMode || minorThreatLocation.x != 0 && newUnitIsCloserToThreat(o))) {
giveBackControlOfDefendersToCombatAI();
for(int i = defenders.length - 1; i > 0; i--)
defenders[i] = defenders[i - 1];
@@ -302,6 +302,19 @@ public class defenseManagerAI {
}
}
+ public boolean newUnitIsCloserToThreat(solidObject o) {
+ float d = (o.centre.x - minorThreatLocation.x)*(o.centre.x - minorThreatLocation.x) + (o.centre.z - minorThreatLocation.z)*(o.centre.z - minorThreatLocation.z);
+ for(int i = 0; i < defenders.length; i++) {
+ if(defenders[i] != null && defenders[i].currentHP > 0) {
+ if(d > (defenders[i].centre.x - minorThreatLocation.x)*(defenders[i].centre.x - minorThreatLocation.x) + (defenders[i].centre.z - minorThreatLocation.z)*(defenders[i].centre.z - minorThreatLocation.z)) {
+ return false;
+ }
+ }
+ }
+
+ return true;
+ }
+
public boolean evadePlayerUnit(int observerIndex){