diff --git a/core/src/mindustry/ai/BlockIndexer.java b/core/src/mindustry/ai/BlockIndexer.java index d5d2f747e2..b010562595 100644 --- a/core/src/mindustry/ai/BlockIndexer.java +++ b/core/src/mindustry/ai/BlockIndexer.java @@ -162,7 +162,7 @@ public class BlockIndexer{ /** Get all enemy blocks with a flag. */ public Array getEnemy(Team team, BlockFlag type){ returnArray.clear(); - for(Team enemy : state.teams.enemiesOf(team)){ + for(Team enemy : team.enemies()){ if(state.teams.isActive(enemy)){ ObjectSet set = getFlagged(enemy)[type.ordinal()]; if(set != null){ diff --git a/core/src/mindustry/ai/WaveSpawner.java b/core/src/mindustry/ai/WaveSpawner.java index 129b930d3b..3bd5bc5400 100644 --- a/core/src/mindustry/ai/WaveSpawner.java +++ b/core/src/mindustry/ai/WaveSpawner.java @@ -92,7 +92,7 @@ public class WaveSpawner{ if(state.rules.attackMode && state.teams.isActive(state.rules.waveTeam) && !state.teams.playerCores().isEmpty()){ TileEntity firstCore = state.teams.playerCores().first(); - for(TileEntity core : state.teams.get(state.rules.waveTeam).cores){ + for(TileEntity core : state.rules.waveTeam.cores()){ Tmp.v1.set(firstCore).sub(core.x, core.y).limit(coreMargin + core.block.size*tilesize); cons.accept(core.x + Tmp.v1.x, core.y + Tmp.v1.y, false); } diff --git a/core/src/mindustry/entities/Damage.java b/core/src/mindustry/entities/Damage.java index 73f0b4996e..3c4b130e0d 100644 --- a/core/src/mindustry/entities/Damage.java +++ b/core/src/mindustry/entities/Damage.java @@ -259,7 +259,7 @@ public class Damage{ for(int dx = -trad; dx <= trad; dx++){ for(int dy = -trad; dy <= trad; dy++){ Tile tile = world.tile(Math.round(x / tilesize) + dx, Math.round(y / tilesize) + dy); - if(tile != null && tile.entity != null && (team == null || state.teams.areEnemies(team, tile.getTeam())) && Mathf.dst(dx, dy) <= trad){ + if(tile != null && tile.entity != null && (team == null ||team.isEnemy(tile.getTeam())) && Mathf.dst(dx, dy) <= trad){ tile.entity.damage(damage); } } diff --git a/core/src/mindustry/entities/Units.java b/core/src/mindustry/entities/Units.java index 7592551ce4..6bcd15e1c5 100644 --- a/core/src/mindustry/entities/Units.java +++ b/core/src/mindustry/entities/Units.java @@ -83,7 +83,7 @@ public class Units{ public static TileEntity findEnemyTile(Team team, float x, float y, float range, Boolf pred){ if(team == Team.derelict) return null; - for(Team enemy : state.teams.enemiesOf(team)){ + for(Team enemy : team.enemies()){ TileEntity entity = indexer.findTile(enemy, x, y, range, pred, true); if(entity != null){ return entity; @@ -195,13 +195,13 @@ public class Units{ /** Iterates over all units that are enemies of this team. */ public static void nearbyEnemies(Team team, float x, float y, float width, float height, Cons cons){ unitGroup.intersect(x, y, width, height, u -> { - if(state.teams.areEnemies(team, u.getTeam())){ + if(team.isEnemy(u.getTeam())){ cons.get(u); } }); playerGroup.intersect(x, y, width, height, player -> { - if(state.teams.areEnemies(team, player.getTeam())){ + if(team.isEnemy(player.getTeam())){ cons.get(player); } }); diff --git a/core/src/mindustry/entities/type/Unit.java b/core/src/mindustry/entities/type/Unit.java index f9c78a747b..ab02f24c83 100644 --- a/core/src/mindustry/entities/type/Unit.java +++ b/core/src/mindustry/entities/type/Unit.java @@ -88,7 +88,7 @@ public abstract class Unit extends DestructibleEntity implements SaveTrait, Targ if(isDead()) return false; if(other instanceof DamageTrait){ - return other instanceof TeamTrait && state.teams.areEnemies((((TeamTrait)other).getTeam()), team); + return other instanceof TeamTrait && (((TeamTrait)other).getTeam()).isEnemy(team); }else{ return other instanceof Unit && ((Unit)other).isFlying() == isFlying(); } diff --git a/core/src/mindustry/entities/type/base/BuilderDrone.java b/core/src/mindustry/entities/type/base/BuilderDrone.java index 6442347de4..336be7be6e 100644 --- a/core/src/mindustry/entities/type/base/BuilderDrone.java +++ b/core/src/mindustry/entities/type/base/BuilderDrone.java @@ -1,10 +1,9 @@ package mindustry.entities.type.base; import arc.*; -import arc.struct.*; import arc.math.*; +import arc.struct.*; import arc.util.*; -import mindustry.*; import mindustry.entities.*; import mindustry.entities.traits.*; import mindustry.entities.type.*; @@ -187,7 +186,7 @@ public class BuilderDrone extends BaseDrone implements BuilderTrait{ } if(timer.get(timerTarget, 80) && Units.closestEnemy(getTeam(), x, y, 100f, u -> !(u instanceof BaseDrone)) == null && !isBuilding()){ - TeamData data = Vars.state.teams.get(team); + TeamData data = team.data(); if(!data.brokenBlocks.isEmpty()){ BrokenBlock block = data.brokenBlocks.removeLast(); if(Build.validPlace(getTeam(), block.x, block.y, content.block(block.block), block.rotation)){ diff --git a/core/src/mindustry/entities/type/base/GroundUnit.java b/core/src/mindustry/entities/type/base/GroundUnit.java index 5f7c6d2768..d680fa230a 100644 --- a/core/src/mindustry/entities/type/base/GroundUnit.java +++ b/core/src/mindustry/entities/type/base/GroundUnit.java @@ -237,15 +237,15 @@ public class GroundUnit extends BaseUnit{ protected void moveAwayFromCore(){ Team enemy = null; - for(Team team : Vars.state.teams.enemiesOf(team)){ - if(Vars.state.teams.isActive(team)){ + for(Team team : Vars.team.enemies()){ + if(team.active()){ enemy = team; break; } } if(enemy == null){ - for(Team team : Vars.state.teams.enemiesOf(team)){ + for(Team team : Vars.team.enemies()){ enemy = team; break; } diff --git a/core/src/mindustry/game/Team.java b/core/src/mindustry/game/Team.java index 809d60f714..b6b608d5d0 100644 --- a/core/src/mindustry/game/Team.java +++ b/core/src/mindustry/game/Team.java @@ -2,8 +2,13 @@ package mindustry.game; import arc.*; import arc.graphics.*; +import arc.struct.*; import arc.util.*; +import mindustry.game.Teams.*; import mindustry.graphics.*; +import mindustry.world.blocks.storage.CoreBlock.*; + +import static mindustry.Vars.*; public class Team implements Comparable{ public final byte id; @@ -54,6 +59,30 @@ public class Team implements Comparable{ all[us] = this; } + public Array enemies(){ + return state.teams.enemiesOf(this); + } + + public TeamData data(){ + return state.teams.get(this); + } + + public CoreEntity core(){ + return data().core(); + } + + public boolean active(){ + return state.teams.isActive(this); + } + + public boolean isEnemy(Team other){ + return state.teams.areEnemies(this, other); + } + + public Array cores(){ + return state.teams.cores(this); + } + public String localized(){ return Core.bundle.get("team." + name + ".name", name); } diff --git a/core/src/mindustry/game/Teams.java b/core/src/mindustry/game/Teams.java index 5d2b570cd2..dc44d47240 100644 --- a/core/src/mindustry/game/Teams.java +++ b/core/src/mindustry/game/Teams.java @@ -161,7 +161,7 @@ public class Teams{ return cores.isEmpty(); } - public TileEntity core(){ + public CoreEntity core(){ return cores.first(); } } diff --git a/core/src/mindustry/game/Tutorial.java b/core/src/mindustry/game/Tutorial.java index 300ab01283..4b344bc945 100644 --- a/core/src/mindustry/game/Tutorial.java +++ b/core/src/mindustry/game/Tutorial.java @@ -271,7 +271,7 @@ public class Tutorial{ } static int item(Item item){ - return state.teams.get(state.rules.defaultTeam).noCores() ? 0 : state.teams.playerCores().first().items.get(item); + return state.rules.defaultTeam.data().noCores() ? 0 : state.rules.defaultTeam.core().items.get(item); } static boolean toggled(String name){ diff --git a/core/src/mindustry/input/InputHandler.java b/core/src/mindustry/input/InputHandler.java index 2a4ce0343f..b35683c7e2 100644 --- a/core/src/mindustry/input/InputHandler.java +++ b/core/src/mindustry/input/InputHandler.java @@ -402,7 +402,7 @@ public abstract class InputHandler implements InputProcessor, GestureListener{ } } - for(BrokenBlock req : state.teams.get(player.getTeam()).brokenBlocks){ + for(BrokenBlock req : player.getTeam().data().brokenBlocks){ Block block = content.block(req.block); if(block.bounds(req.x, req.y, Tmp.r2).overlaps(Tmp.r1)){ drawSelected(req.x, req.y, content.block(req.block), Pal.remove); diff --git a/core/src/mindustry/input/MobileInput.java b/core/src/mindustry/input/MobileInput.java index 5379caf113..81f657c876 100644 --- a/core/src/mindustry/input/MobileInput.java +++ b/core/src/mindustry/input/MobileInput.java @@ -77,7 +77,7 @@ public class MobileInput extends InputHandler implements GestureListener{ }else{ Tile tile = world.ltileWorld(x, y); - if(tile != null && tile.synthetic() && state.teams.areEnemies(player.getTeam(), tile.getTeam())){ + if(tile != null && tile.synthetic() && player.getTeam().isEnemy(tile.getTeam())){ TileEntity entity = tile.entity; player.setMineTile(null); player.target = entity; diff --git a/core/src/mindustry/io/SaveVersion.java b/core/src/mindustry/io/SaveVersion.java index 1d4ab19859..06c75bc878 100644 --- a/core/src/mindustry/io/SaveVersion.java +++ b/core/src/mindustry/io/SaveVersion.java @@ -259,7 +259,7 @@ public abstract class SaveVersion extends SaveFileReader{ int teamc = stream.readInt(); for(int i = 0; i < teamc; i++){ Team team = Team.get(stream.readInt()); - TeamData data = state.teams.get(team); + TeamData data = team.data(); int blocks = stream.readInt(); for(int j = 0; j < blocks; j++){ data.brokenBlocks.addLast(new BrokenBlock(stream.readShort(), stream.readShort(), stream.readShort(), content.block(stream.readShort()).id, stream.readInt())); diff --git a/core/src/mindustry/ui/ItemsDisplay.java b/core/src/mindustry/ui/ItemsDisplay.java index 755590f34f..d59a579c16 100644 --- a/core/src/mindustry/ui/ItemsDisplay.java +++ b/core/src/mindustry/ui/ItemsDisplay.java @@ -39,7 +39,7 @@ public class ItemsDisplay extends Table{ private String format(Item item){ builder.setLength(0); builder.append(ui.formatAmount(data.items().get(item, 0))); - if(!state.is(State.menu) && state.teams.get(player.getTeam()).hasCore() && state.teams.get(player.getTeam()).core().items.get(item) > 0){ + if(!state.is(State.menu) && player.getTeam().data().hasCore() && player.getTeam().core().items.get(item) > 0){ builder.append(" [unlaunched]+ "); builder.append(ui.formatAmount(state.teams.get(player.getTeam()).core().items.get(item))); } diff --git a/desktop/src/mindustry/desktop/steam/SStats.java b/desktop/src/mindustry/desktop/steam/SStats.java index bc355c26b0..950bffc249 100644 --- a/desktop/src/mindustry/desktop/steam/SStats.java +++ b/desktop/src/mindustry/desktop/steam/SStats.java @@ -64,7 +64,7 @@ public class SStats implements SteamUserStatsCallback{ active50Crawlers.complete(); } - for(TileEntity entity : state.teams.get(player.getTeam()).cores){ + for(TileEntity entity : player.getTeam().cores()){ if(!content.items().contains(i -> i.type == ItemType.material && entity.items.get(i) < entity.block.itemCapacity)){ fillCoreAllCampaign.complete(); break; diff --git a/gradle.properties b/gradle.properties index eb016eca65..f8748c523a 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,3 +1,3 @@ org.gradle.daemon=true org.gradle.jvmargs=-Xms256m -Xmx1024m -archash=44e060c9f2bf11eb7e41f79d967fdfeca9f8b62a +archash=29782072a3c824715118f51ebe23c189ba0d9597