From 436a020c3eaf7570d634649192e42981ba9b64d1 Mon Sep 17 00:00:00 2001 From: Anuken Date: Thu, 22 Oct 2020 20:44:18 -0400 Subject: [PATCH] Fixed attack mode gamover check --- core/src/mindustry/core/Logic.java | 18 ++++++------------ .../ui/fragments/MinimapFragment.java | 5 +++-- 2 files changed, 9 insertions(+), 14 deletions(-) diff --git a/core/src/mindustry/core/Logic.java b/core/src/mindustry/core/Logic.java index a96ea101a9..b8d736126b 100644 --- a/core/src/mindustry/core/Logic.java +++ b/core/src/mindustry/core/Logic.java @@ -199,19 +199,13 @@ public class Logic implements ApplicationListener{ state.gameOver = true; Events.fire(new GameOverEvent(state.rules.waveTeam)); }else if(state.rules.attackMode){ - Team alive = null; + //count # of teams alive + int countAlive = state.teams.getActive().count(TeamData::hasCore); - for(TeamData team : state.teams.getActive()){ - if(team.hasCore()){ - if(alive != null){ - return; - } - alive = team.team; - } - } - - if(alive != null && !state.gameOver){ - Events.fire(new GameOverEvent(alive)); + if((countAlive <= 1 || (!state.rules.pvp && state.rules.defaultTeam.core() == null)) && !state.gameOver){ + //find team that won + TeamData left = state.teams.getActive().find(TeamData::hasCore); + Events.fire(new GameOverEvent(left == null ? Team.derelict : left.team)); state.gameOver = true; } } diff --git a/core/src/mindustry/ui/fragments/MinimapFragment.java b/core/src/mindustry/ui/fragments/MinimapFragment.java index 5acf3bc6d3..0bb3632a61 100644 --- a/core/src/mindustry/ui/fragments/MinimapFragment.java +++ b/core/src/mindustry/ui/fragments/MinimapFragment.java @@ -113,8 +113,9 @@ public class MinimapFragment extends Fragment{ public void toggle(){ float size = baseSize * zoom * world.width(); float ratio = (float)renderer.minimap.getTexture().height / renderer.minimap.getTexture().width; - panx = (size/2f - player.x() / (world.width() * tilesize) * size) / zoom; - pany = (size*ratio/2f - player.y() / (world.height() * tilesize) * size*ratio) / zoom; + float px = player.dead() ? Core.camera.position.x : player.x, py = player.dead() ? Core.camera.position.y : player.y; + panx = (size/2f - px / (world.width() * tilesize) * size) / zoom; + pany = (size*ratio/2f - py / (world.height() * tilesize) * size*ratio) / zoom; shown = !shown; } }