mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-20 20:58:03 +00:00
Support using commander as game avatar
This commit is contained in:
@@ -11,6 +11,7 @@ import org.apache.commons.lang3.StringUtils;
|
||||
public abstract class LobbyPlayer {
|
||||
protected String name;
|
||||
private int avatarIndex = -1;
|
||||
private String avatarCardImageKey;
|
||||
|
||||
public LobbyPlayer(String name) {
|
||||
this.name = name;
|
||||
@@ -58,10 +59,16 @@ public abstract class LobbyPlayer {
|
||||
public int getAvatarIndex() {
|
||||
return avatarIndex;
|
||||
}
|
||||
|
||||
public void setAvatarIndex(int avatarIndex) {
|
||||
this.avatarIndex = avatarIndex;
|
||||
}
|
||||
|
||||
public String getAvatarCardImageKey() {
|
||||
return avatarCardImageKey;
|
||||
}
|
||||
public void setAvatarCardImageKey(String avatarImageKey0) {
|
||||
this.avatarCardImageKey = avatarImageKey0;
|
||||
}
|
||||
|
||||
public abstract void hear(LobbyPlayer player, String message);
|
||||
}
|
||||
|
||||
@@ -13,8 +13,10 @@ import forge.Forge;
|
||||
import forge.Graphics;
|
||||
import forge.LobbyPlayer;
|
||||
import forge.assets.FImage;
|
||||
import forge.assets.FImageComplex;
|
||||
import forge.assets.FSkin;
|
||||
import forge.assets.FTextureRegionImage;
|
||||
import forge.card.CardRenderer;
|
||||
import forge.game.GameEntityView;
|
||||
import forge.game.GameView;
|
||||
import forge.game.Match;
|
||||
@@ -60,7 +62,12 @@ public class MatchController implements IMatchController {
|
||||
LobbyPlayer lp = p.getLobbyPlayer();
|
||||
FImage avatar = avatarImages.get(lp);
|
||||
if (avatar == null) {
|
||||
avatar = new FTextureRegionImage(FSkin.getAvatars().get(lp.getAvatarIndex()));
|
||||
if (lp.getAvatarCardImageKey() == null) {
|
||||
avatar = new FTextureRegionImage(FSkin.getAvatars().get(lp.getAvatarIndex()));
|
||||
}
|
||||
else { //handle lobby players with art from cards
|
||||
avatar = CardRenderer.getCardArt(lp.getAvatarCardImageKey(), false);
|
||||
}
|
||||
}
|
||||
return avatar;
|
||||
}
|
||||
|
||||
@@ -25,6 +25,7 @@ import java.util.Map.Entry;
|
||||
import com.google.common.base.Predicate;
|
||||
|
||||
import forge.FThreads;
|
||||
import forge.ImageKeys;
|
||||
import forge.LobbyPlayer;
|
||||
import forge.card.CardRarity;
|
||||
import forge.card.CardRules;
|
||||
@@ -43,6 +44,7 @@ import forge.model.FModel;
|
||||
import forge.planarconquest.ConquestPlaneData.RegionData;
|
||||
import forge.planarconquest.ConquestPreferences.CQPref;
|
||||
import forge.player.GamePlayerUtil;
|
||||
import forge.player.LobbyPlayerHuman;
|
||||
import forge.properties.ForgePreferences.FPref;
|
||||
import forge.quest.BoosterUtils;
|
||||
import forge.util.Aggregates;
|
||||
@@ -57,6 +59,7 @@ public class ConquestController {
|
||||
private ConquestData model;
|
||||
private transient IStorage<Deck> decks;
|
||||
private transient GameRunner gameRunner;
|
||||
private LobbyPlayerHuman humanPlayer;
|
||||
|
||||
public ConquestController() {
|
||||
}
|
||||
@@ -233,10 +236,19 @@ public class ConquestController {
|
||||
humanStart.setStartingLife(STARTING_LIFE + (isHumanDefending ? FModel.getConquestPreferences().getPrefInt(CQPref.DEFEND_BONUS_LIFE) : 0));
|
||||
aiStart.setStartingLife(STARTING_LIFE);
|
||||
|
||||
List<RegisteredPlayer> starter = new ArrayList<RegisteredPlayer>();
|
||||
starter.add(humanStart.setPlayer(getConquestPlayer()));
|
||||
String humanPlayerName = commander.getPlayerName();
|
||||
String aiPlayerName = opponent.getPlayerName();
|
||||
if (humanPlayerName.equals(aiPlayerName)) {
|
||||
aiPlayerName += " (AI)"; //ensure player names are distinct
|
||||
}
|
||||
|
||||
LobbyPlayer aiPlayer = GamePlayerUtil.createAiPlayer();
|
||||
List<RegisteredPlayer> starter = new ArrayList<RegisteredPlayer>();
|
||||
humanPlayer = new LobbyPlayerHuman(humanPlayerName);
|
||||
humanPlayer.setAvatarCardImageKey(ImageKeys.getImageKey(commander.getCard(), false));
|
||||
starter.add(humanStart.setPlayer(humanPlayer));
|
||||
|
||||
LobbyPlayer aiPlayer = GamePlayerUtil.createAiPlayer(aiPlayerName, -1);
|
||||
aiPlayer.setAvatarCardImageKey(ImageKeys.getImageKey(opponent.getCard(), false));
|
||||
starter.add(aiStart.setPlayer(aiPlayer));
|
||||
|
||||
boolean useRandomFoil = FModel.getPreferences().getPrefBoolean(FPref.UI_RANDOM_FOIL);
|
||||
@@ -277,12 +289,8 @@ public class ConquestController {
|
||||
CardRulesPredicates.Presets.IS_NON_CREATURE_SPELL, bonusCard ? 2 : 1);
|
||||
}
|
||||
|
||||
private LobbyPlayer getConquestPlayer() {
|
||||
return GamePlayerUtil.getGuiPlayer(); //TODO: Should this be a separate player?
|
||||
}
|
||||
|
||||
public void showGameRewards(final GameView game, final IWinLoseView<? extends IButton> view) {
|
||||
if (game.isMatchWonBy(getConquestPlayer())) {
|
||||
if (game.isMatchWonBy(humanPlayer)) {
|
||||
view.getBtnQuit().setText("Great!");
|
||||
|
||||
//give controller a chance to run remaining logic on a separate thread
|
||||
@@ -313,7 +321,7 @@ public class ConquestController {
|
||||
}
|
||||
|
||||
public void onGameFinished(final GameView game) {
|
||||
if (game.isMatchWonBy(getConquestPlayer())) {
|
||||
if (game.isMatchWonBy(humanPlayer)) {
|
||||
model.addWin(gameRunner.opponent);
|
||||
gameRunner.wonGame = true;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user