From 0198d3c2a659bf8384198bb8077d68eb4b975af6 Mon Sep 17 00:00:00 2001
From: Pan Hu
Date: Tue, 15 Jan 2019 18:03:26 +1300
Subject: [PATCH] commit from work
---
core/AssetManager.java | 4 ++--
enemyAI/defenseManagerAI.java | 44 +++++++++++++++++++++++++++++++++-
enemyAI/mapAwarenessAI.java | 7 +-----
enemyAI/scoutingManagerAI.java | 20 ++++++++++------
enemyAI/unitProductionAI.java | 2 ++
5 files changed, 61 insertions(+), 16 deletions(-)
diff --git a/core/AssetManager.java b/core/AssetManager.java
index 6bf0334..7d38d20 100644
--- a/core/AssetManager.java
+++ b/core/AssetManager.java
@@ -251,8 +251,8 @@ public class AssetManager {
for(int i = 0; i < 10; i ++){
for(int j = 0; j < 6; j++){
- //heavyTank l = new heavyTank(new vector(i*0.25f+ 1.125f,-0.3f, 17.375f - 0.25f*j), 90, 0);
- //addHeavyTank(l);
+ heavyTank l = new heavyTank(new vector(i*0.25f+ 1.125f,-0.3f, 17.375f - 0.25f*j), 90, 0);
+ addHeavyTank(l);
//l.hasMultiShotUpgrade = true;
//lightTank l = new lightTank(new vector(i*0.25f + 1.125f,-0.3f, 0.5f + 18.625f + j*0.25f), 90, 0);
diff --git a/enemyAI/defenseManagerAI.java b/enemyAI/defenseManagerAI.java
index 1f8bb59..1a91ebb 100644
--- a/enemyAI/defenseManagerAI.java
+++ b/enemyAI/defenseManagerAI.java
@@ -21,6 +21,7 @@ public class defenseManagerAI {
public solidObject[] stealthTanksControlledByCombatAI;
public solidObject[] defenders;
+ public int numOfDefenders;
public vector direction;
@@ -125,12 +126,53 @@ public class defenseManagerAI {
minorThreatLocation.reset();
majorThreatLocation.reset();
+
// if the size of the player unit cluster is less than 5, and no heavy tanks in the cluster, then borrow some unites from combatAI to deal with the threat
//if(mainPlayerForceSize < 5 && playerForceContainsNoHeavyTank(mainPlayerForceLocation) && playerForceIsNearBase(mainPlayerForceLocation)) {
//}
-
+ System.out.println(playerForceContainsNoHeavyTank(mainPlayerForceLocation));
+
+ }
+
+ public boolean playerForceIsNearBase(vector location) {
+
+
+ return false;
+ }
+
+ public boolean playerForceContainsNoHeavyTank(vector location) {
+ solidObject o = null;
+ for(int i = 0; i < mainThread.ec.theMapAwarenessAI.playerUnitInMinimap.length; i++) {
+ o = mainThread.ec.theMapAwarenessAI.playerUnitInMinimap[i];
+ if(o !=null && o.currentHP > 0 && o.type == 7 && (o.centre.x - location.x)*(o.centre.x - location.x) + (o.centre.z - location.z)*(o.centre.z - location.z) < 4)
+ return false;
+ }
+
+ return true;
+ }
+
+ public void addUnitToDefenders(solidObject o) {
+ numOfDefenders = 0;
+ for(int i = 0; i < defenders.length; i++) {
+ if(defenders[i] != null && defenders[i].currentHP > 0)
+ numOfDefenders++;
+ }
+
+
+ if(numOfDefenders == defenders.length && minorThreatLocation.x == 0) {
+ for(int i = defenders.length - 1; i > 0; i--)
+ defenders[i] = defenders[i - 1];
+ defenders[0] = o;
+ }else {
+ for(int i = 0; i < defenders.length; i++) {
+ if(defenders[i] == null || defenders[i].currentHP <= 0) {
+ defenders[i] = o;
+ break;
+ }
+ }
+ }
}
diff --git a/enemyAI/mapAwarenessAI.java b/enemyAI/mapAwarenessAI.java
index bbf76a5..b7eccb3 100644
--- a/enemyAI/mapAwarenessAI.java
+++ b/enemyAI/mapAwarenessAI.java
@@ -545,12 +545,7 @@ public class mapAwarenessAI {
playerForceDirections[i].set(0,0,0);
playerForceSize[i] = 0;
}
-
-
- if(numberOfPlayerUnitsOnMinimap < 5)
- return;
-
-
+
for(int i = 0; i < playerUnitInMinimap.length; i++) {
if(playerUnitInMinimap[i] == null)
continue;
diff --git a/enemyAI/scoutingManagerAI.java b/enemyAI/scoutingManagerAI.java
index e3f758c..2f904fa 100644
--- a/enemyAI/scoutingManagerAI.java
+++ b/enemyAI/scoutingManagerAI.java
@@ -164,8 +164,17 @@ public class scoutingManagerAI {
}
- if(scout.type == 0)
+ if(scout.type == 0) {
+ if(mainThread.ec.theDefenseManagerAI.minorThreatLocation.x != 0 || mainThread.ec.theDefenseManagerAI.majorThreatLocation.x != 0) {
+ if(scout.currentHP > 0) {
+ mainThread.ec.theUnitProductionAI.addLightTank((lightTank)scout);
+ scout.moveTo(mainThread.ec.theUnitProductionAI.rallyPoint.x, mainThread.ec.theUnitProductionAI.rallyPoint.z);
+ scout.currentCommand = solidObject.attackMove;
+ scout.secondaryCommand = solidObject.attackMove;
+ }
+ }
return;
+ }
//try to avoid collision with player units
int xPos_old = scout.boundary2D.x1;
@@ -221,9 +230,6 @@ public class scoutingManagerAI {
scout.boundary2D.setOrigin(xPos_old, yPos_old);
}
-
-
-
}
@@ -304,9 +310,9 @@ public class scoutingManagerAI {
//build light tank as scout when stealth tank tech is locked
public boolean needLightTank(){
- //if((scout == null ) && !theBaseInfo.canBuildStealthTank){
- // return true;
- //}
+ if((scout == null ) && !theBaseInfo.canBuildStealthTank && mainThread.ec.theDefenseManagerAI.minorThreatLocation.x == 0 && mainThread.ec.theDefenseManagerAI.majorThreatLocation.x == 0){
+ return true;
+ }
return false;
}
diff --git a/enemyAI/unitProductionAI.java b/enemyAI/unitProductionAI.java
index 0072e4e..d4896e9 100644
--- a/enemyAI/unitProductionAI.java
+++ b/enemyAI/unitProductionAI.java
@@ -253,6 +253,7 @@ public class unitProductionAI {
if(lightTanksControlledByCombatAI[i] == null || (lightTanksControlledByCombatAI[i] != null && lightTanksControlledByCombatAI[i].currentHP <=0)){
lightTanksControlledByCombatAI[i] = o;
unitProduced++;
+ mainThread.ec.theDefenseManagerAI.addUnitToDefenders(o);
break;
}
}
@@ -293,6 +294,7 @@ public class unitProductionAI {
if(stealthTanksControlledByCombatAI[i] == null || (stealthTanksControlledByCombatAI[i] != null && stealthTanksControlledByCombatAI[i].currentHP <=0)){
stealthTanksControlledByCombatAI[i] = o;
unitProduced++;
+ mainThread.ec.theDefenseManagerAI.addUnitToDefenders(o);
break;
}
}