mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-20 12:48:00 +00:00
Fix so player 2 can start a network game
This commit is contained in:
@@ -40,6 +40,16 @@ public class TrackableTypes {
|
|||||||
private TrackableObjectType() {
|
private TrackableObjectType() {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public T lookup(T from) {
|
||||||
|
if (from == null) { return null; }
|
||||||
|
T to = objLookup.get(from.getId());
|
||||||
|
if (to == null) {
|
||||||
|
objLookup.put(from.getId(), from);
|
||||||
|
return from;
|
||||||
|
}
|
||||||
|
return to;
|
||||||
|
}
|
||||||
|
|
||||||
public void clearLookupDictionary() {
|
public void clearLookupDictionary() {
|
||||||
objLookup.clear();
|
objLookup.clear();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -52,11 +52,14 @@ public abstract class AbstractGuiGame implements IGuiGame, IMayViewCards {
|
|||||||
return currentPlayer;
|
return currentPlayer;
|
||||||
}
|
}
|
||||||
@Override
|
@Override
|
||||||
public final void setCurrentPlayer(final PlayerView player) {
|
public final void setCurrentPlayer(PlayerView player) {
|
||||||
|
player = TrackableTypes.PlayerViewType.lookup(player); //ensure we use the correct player
|
||||||
|
|
||||||
if (!gameControllers.containsKey(player)) {
|
if (!gameControllers.containsKey(player)) {
|
||||||
throw new IllegalArgumentException();
|
throw new IllegalArgumentException();
|
||||||
}
|
}
|
||||||
this.currentPlayer = player;
|
|
||||||
|
currentPlayer = player;
|
||||||
updateCurrentPlayer(player);
|
updateCurrentPlayer(player);
|
||||||
}
|
}
|
||||||
protected abstract void updateCurrentPlayer(PlayerView player);
|
protected abstract void updateCurrentPlayer(PlayerView player);
|
||||||
@@ -99,11 +102,13 @@ public abstract class AbstractGuiGame implements IGuiGame, IMayViewCards {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setOriginalGameController(final PlayerView player, final IGameController gameController) {
|
public void setOriginalGameController(PlayerView player, final IGameController gameController) {
|
||||||
if (player == null || gameController == null) {
|
if (player == null || gameController == null) {
|
||||||
throw new IllegalArgumentException();
|
throw new IllegalArgumentException();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
player = TrackableTypes.PlayerViewType.lookup(player); //ensure we use the correct player
|
||||||
|
|
||||||
final boolean doSetCurrentPlayer = originalGameControllers.isEmpty();
|
final boolean doSetCurrentPlayer = originalGameControllers.isEmpty();
|
||||||
originalGameControllers.put(player, gameController);
|
originalGameControllers.put(player, gameController);
|
||||||
gameControllers.put(player, gameController);
|
gameControllers.put(player, gameController);
|
||||||
@@ -113,15 +118,18 @@ public abstract class AbstractGuiGame implements IGuiGame, IMayViewCards {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setGameController(final PlayerView player, final IGameController gameController) {
|
public void setGameController(PlayerView player, final IGameController gameController) {
|
||||||
if (player == null) {
|
if (player == null) {
|
||||||
throw new IllegalArgumentException();
|
throw new IllegalArgumentException();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
player = TrackableTypes.PlayerViewType.lookup(player); //ensure we use the correct player
|
||||||
|
|
||||||
if (gameController == null) {
|
if (gameController == null) {
|
||||||
if (originalGameControllers.containsKey(player)) {
|
if (originalGameControllers.containsKey(player)) {
|
||||||
gameControllers.put(player, originalGameControllers.get(player));
|
gameControllers.put(player, originalGameControllers.get(player));
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
gameControllers.remove(player);
|
gameControllers.remove(player);
|
||||||
autoPassUntilEndOfTurn.remove(player);
|
autoPassUntilEndOfTurn.remove(player);
|
||||||
final PlayerView currentPlayer = getCurrentPlayer();
|
final PlayerView currentPlayer = getCurrentPlayer();
|
||||||
@@ -130,8 +138,9 @@ public abstract class AbstractGuiGame implements IGuiGame, IMayViewCards {
|
|||||||
setCurrentPlayer(Iterables.getFirst(gameControllers.keySet(), null));
|
setCurrentPlayer(Iterables.getFirst(gameControllers.keySet(), null));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
}
|
||||||
this.gameControllers.put(player, gameController);
|
else {
|
||||||
|
gameControllers.put(player, gameController);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -111,7 +111,7 @@ public class FGameClient implements IToServer {
|
|||||||
|
|
||||||
void setGameControllers(final Iterable<PlayerView> myPlayers) {
|
void setGameControllers(final Iterable<PlayerView> myPlayers) {
|
||||||
for (final PlayerView p : myPlayers) {
|
for (final PlayerView p : myPlayers) {
|
||||||
clientGui.setGameController(p, new NetGameController(this));
|
clientGui.setOriginalGameController(p, new NetGameController(this));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user