Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
38 changes: 27 additions & 11 deletions client/src/main/java/object/BidListCellRenderer.java
Original file line number Diff line number Diff line change
@@ -1,49 +1,66 @@
package object;

import game.BidAction;
import game.PlayerAction;
import util.StringUtil;

import java.awt.Component;
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;

import javax.swing.DefaultListCellRenderer;
import javax.swing.JList;

import static game.RenderingUtilKt.getCardHtml;
import static game.SuitKt.MOONS_SYMBOL;
import static utils.ColourUtilKt.getColourForPlayerNumber;

public class BidListCellRenderer extends DefaultListCellRenderer
{
private Map<String, String> hmNameToColour = new HashMap<>();

@Override
public Component getListCellRendererComponent(JList list, Object value,
int index, boolean isSelected, boolean cellHasFocus)
{
Bid bid = (Bid)value;
PlayerAction bid = (PlayerAction)value;
String text = toHtmlString(bid);

return super.getListCellRendererComponent(list, text, index, isSelected,
cellHasFocus);
}

public String toHtmlString(Bid bid)
public void updateColours(Collection<Player> players) {
this.hmNameToColour.clear();

for (Player player : players) {
hmNameToColour.put(player.getName(), player.getColour());
}
}

public void updateColours(Map<String, String> map) {
this.hmNameToColour = map;
}

public String toHtmlString(PlayerAction action)
{
String playerName = bid.getPlayer().getName();
String playerName = action.getPlayerName();
playerName = StringUtil.escapeHtml(playerName);

String colour = bid.getPlayer().getColour();
String colour = hmNameToColour.get(playerName);
String playerNamePrefix = playerName + ":&nbsp";

if (bid.isBlind())
if (action.getBlind())
{
playerNamePrefix = "[" + playerName + "]:&nbsp";
}

String text = "<html><b><font color=\"" + colour + "\">" + playerNamePrefix;
text += "</b></font>";
text += bid.toHtmlStringSpecific();
text += action.htmlString();

if (!bid.getCardToReveal().isEmpty()
&& !bid.isChallenge()
&& !bid.isIllegal())
{
if (action instanceof BidAction<?> bid && bid.getCardToReveal() != null) {
text += "<i><font color=\"#5C5C3D\">&emsp(Shows:&nbsp</i></font>";
text += getCardHtml(bid.getCardToReveal());
text += "<i><font color=\"#5C5C3D\">)</i></font>";
Expand All @@ -53,5 +70,4 @@ public String toHtmlString(Bid bid)
text = text.replaceAll(MOONS_SYMBOL, "<font size=\"2\">&#127769</font>");
return text;
}

}
28 changes: 13 additions & 15 deletions client/src/main/java/object/EntropyAchievementsTracker.java
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package object;

import achievement.AchievementUtilKt;
import game.EntropyBidAction;
import game.Suit;
import util.AchievementsUtil;
import util.Registry;
Expand Down Expand Up @@ -85,10 +86,9 @@ public void unlockPerfectBidAchievements(boolean earnedPsychic)
earnedGardener, earnedSpaceman, earnedPsychic);
}

public void updatePerfectBidVariables(Bid lastBid)
public void updatePerfectBidVariables(EntropyBidAction lastBid)
{
EntropyBid entropyBid = (EntropyBid)lastBid;
var bidSuit = entropyBid.getBidSuit();
var bidSuit = lastBid.getSuit();

if (bidSuit == Suit.Spades)
{
Expand Down Expand Up @@ -116,25 +116,23 @@ else if (bidSuit == Suit.Stars)
}
}

public void update(Bid bid)
public void update(EntropyBidAction bid)
{
EntropyBid entropyBid = (EntropyBid)bid;

updateCardReveal(entropyBid);
updateMonotone(entropyBid);
updateCardReveal(bid);
updateMonotone(bid);
}

