mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-18 11:48:02 +00:00
Shahrazad
This commit is contained in:
@@ -34,6 +34,7 @@ import forge.game.GameRules;
|
||||
import forge.game.GameType;
|
||||
import forge.game.GameView;
|
||||
import forge.game.Match;
|
||||
import forge.game.event.*;
|
||||
import forge.game.player.Player;
|
||||
import forge.game.player.PlayerView;
|
||||
import forge.game.player.RegisteredPlayer;
|
||||
@@ -332,7 +333,7 @@ public class HostedMatch {
|
||||
return isMatchOver;
|
||||
}
|
||||
|
||||
private final class MatchUiEventVisitor implements IUiEventVisitor<Void> {
|
||||
private final class MatchUiEventVisitor extends IGameEventVisitor.Base<Void> implements IUiEventVisitor<Void> {
|
||||
@Override
|
||||
public Void visit(final UiEventBlockerAssigned event) {
|
||||
for (final PlayerControllerHuman humanController : humanControllers) {
|
||||
@@ -359,6 +360,69 @@ public class HostedMatch {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Void visit(final GameEventSubgameStart event) {
|
||||
event.subgame.subscribeToEvents(SoundSystem.instance);
|
||||
event.subgame.subscribeToEvents(visitor);
|
||||
|
||||
final GameView gameView = event.subgame.getView();
|
||||
|
||||
Runnable switchGameView = new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
for (final Player p : event.subgame.getPlayers()) {
|
||||
if (p.getController() instanceof PlayerControllerHuman) {
|
||||
final PlayerControllerHuman humanController = (PlayerControllerHuman) p.getController();
|
||||
final IGuiGame gui = guis.get(p.getRegisteredPlayer());
|
||||
humanController.setGui(gui);
|
||||
gui.setGameView(null);
|
||||
gui.setGameView(gameView);
|
||||
gui.setOriginalGameController(p.getView(), humanController);
|
||||
gui.openView(new TrackableCollection<>(p.getView()));
|
||||
gui.setGameView(null);
|
||||
gui.setGameView(gameView);
|
||||
event.subgame.subscribeToEvents(new FControlGameEventHandler(humanController));
|
||||
gui.message(event.message);
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
GuiBase.getInterface().invokeInEdtAndWait(switchGameView);
|
||||
|
||||
//ensure opponents set properly
|
||||
for (final Player p : event.subgame.getPlayers()) {
|
||||
p.updateOpponentsForView();
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Void visit(final GameEventSubgameEnd event) {
|
||||
final GameView gameView = event.maingame.getView();
|
||||
Runnable switchGameView = new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
for (final Player p : event.maingame.getPlayers()) {
|
||||
if (p.getController() instanceof PlayerControllerHuman) {
|
||||
final PlayerControllerHuman humanController = (PlayerControllerHuman) p.getController();
|
||||
final IGuiGame gui = guis.get(p.getRegisteredPlayer());
|
||||
gui.setGameView(null);
|
||||
gui.setGameView(gameView);
|
||||
gui.setOriginalGameController(p.getView(), humanController);
|
||||
gui.openView(new TrackableCollection<>(p.getView()));
|
||||
gui.setGameView(null);
|
||||
gui.setGameView(gameView);
|
||||
gui.updatePhase();
|
||||
gui.message(event.message);
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
GuiBase.getInterface().invokeInEdtAndWait(switchGameView);
|
||||
return null;
|
||||
}
|
||||
|
||||
@Subscribe
|
||||
public void receiveEvent(final UiEvent evt) {
|
||||
try {
|
||||
@@ -368,6 +432,16 @@ public class HostedMatch {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
@Subscribe
|
||||
public void receiveGameEvent(final GameEvent evt) {
|
||||
try {
|
||||
evt.visit(this);
|
||||
} catch (Exception e) {
|
||||
System.out.println(e.getMessage());
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void addNextGameDecision(final PlayerControllerHuman controller, final NextGameDecision decision) {
|
||||
|
||||
Reference in New Issue
Block a user