Minor logic unit rotation fix / Core capture unit derelict tareting
This commit is contained in:
@@ -285,7 +285,7 @@ public class BlockIndexer{
|
|||||||
for(int i = 0; i < activeTeams.size; i++){
|
for(int i = 0; i < activeTeams.size; i++){
|
||||||
Team enemy = activeTeams.items[i];
|
Team enemy = activeTeams.items[i];
|
||||||
|
|
||||||
if(enemy == team || team == Team.derelict) continue;
|
if(enemy == team || (team == Team.derelict && !state.rules.coreCapture)) continue;
|
||||||
|
|
||||||
Building entity = indexer.findTile(enemy, x, y, range, pred, true);
|
Building entity = indexer.findTile(enemy, x, y, range, pred, true);
|
||||||
if(entity != null){
|
if(entity != null){
|
||||||
@@ -360,7 +360,7 @@ public class BlockIndexer{
|
|||||||
private void process(Tile tile){
|
private void process(Tile tile){
|
||||||
var team = tile.team();
|
var team = tile.team();
|
||||||
//only process entity changes with centered tiles
|
//only process entity changes with centered tiles
|
||||||
if(tile.isCenter() && team != Team.derelict){
|
if(tile.isCenter() && tile.build != null){
|
||||||
var data = team.data();
|
var data = team.data();
|
||||||
if(tile.block().flags.size() > 0 && tile.isCenter()){
|
if(tile.block().flags.size() > 0 && tile.isCenter()){
|
||||||
TileArray[] map = getFlagged(team);
|
TileArray[] map = getFlagged(team);
|
||||||
|
|||||||
@@ -119,9 +119,11 @@ public class Pathfinder implements Runnable{
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int tid = tile.getTeamID();
|
||||||
|
|
||||||
return PathTile.get(
|
return PathTile.get(
|
||||||
tile.build == null || !solid || tile.block() instanceof CoreBlock ? 0 : Math.min((int)(tile.build.health / 40), 80),
|
tile.build == null || !solid || tile.block() instanceof CoreBlock ? 0 : Math.min((int)(tile.build.health / 40), 80),
|
||||||
tile.getTeamID(),
|
tid == 0 && tile.build != null && state.rules.coreCapture ? 255 : tid, //use teamid = 255 when core capture is enabled to mark out derelict structures
|
||||||
solid,
|
solid,
|
||||||
tile.floor().isLiquid,
|
tile.floor().isLiquid,
|
||||||
tile.staticDarkness() >= 2 || (tile.floor().solid && tile.block() == Blocks.air),
|
tile.staticDarkness() >= 2 || (tile.floor().solid && tile.block() == Blocks.air),
|
||||||
|
|||||||
@@ -104,7 +104,7 @@ public class LogicAI extends AIController{
|
|||||||
//look where moving if there's nothing to aim at
|
//look where moving if there's nothing to aim at
|
||||||
if(!shoot){
|
if(!shoot){
|
||||||
unit.lookAt(unit.prefRotation());
|
unit.lookAt(unit.prefRotation());
|
||||||
}else if(unit.hasWeapons() && unit.mounts.length > 0){ //if there is, look at the object
|
}else if(unit.hasWeapons() && unit.mounts.length > 0 && !unit.mounts[0].weapon.ignoreRotation){ //if there is, look at the object
|
||||||
unit.lookAt(unit.mounts[0].aimX, unit.mounts[0].aimY);
|
unit.lookAt(unit.mounts[0].aimX, unit.mounts[0].aimY);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -97,7 +97,7 @@ public class Team implements Comparable<Team>{
|
|||||||
}
|
}
|
||||||
|
|
||||||
public boolean isEnemy(Team other){
|
public boolean isEnemy(Team other){
|
||||||
return state.teams.areEnemies(this, other);
|
return this != other;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Seq<CoreBuild> cores(){
|
public Seq<CoreBuild> cores(){
|
||||||
|
|||||||
@@ -49,7 +49,7 @@ public class Teams{
|
|||||||
|
|
||||||
public boolean eachEnemyCore(Team team, Boolf<CoreBuild> ret){
|
public boolean eachEnemyCore(Team team, Boolf<CoreBuild> ret){
|
||||||
for(TeamData data : active){
|
for(TeamData data : active){
|
||||||
if(areEnemies(team, data.team)){
|
if(team != data.team){
|
||||||
for(CoreBuild tile : data.cores){
|
for(CoreBuild tile : data.cores){
|
||||||
if(ret.get(tile)){
|
if(ret.get(tile)){
|
||||||
return true;
|
return true;
|
||||||
@@ -62,7 +62,7 @@ public class Teams{
|
|||||||
|
|
||||||
public void eachEnemyCore(Team team, Cons<Building> ret){
|
public void eachEnemyCore(Team team, Cons<Building> ret){
|
||||||
for(TeamData data : active){
|
for(TeamData data : active){
|
||||||
if(areEnemies(team, data.team)){
|
if(team != data.team){
|
||||||
for(Building tile : data.cores){
|
for(Building tile : data.cores){
|
||||||
ret.get(tile);
|
ret.get(tile);
|
||||||
}
|
}
|
||||||
@@ -91,11 +91,6 @@ public class Teams{
|
|||||||
return get(team).active();
|
return get(team).active();
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Returns whether {@param other} is an enemy of {@param #team}. */
|
|
||||||
public boolean areEnemies(Team team, Team other){
|
|
||||||
return team != other;
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean canInteract(Team team, Team other){
|
public boolean canInteract(Team team, Team other){
|
||||||
return team == other || other == Team.derelict;
|
return team == other || other == Team.derelict;
|
||||||
}
|
}
|
||||||
@@ -216,7 +211,7 @@ public class Teams{
|
|||||||
Seq<Team> enemies = new Seq<>();
|
Seq<Team> enemies = new Seq<>();
|
||||||
|
|
||||||
for(TeamData other : active){
|
for(TeamData other : active){
|
||||||
if(areEnemies(data.team, other.team)){
|
if(data.team != other.team){
|
||||||
enemies.add(other.team);
|
enemies.add(other.team);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user