mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-18 19:58:00 +00:00
FControl in response to player control changes redraws hands panel
This commit is contained in:
@@ -45,6 +45,7 @@ import forge.game.ai.AiProfileUtil;
|
||||
import forge.game.event.CardsAntedEvent;
|
||||
import forge.game.event.DuelFinishedEvent;
|
||||
import forge.game.event.Event;
|
||||
import forge.game.event.PlayerControlEvent;
|
||||
import forge.game.player.LobbyPlayer;
|
||||
import forge.game.player.Player;
|
||||
import forge.gui.GuiDialog;
|
||||
@@ -66,6 +67,7 @@ import forge.gui.match.controllers.CLog;
|
||||
import forge.gui.match.controllers.CMessage;
|
||||
import forge.gui.match.controllers.CStack;
|
||||
import forge.gui.match.nonsingleton.VField;
|
||||
import forge.gui.match.nonsingleton.VHand;
|
||||
import forge.gui.match.views.VAntes;
|
||||
import forge.gui.toolbox.CardFaceSymbols;
|
||||
import forge.gui.toolbox.FSkin;
|
||||
@@ -419,6 +421,14 @@ public enum FControl {
|
||||
msg.append(kv.getKey().getName()).append(" ante: ").append(kv.getValue()).append(nl);
|
||||
}
|
||||
GuiDialog.message(msg.toString(), "Ante");
|
||||
} else if ( ev instanceof PlayerControlEvent ) {
|
||||
FThreads.invokeInEdtNowOrLater(new Runnable() { @Override public void run() {
|
||||
CMatchUI.SINGLETON_INSTANCE.initHandViews(getLobby().getGuiPlayer());
|
||||
VMatchUI.SINGLETON_INSTANCE.populate();
|
||||
for(VHand h : VMatchUI.SINGLETON_INSTANCE.getHands()) {
|
||||
h.getLayoutControl().updateHand();
|
||||
}
|
||||
} });
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -34,6 +34,8 @@ import forge.Singletons;
|
||||
import forge.game.phase.PhaseType;
|
||||
import forge.game.player.LobbyPlayer;
|
||||
import forge.game.player.Player;
|
||||
import forge.game.zone.PlayerZone;
|
||||
import forge.game.zone.ZoneType;
|
||||
import forge.gui.framework.EDocID;
|
||||
import forge.gui.match.controllers.CDetail;
|
||||
import forge.gui.match.controllers.CMessage;
|
||||
@@ -58,6 +60,7 @@ public enum CMatchUI {
|
||||
SINGLETON_INSTANCE;
|
||||
|
||||
private List<Player> sortedPlayers;
|
||||
private VMatchUI view;
|
||||
|
||||
private ImageIcon getPlayerAvatar(final Player p, final int defaultIndex) {
|
||||
LobbyPlayer lp = p.getLobbyPlayer();
|
||||
@@ -83,6 +86,8 @@ public enum CMatchUI {
|
||||
* @param numHandPanels int
|
||||
*/
|
||||
public void initMatch(final List<Player> players, LobbyPlayer localPlayer) {
|
||||
view = VMatchUI.SINGLETON_INSTANCE;
|
||||
|
||||
// TODO fix for use with multiplayer
|
||||
|
||||
final String[] indices = Singletons.getModel().getPreferences().getPref(FPref.UI_AVATARS).split(",");
|
||||
@@ -111,8 +116,8 @@ public enum CMatchUI {
|
||||
}
|
||||
|
||||
// Replace old instances
|
||||
VMatchUI.SINGLETON_INSTANCE.setCommandViews(commands);
|
||||
VMatchUI.SINGLETON_INSTANCE.setFieldViews(fields);
|
||||
view.setCommandViews(commands);
|
||||
view.setFieldViews(fields);
|
||||
|
||||
VPlayers.SINGLETON_INSTANCE.init(players);
|
||||
|
||||
@@ -121,9 +126,15 @@ public enum CMatchUI {
|
||||
|
||||
public void initHandViews(LobbyPlayer localPlayer) {
|
||||
final List<VHand> hands = new ArrayList<VHand>();
|
||||
final Iterable<VHand> oldHands = view.getHands();
|
||||
|
||||
int i = 0;
|
||||
for (Player p : sortedPlayers) {
|
||||
|
||||
PlayerZone hand = p.getZone(ZoneType.Hand);
|
||||
for(VHand vh : oldHands)
|
||||
hand.deleteObserver(vh.getLayoutControl());
|
||||
|
||||
if (p.getLobbyPlayer() == localPlayer) {
|
||||
VHand newHand = new VHand(EDocID.Hands[i], p);
|
||||
newHand.getLayoutControl().initialize();
|
||||
@@ -137,7 +148,7 @@ public enum CMatchUI {
|
||||
newHand.getLayoutControl().initialize();
|
||||
hands.add(newHand);
|
||||
}
|
||||
VMatchUI.SINGLETON_INSTANCE.setHandViews(hands);
|
||||
view.setHandViews(hands);
|
||||
}
|
||||
|
||||
private List<Player> shiftPlayersPlaceLocalFirst(final List<Player> players, LobbyPlayer localPlayer) {
|
||||
@@ -163,7 +174,7 @@ public enum CMatchUI {
|
||||
// This method is in the top-level controller because it affects ALL fields
|
||||
// (not just one).
|
||||
public void resetAllPhaseButtons() {
|
||||
for (final VField v : VMatchUI.SINGLETON_INSTANCE.getFieldViews()) {
|
||||
for (final VField v : view.getFieldViews()) {
|
||||
v.resetPhaseButtons();
|
||||
}
|
||||
}
|
||||
@@ -175,7 +186,7 @@ public enum CMatchUI {
|
||||
|
||||
public VField getFieldViewFor(Player p) {
|
||||
int idx = getPlayerIndex(p);
|
||||
return idx < 0 ? null : VMatchUI.SINGLETON_INSTANCE.getFieldViews().get(idx);
|
||||
return idx < 0 ? null :view.getFieldViews().get(idx);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -162,4 +162,12 @@ public enum VMatchUI implements IVTopLevelUI {
|
||||
public void setCommandViews(List<VCommand> lstCommands0) {
|
||||
this.lstCommands = lstCommands0;
|
||||
}
|
||||
|
||||
/**
|
||||
* TODO: Write javadoc for this method.
|
||||
* @return
|
||||
*/
|
||||
public Iterable<VHand> getHands() {
|
||||
return lstHands;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -76,7 +76,8 @@ public class CHand implements ICDoc, Observer {
|
||||
if (player != null)
|
||||
player.getZone(ZoneType.Hand).addObserver(this);
|
||||
|
||||
view.getHandArea().addMouseListener(madCardClick);
|
||||
HandArea area = view.getHandArea();
|
||||
area.addMouseListener(madCardClick);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user