private void updateCardReveal(EntropyBid bidMade)
private void updateCardReveal(EntropyBidAction bidMade)
{
String card = bidMade.getCardToReveal();
if (card.isEmpty())
if (card == null)
{
return;
}

cardsRevealed++;

var bidSuit = bidMade.getBidSuit();
var bidSuit = bidMade.getSuit();
if (isCardRelevant(card, bidSuit))
{
revealedSameSuit = true;
Expand All @@ -145,16 +143,16 @@ private void updateCardReveal(EntropyBid bidMade)
}
}

private void updateMonotone(EntropyBid bid)
private void updateMonotone(EntropyBidAction bid)
{
var suitCode = bid.getBidSuit();
var suit = bid.getSuit();
if (firstSuitBid == null)
{
firstSuitBid = suitCode;
firstSuitBid = suit;
return;
}

if (suitCode != firstSuitBid)
if (suit != firstSuitBid)
{
deviatedFromFirstSuit = true;
}
Expand Down
25 changes: 12 additions & 13 deletions client/src/main/java/online/screen/EntropyRoom.java
Original file line number Diff line number Diff line change
Expand Up @@ -3,27 +3,26 @@
import java.awt.BorderLayout;
import java.util.UUID;

import game.EntropyBidAction;
import game.GameSettings;
import game.Suit;
import object.Bid;
import object.EntropyAchievementsTracker;
import object.EntropyBid;
import screen.EntropyBidPanel;
import util.ClientUtil;
import util.Registry;
import util.ReplayConstants;

import static game.CardsUtilKt.countSuit;
import static game.CardsUtilKt.extractCards;

public class EntropyRoom extends GameRoom
public class EntropyRoom extends GameRoom<EntropyBidAction>
{
private EntropyAchievementsTracker achievementTracker = new EntropyAchievementsTracker();

public EntropyRoom(UUID id, String roomName, GameSettings settings, int players)
{
super(id, roomName, settings, players);

bidPanel = new EntropyBidPanel();
bidPanel = new EntropyBidPanel(ClientUtil.getUsername(), handPanel);
leftPaneSouth.add(bidPanel, BorderLayout.CENTER);
bidPanel.addBidListener(this);
}
Expand All @@ -37,16 +36,16 @@ public void doSpecificResetGameVariables()
@Override
public void resetBids()
{
lastBid = new EntropyBid(Suit.Clubs, 0);
hmBidByPlayerNumber.clear();
lastBid = null;
hmActionByPlayerNumber.clear();
}

@Override
public void updateScreenForChallengeOrIllegal()
{
if (isVisible())
{
var lastBidSuit = ((EntropyBid)lastBid).getBidSuit();
var lastBidSuit = lastBid.getSuit();
handPanel.displayAndHighlightHands(lastBidSuit);

achievementTracker.unlockPerfectBidAchievements(earnedPsychic);
Expand All @@ -69,20 +68,20 @@ public void saveModeSpecificVariablesForReplay()
{
int roundsSoFar = replay.getInt(Registry.REPLAY_INT_ROUNDS_SO_FAR, 0);
replay.putInt(Registry.REPLAY_INT_GAME_MODE, ReplayConstants.GAME_MODE_ENTROPY_ONLINE);
replay.put(roundsSoFar + Registry.REPLAY_STRING_LAST_BID_SUIT_NAME, ((EntropyBid)lastBid).getBidSuit().name());
replay.put(roundsSoFar + Registry.REPLAY_STRING_LAST_BID_SUIT_NAME, lastBid.getSuit().name());
replayDialog.roundAdded();
}

@Override
public void updatePerfectBidVariables(Bid bid)
public void updatePerfectBidVariables(EntropyBidAction action)
{
achievementTracker.updatePerfectBidVariables(bid);
achievementTracker.updatePerfectBidVariables(action);
}

@Override
public void updateAchievementVariables(Bid bid)
public void updateAchievementVariables(EntropyBidAction action)
{
achievementTracker.update(bid);
achievementTracker.update(action);
}

@Override
Expand Down
Loading