Fix (hopefully) attack icons on cards and a possible NPE.

This commit is contained in:
elcnesh
2014-09-16 21:05:39 +00:00
parent 8bade53caa
commit d3b6893d33
10 changed files with 35 additions and 15 deletions

View File

@@ -11,7 +11,6 @@ import java.net.URI;
import java.util.Collection; import java.util.Collection;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Set;
import javax.swing.JFileChooser; import javax.swing.JFileChooser;
import javax.swing.JPopupMenu; import javax.swing.JPopupMenu;
@@ -440,7 +439,7 @@ public class GuiDesktop implements IGuiBase {
} }
@Override @Override
public void updateCards(final Set<CardView> cardsToUpdate) { public void updateCards(final Iterable<CardView> cardsToUpdate) {
CMatchUI.SINGLETON_INSTANCE.updateCards(cardsToUpdate); CMatchUI.SINGLETON_INSTANCE.updateCards(cardsToUpdate);
} }

View File

@@ -388,7 +388,7 @@ public enum CMatchUI implements ICDoc, IMenuProvider {
} }
public void updateCards(final Set<CardView> cardsToUpdate) { public void updateCards(final Iterable<CardView> cardsToUpdate) {
for (final CardView c : cardsToUpdate) { for (final CardView c : cardsToUpdate) {
updateSingleCard(c); updateSingleCard(c);
} }

View File

@@ -386,7 +386,6 @@ public class CardPanel extends SkinnedPanel implements CardContainer, IDisposabl
displayCardNameOverlay(showText && showCardNameOverlay(), imgSize, imgPos); displayCardNameOverlay(showText && showCardNameOverlay(), imgSize, imgPos);
displayPTOverlay(showText && showCardPowerOverlay(), imgSize, imgPos); displayPTOverlay(showText && showCardPowerOverlay(), imgSize, imgPos);
displayCardIdOverlay(showText && showCardIdOverlay(), imgSize, imgPos); displayCardIdOverlay(showText && showCardIdOverlay(), imgSize, imgPos);
displayIconOverlay(getGraphics());
} }
private void displayCardIdOverlay(boolean isVisible, Dimension imgSize, Point imgPos) { private void displayCardIdOverlay(boolean isVisible, Dimension imgSize, Point imgPos) {
@@ -656,11 +655,9 @@ public class CardPanel extends SkinnedPanel implements CardContainer, IDisposabl
return; return;
} }
if (this.card != cardView) {
this.updatePTOverlay(); //update PT Overlay if card changes
}
this.card = cardView; this.card = cardView;
this.doLayout();
if (!this.isShowing()) { if (!this.isShowing()) {
return; return;
} }

View File

@@ -707,7 +707,7 @@ public class PlayArea extends CardPanelContainer implements CardPanelMouseListen
toPanel.setAttachedToPanel(null); toPanel.setAttachedToPanel(null);
} }
toPanel.setCard(toPanel.getCard()); toPanel.setCard(card);
if (fromRefresh) { if (fromRefresh) {
toPanel.updatePTOverlay(); //ensure PT Overlay updated on refresh toPanel.updatePTOverlay(); //ensure PT Overlay updated on refresh
} }

View File

@@ -5,7 +5,6 @@ import java.util.Collection;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Map.Entry; import java.util.Map.Entry;
import java.util.Set;
import org.apache.commons.lang3.tuple.Pair; import org.apache.commons.lang3.tuple.Pair;
@@ -391,7 +390,7 @@ public class GuiMobile implements IGuiBase {
} }
@Override @Override
public void updateCards(Set<CardView> cardsToUpdate) { public void updateCards(Iterable<CardView> cardsToUpdate) {
FControl.updateCards(cardsToUpdate); FControl.updateCards(cardsToUpdate);
} }

View File

@@ -446,7 +446,7 @@ public class FControl {
} }
} }
public static void updateCards(Set<CardView> cardsToUpdate) { public static void updateCards(Iterable<CardView> cardsToUpdate) {
for (CardView c : cardsToUpdate) { for (CardView c : cardsToUpdate) {
updateSingleCard(c); updateSingleCard(c);
} }

View File

@@ -271,7 +271,8 @@ public class FControlGameEventHandler extends IGameEventVisitor.Base<Void> {
@Override @Override
public void run() { public void run() {
synchronized (cardsToUpdate) { synchronized (cardsToUpdate) {
gui.updateCards(cardsToUpdate); final Iterable<CardView> newCardsToUpdate = gameView.getRefreshedCardViews(cardsToUpdate);
gui.updateCards(newCardsToUpdate);
cardsToUpdate.clear(); cardsToUpdate.clear();
} }
} }

View File

@@ -4,7 +4,6 @@ import java.io.File;
import java.util.Collection; import java.util.Collection;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Set;
import org.apache.commons.lang3.tuple.Pair; import org.apache.commons.lang3.tuple.Pair;
@@ -76,7 +75,7 @@ public interface IGuiBase {
void restoreOldZones(Map<PlayerView, Object> playersToRestoreZonesFor); void restoreOldZones(Map<PlayerView, Object> playersToRestoreZonesFor);
void updateStack(); void updateStack();
void updateZones(List<Pair<PlayerView, ZoneType>> zonesToUpdate); void updateZones(List<Pair<PlayerView, ZoneType>> zonesToUpdate);
void updateCards(Set<CardView> cardsToUpdate); void updateCards(Iterable<CardView> cardsToUpdate);
void refreshCardDetails(Iterable<CardView> cards); void refreshCardDetails(Iterable<CardView> cards);
void updateManaPool(List<PlayerView> manaPoolUpdate); void updateManaPool(List<PlayerView> manaPoolUpdate);
void updateLives(List<PlayerView> livesUpdate); void updateLives(List<PlayerView> livesUpdate);

View File

@@ -31,6 +31,22 @@ public class Cache<K, V> {
return inverseCache.get(value); return inverseCache.get(value);
} }
/**
* Get a value as it is present in this Cache, compared using the equals
* method.
*
* @param value
* @return a value equal to value, if such a value is present in the Cache.
*/
public synchronized V getValue(final V value) {
for (final V currentValue : inverseCache.keySet()) {
if (currentValue.equals(value)) {
return currentValue;
}
}
return null;
}
/** /**
* @param key * @param key
* @param value * @param value

View File

@@ -426,6 +426,15 @@ public abstract class LocalGameView implements IGameView {
return ViewUtil.transformIfNotNull(cards, FN_GET_CARD_VIEW); return ViewUtil.transformIfNotNull(cards, FN_GET_CARD_VIEW);
} }
public final List<CardView> getRefreshedCardViews(final Iterable<CardView> cardViews) {
return ViewUtil.transformIfNotNull(cardViews, new Function<CardView, CardView>() {
@Override
public CardView apply(CardView input) {
return cards.getValue(input);
}
});
}
private CardView getCardViewFast(final Card c) { private CardView getCardViewFast(final Card c) {
if (c == null) { if (c == null) {
return null; return null;