mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-20 04:38:00 +00:00
Fix some more issues.
- Fix issue where avatars would get mixed up or assigned randomly
- Fix issue where "{player's}" would display rather than name when revealing cards in hand
This commit is contained in:
@@ -19,7 +19,7 @@ public class MessageUtil {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static String formatMessage(String message, PlayerView player, Object related) {
|
public static String formatMessage(String message, PlayerView player, Object related) {
|
||||||
if (related instanceof Player && message.indexOf("{player") >= 0) {
|
if (related instanceof PlayerView && message.indexOf("{player") >= 0) {
|
||||||
String noun = mayBeYou(player, related);
|
String noun = mayBeYou(player, related);
|
||||||
message = message.replace("{player}", noun).replace("{player's}", Lang.getPossesive(noun));
|
message = message.replace("{player}", noun).replace("{player's}", Lang.getPossesive(noun));
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -347,7 +347,7 @@ public abstract class GameLobby {
|
|||||||
setNameNow = true;
|
setNameNow = true;
|
||||||
hasNameBeenSet = true;
|
hasNameBeenSet = true;
|
||||||
}
|
}
|
||||||
lobbyPlayer = GamePlayerUtil.getGuiPlayer(name, setNameNow);
|
lobbyPlayer = GamePlayerUtil.getGuiPlayer(name, avatar, setNameNow);
|
||||||
}
|
}
|
||||||
|
|
||||||
Deck deck = slot.getDeck();
|
Deck deck = slot.getDeck();
|
||||||
|
|||||||
@@ -46,6 +46,7 @@ import forge.sound.MusicPlaylist;
|
|||||||
import forge.sound.SoundSystem;
|
import forge.sound.SoundSystem;
|
||||||
import forge.trackable.TrackableCollection;
|
import forge.trackable.TrackableCollection;
|
||||||
import forge.util.CollectionSuppliers;
|
import forge.util.CollectionSuppliers;
|
||||||
|
import forge.util.FCollectionView;
|
||||||
import forge.util.GuiDisplayUtil;
|
import forge.util.GuiDisplayUtil;
|
||||||
import forge.util.NameGenerator;
|
import forge.util.NameGenerator;
|
||||||
import forge.util.maps.HashMapOfLists;
|
import forge.util.maps.HashMapOfLists;
|
||||||
@@ -99,12 +100,21 @@ public class HostedMatch {
|
|||||||
gameRules.setAppliedVariants(appliedVariants);
|
gameRules.setAppliedVariants(appliedVariants);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (players.size() == 2) {
|
final List<RegisteredPlayer> sortedPlayers = Lists.newArrayList(players);
|
||||||
title = String.format("%s vs %s", players.get(0).getPlayer().getName(), players.get(1).getPlayer().getName());
|
Collections.sort(sortedPlayers, new Comparator<RegisteredPlayer>() {
|
||||||
|
@Override public final int compare(final RegisteredPlayer p1, final RegisteredPlayer p2) {
|
||||||
|
final int v1 = p1.getPlayer() instanceof LobbyPlayerHuman ? 0 : 1;
|
||||||
|
final int v2 = p2.getPlayer() instanceof LobbyPlayerHuman ? 0 : 1;
|
||||||
|
return Integer.compare(v1, v2);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
if (sortedPlayers.size() == 2) {
|
||||||
|
title = String.format("%s vs %s", sortedPlayers.get(0).getPlayer().getName(), sortedPlayers.get(1).getPlayer().getName());
|
||||||
} else {
|
} else {
|
||||||
title = String.format("Multiplayer Game (%d players)", players.size());
|
title = String.format("Multiplayer Game (%d players)", sortedPlayers.size());
|
||||||
}
|
}
|
||||||
this.match = new Match(gameRules, players, title);
|
this.match = new Match(gameRules, sortedPlayers, title);
|
||||||
startGame();
|
startGame();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -137,25 +147,15 @@ public class HostedMatch {
|
|||||||
game.subscribeToEvents(SoundSystem.instance);
|
game.subscribeToEvents(SoundSystem.instance);
|
||||||
game.subscribeToEvents(visitor);
|
game.subscribeToEvents(visitor);
|
||||||
|
|
||||||
// Instantiate all required field slots (user at 0)
|
final FCollectionView<Player> players = game.getPlayers();
|
||||||
final List<Player> sortedPlayers = Lists.newArrayList(game.getRegisteredPlayers());
|
|
||||||
Collections.sort(sortedPlayers, new Comparator<Player>() {
|
|
||||||
@Override
|
|
||||||
public int compare(final Player p1, final Player p2) {
|
|
||||||
final int v1 = p1.getController() instanceof PlayerControllerHuman ? 0 : 1;
|
|
||||||
final int v2 = p2.getController() instanceof PlayerControllerHuman ? 0 : 1;
|
|
||||||
return Integer.compare(v1, v2);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
final String[] avatarIndices = FModel.getPreferences().getPref(FPref.UI_AVATARS).split(",");
|
final String[] avatarIndices = FModel.getPreferences().getPref(FPref.UI_AVATARS).split(",");
|
||||||
final GameView gameView = getGameView();
|
final GameView gameView = getGameView();
|
||||||
|
|
||||||
humanCount = 0;
|
humanCount = 0;
|
||||||
final MapOfLists<IGuiGame, PlayerView> playersPerGui = new HashMapOfLists<IGuiGame, PlayerView>(CollectionSuppliers.<PlayerView>arrayLists());
|
final MapOfLists<IGuiGame, PlayerView> playersPerGui = new HashMapOfLists<IGuiGame, PlayerView>(CollectionSuppliers.<PlayerView>arrayLists());
|
||||||
for (int iPlayer = 0; iPlayer < sortedPlayers.size(); iPlayer++) {
|
for (int iPlayer = 0; iPlayer < players.size(); iPlayer++) {
|
||||||
final RegisteredPlayer rp = match.getPlayers().get(iPlayer);
|
final RegisteredPlayer rp = match.getPlayers().get(iPlayer);
|
||||||
final Player p = sortedPlayers.get(iPlayer);
|
final Player p = players.get(iPlayer);
|
||||||
|
|
||||||
p.getLobbyPlayer().setAvatarIndex(rp.getPlayer().getAvatarIndex());
|
p.getLobbyPlayer().setAvatarIndex(rp.getPlayer().getAvatarIndex());
|
||||||
if (p.getLobbyPlayer().getAvatarIndex() == -1) {
|
if (p.getLobbyPlayer().getAvatarIndex() == -1) {
|
||||||
@@ -195,7 +195,7 @@ public class HostedMatch {
|
|||||||
gui.setGameController(null, humanController);
|
gui.setGameController(null, humanController);
|
||||||
|
|
||||||
gui.openView(null);
|
gui.openView(null);
|
||||||
} else if (humanCount == sortedPlayers.size()) {
|
} else if (humanCount == players.size()) {
|
||||||
//if there are no AI's, allow all players to see all cards (hotseat mode).
|
//if there are no AI's, allow all players to see all cards (hotseat mode).
|
||||||
for (final PlayerControllerHuman humanController : humanControllers) {
|
for (final PlayerControllerHuman humanController : humanControllers) {
|
||||||
humanController.setMayLookAtAllCards(true);
|
humanController.setMayLookAtAllCards(true);
|
||||||
@@ -208,7 +208,7 @@ public class HostedMatch {
|
|||||||
}
|
}
|
||||||
|
|
||||||
//ensure opponents set properly
|
//ensure opponents set properly
|
||||||
for (final Player p : sortedPlayers) {
|
for (final Player p : players) {
|
||||||
p.updateOpponentsForView();
|
p.updateOpponentsForView();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -23,7 +23,7 @@ public final class GamePlayerUtil {
|
|||||||
public static final LobbyPlayer getGuiPlayer() {
|
public static final LobbyPlayer getGuiPlayer() {
|
||||||
return guiPlayer;
|
return guiPlayer;
|
||||||
}
|
}
|
||||||
public static final LobbyPlayer getGuiPlayer(final String name, final boolean writePref) {
|
public static final LobbyPlayer getGuiPlayer(final String name, final int avatarIndex, final boolean writePref) {
|
||||||
if (writePref) {
|
if (writePref) {
|
||||||
if (!name.equals(guiPlayer.getName())) {
|
if (!name.equals(guiPlayer.getName())) {
|
||||||
guiPlayer.setName(name);
|
guiPlayer.setName(name);
|
||||||
@@ -33,7 +33,7 @@ public final class GamePlayerUtil {
|
|||||||
return guiPlayer;
|
return guiPlayer;
|
||||||
}
|
}
|
||||||
//use separate LobbyPlayerHuman instance for human players beyond first
|
//use separate LobbyPlayerHuman instance for human players beyond first
|
||||||
return new LobbyPlayerHuman(name);
|
return new LobbyPlayerHuman(name, avatarIndex);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static final LobbyPlayer getQuestPlayer() {
|
public static final LobbyPlayer getQuestPlayer() {
|
||||||
|
|||||||
@@ -9,7 +9,11 @@ import forge.util.GuiDisplayUtil;
|
|||||||
|
|
||||||
public class LobbyPlayerHuman extends LobbyPlayer implements IGameEntitiesFactory {
|
public class LobbyPlayerHuman extends LobbyPlayer implements IGameEntitiesFactory {
|
||||||
public LobbyPlayerHuman(final String name) {
|
public LobbyPlayerHuman(final String name) {
|
||||||
|
this(name, -1);
|
||||||
|
}
|
||||||
|
public LobbyPlayerHuman(final String name, final int avatarIndex) {
|
||||||
super(name);
|
super(name);
|
||||||
|
setAvatarIndex(avatarIndex);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -577,7 +577,7 @@ public class PlayerControllerHuman
|
|||||||
} else {
|
} else {
|
||||||
message += "{player's} " + zone.name().toLowerCase();
|
message += "{player's} " + zone.name().toLowerCase();
|
||||||
}
|
}
|
||||||
String fm = MessageUtil.formatMessage(message, player, owner);
|
String fm = MessageUtil.formatMessage(message, getLocalPlayerView(), owner);
|
||||||
if (!cards.isEmpty()) {
|
if (!cards.isEmpty()) {
|
||||||
tempShowCards(game.getCardList(cards));
|
tempShowCards(game.getCardList(cards));
|
||||||
getGui().reveal(fm, cards);
|
getGui().reveal(fm, cards);
|
||||||
|
|||||||
Reference in New Issue
Block a user