Minor logic unit rotation fix / Core capture unit derelict tareting

This commit is contained in:
Anuken
2021-06-29 16:26:02 -04:00
parent c7bd9dd0fa
commit 6c18634b0d
5 changed files with 10 additions and 13 deletions

View File

@@ -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);

View File

@@ -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),

View File

@@ -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);
} }
} }

View File

@@ -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(){

View File

@@ -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);
} }
} }