mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-16 18:58:00 +00:00
Updates for Android
This commit is contained in:
@@ -5,7 +5,6 @@ import java.util.Collection;
|
|||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Map.Entry;
|
|
||||||
|
|
||||||
import forge.FThreads;
|
import forge.FThreads;
|
||||||
import forge.assets.FSkinImage;
|
import forge.assets.FSkinImage;
|
||||||
@@ -44,6 +43,7 @@ import forge.match.AbstractGuiGame;
|
|||||||
import forge.match.HostedMatch;
|
import forge.match.HostedMatch;
|
||||||
import forge.model.FModel;
|
import forge.model.FModel;
|
||||||
import forge.player.PlayerZoneUpdate;
|
import forge.player.PlayerZoneUpdate;
|
||||||
|
import forge.player.PlayerZoneUpdates;
|
||||||
import forge.properties.ForgePreferences;
|
import forge.properties.ForgePreferences;
|
||||||
import forge.properties.ForgePreferences.FPref;
|
import forge.properties.ForgePreferences.FPref;
|
||||||
import forge.screens.match.views.VAssignDamage;
|
import forge.screens.match.views.VAssignDamage;
|
||||||
@@ -307,40 +307,47 @@ public class MatchController extends AbstractGuiGame {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean openZones(final Collection<ZoneType> zones, final Map<PlayerView, Object> players) {
|
public PlayerZoneUpdates openZones(PlayerView controller, final Collection<ZoneType> zones, final Map<PlayerView, Object> playersWithTargetables) {
|
||||||
|
PlayerZoneUpdates updates = new PlayerZoneUpdates();
|
||||||
if (zones.size() == 1) {
|
if (zones.size() == 1) {
|
||||||
final ZoneType zoneType = zones.iterator().next();
|
final ZoneType zoneType = zones.iterator().next();
|
||||||
switch (zoneType) {
|
switch (zoneType) {
|
||||||
case Battlefield:
|
case Battlefield:
|
||||||
case Command:
|
case Command:
|
||||||
players.clear(); //clear since no zones need to be restored
|
playersWithTargetables.clear(); //clear since no zones need to be restored
|
||||||
return true; //Battlefield is always open
|
|
||||||
default:
|
default:
|
||||||
//open zone tab for given zone if needed
|
//open zone tab for given zone if needed
|
||||||
boolean result = true;
|
boolean result = true;
|
||||||
for (final PlayerView player : players.keySet()) {
|
for (final PlayerView player : playersWithTargetables.keySet()) {
|
||||||
final VPlayerPanel playerPanel = view.getPlayerPanel(player);
|
final VPlayerPanel playerPanel = view.getPlayerPanel(player);
|
||||||
players.put(player, playerPanel.getSelectedTab()); //backup selected tab before changing it
|
playersWithTargetables.put(player, playerPanel.getSelectedTab()); //backup selected tab before changing it
|
||||||
final InfoTab zoneTab = playerPanel.getZoneTab(zoneType);
|
final InfoTab zoneTab = playerPanel.getZoneTab(zoneType);
|
||||||
if (zoneTab == null) {
|
if (zoneTab != null) {
|
||||||
result = false;
|
updates.add(new PlayerZoneUpdate(player, zoneType));
|
||||||
} else {
|
|
||||||
playerPanel.setSelectedTab(zoneTab);
|
playerPanel.setSelectedTab(zoneTab);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return result;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return false;
|
return updates;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void restoreOldZones(final Map<PlayerView, Object> playersToRestoreZonesFor) {
|
public void restoreOldZones(PlayerView playerView, PlayerZoneUpdates playerZoneUpdates) {
|
||||||
for (final Entry<PlayerView, Object> player : playersToRestoreZonesFor.entrySet()) {
|
for(PlayerZoneUpdate update : playerZoneUpdates) {
|
||||||
final VPlayerPanel playerPanel = view.getPlayerPanel(player.getKey());
|
PlayerView player = update.getPlayer();
|
||||||
if (player.getValue() == null || player.getValue() instanceof InfoTab) {
|
|
||||||
playerPanel.setSelectedTab((InfoTab) player.getValue());
|
ZoneType zone = null;
|
||||||
|
for(ZoneType type : update.getZones()) {
|
||||||
|
zone = type;
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (zone == null) { return; }
|
||||||
|
|
||||||
|
final VPlayerPanel playerPanel = view.getPlayerPanel(player);
|
||||||
|
final InfoTab zoneTab = playerPanel.getZoneTab(zone);
|
||||||
|
playerPanel.setSelectedTab(zoneTab);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -31,6 +31,7 @@ import forge.menu.FDropDown;
|
|||||||
import forge.menu.FMenuItem;
|
import forge.menu.FMenuItem;
|
||||||
import forge.menu.FMenuTab;
|
import forge.menu.FMenuTab;
|
||||||
import forge.menu.FPopupMenu;
|
import forge.menu.FPopupMenu;
|
||||||
|
import forge.player.PlayerZoneUpdates;
|
||||||
import forge.screens.match.MatchController;
|
import forge.screens.match.MatchController;
|
||||||
import forge.screens.match.TargetingOverlay;
|
import forge.screens.match.TargetingOverlay;
|
||||||
import forge.toolbox.FCardPanel;
|
import forge.toolbox.FCardPanel;
|
||||||
@@ -55,6 +56,7 @@ public class VStack extends FDropDown {
|
|||||||
private StackInstanceDisplay activeItem;
|
private StackInstanceDisplay activeItem;
|
||||||
private StackItemView activeStackInstance;
|
private StackItemView activeStackInstance;
|
||||||
private Map<PlayerView, Object> playersWithValidTargets;
|
private Map<PlayerView, Object> playersWithValidTargets;
|
||||||
|
private PlayerZoneUpdates restorablePlayerZones = null;
|
||||||
|
|
||||||
private int stackSize;
|
private int stackSize;
|
||||||
|
|
||||||
@@ -70,6 +72,8 @@ public class VStack extends FDropDown {
|
|||||||
private void revealTargetZones() {
|
private void revealTargetZones() {
|
||||||
if (activeStackInstance == null) { return; }
|
if (activeStackInstance == null) { return; }
|
||||||
|
|
||||||
|
PlayerView player = MatchController.instance.getCurrentPlayer();
|
||||||
|
|
||||||
final Set<ZoneType> zones = new HashSet<>();
|
final Set<ZoneType> zones = new HashSet<>();
|
||||||
playersWithValidTargets = new HashMap<>();
|
playersWithValidTargets = new HashMap<>();
|
||||||
for (final CardView c : activeStackInstance.getTargetCards()) {
|
for (final CardView c : activeStackInstance.getTargetCards()) {
|
||||||
@@ -79,14 +83,15 @@ public class VStack extends FDropDown {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (zones.isEmpty() || playersWithValidTargets.isEmpty()) { return; }
|
if (zones.isEmpty() || playersWithValidTargets.isEmpty()) { return; }
|
||||||
MatchController.instance.openZones(zones, playersWithValidTargets);
|
restorablePlayerZones = MatchController.instance.openZones(player, zones, playersWithValidTargets);
|
||||||
}
|
}
|
||||||
|
|
||||||
//restore old zones when active stack instance changes
|
//restore old zones when active stack instance changes
|
||||||
private void restoreOldZones() {
|
private void restoreOldZones() {
|
||||||
if (playersWithValidTargets == null) { return; }
|
if (restorablePlayerZones == null) { return; }
|
||||||
MatchController.instance.restoreOldZones(playersWithValidTargets);
|
PlayerView player = MatchController.instance.getCurrentPlayer();
|
||||||
playersWithValidTargets = null;
|
MatchController.instance.restoreOldZones(player, restorablePlayerZones);
|
||||||
|
restorablePlayerZones = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
Reference in New Issue
Block a user