mirror of
https://github.com/correl/mage.git
synced 2024-11-28 19:19:55 +00:00
Code cleanup
This commit is contained in:
parent
ca4a4528fb
commit
85e65c8f44
10 changed files with 42 additions and 78 deletions
|
@ -1,10 +1,5 @@
|
||||||
|
|
||||||
package mage.server;
|
package mage.server;
|
||||||
|
|
||||||
import java.util.*;
|
|
||||||
import java.util.Map.Entry;
|
|
||||||
import java.util.concurrent.ConcurrentHashMap;
|
|
||||||
import java.util.concurrent.TimeUnit;
|
|
||||||
import mage.cards.decks.Deck;
|
import mage.cards.decks.Deck;
|
||||||
import mage.constants.ManaType;
|
import mage.constants.ManaType;
|
||||||
import mage.constants.TableState;
|
import mage.constants.TableState;
|
||||||
|
@ -29,6 +24,11 @@ import mage.server.util.SystemUtil;
|
||||||
import mage.view.TableClientMessage;
|
import mage.view.TableClientMessage;
|
||||||
import org.apache.log4j.Logger;
|
import org.apache.log4j.Logger;
|
||||||
|
|
||||||
|
import java.util.*;
|
||||||
|
import java.util.Map.Entry;
|
||||||
|
import java.util.concurrent.ConcurrentHashMap;
|
||||||
|
import java.util.concurrent.TimeUnit;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author BetaSteward_at_googlemail.com
|
* @author BetaSteward_at_googlemail.com
|
||||||
*/
|
*/
|
||||||
|
@ -180,7 +180,7 @@ public class User {
|
||||||
|
|
||||||
public void lostConnection() {
|
public void lostConnection() {
|
||||||
// Because watched games don't get restored after reconnection call stop watching
|
// Because watched games don't get restored after reconnection call stop watching
|
||||||
for (Iterator<UUID> iterator = watchedGames.iterator(); iterator.hasNext();) {
|
for (Iterator<UUID> iterator = watchedGames.iterator(); iterator.hasNext(); ) {
|
||||||
UUID gameId = iterator.next();
|
UUID gameId = iterator.next();
|
||||||
GameManager.instance.stopWatching(gameId, userId);
|
GameManager.instance.stopWatching(gameId, userId);
|
||||||
iterator.remove();
|
iterator.remove();
|
||||||
|
@ -215,10 +215,10 @@ public class User {
|
||||||
int minutes = (int) SystemUtil.getDateDiff(connectionTime, new Date(), TimeUnit.SECONDS) / 60;
|
int minutes = (int) SystemUtil.getDateDiff(connectionTime, new Date(), TimeUnit.SECONDS) / 60;
|
||||||
int hours = 0;
|
int hours = 0;
|
||||||
if (minutes > 59) {
|
if (minutes > 59) {
|
||||||
hours = (int) minutes / 60;
|
hours = minutes / 60;
|
||||||
minutes = minutes - (hours * 60);
|
minutes = minutes - (hours * 60);
|
||||||
}
|
}
|
||||||
return Integer.toString(hours) + ":" + (minutes > 9 ? Integer.toString(minutes) : '0' + Integer.toString(minutes));
|
return hours + ":" + (minutes > 9 ? Integer.toString(minutes) : '0' + Integer.toString(minutes));
|
||||||
}
|
}
|
||||||
|
|
||||||
public void fireCallback(final ClientCallback call) {
|
public void fireCallback(final ClientCallback call) {
|
||||||
|
@ -329,10 +329,11 @@ public class User {
|
||||||
|
|
||||||
private void reconnect() {
|
private void reconnect() {
|
||||||
logger.trace(userName + " started reconnect");
|
logger.trace(userName + " started reconnect");
|
||||||
|
//lastActivity = new Date(); // ??? comment to test can't reconnect to game on disconnect
|
||||||
for (Entry<UUID, Table> entry : tables.entrySet()) {
|
for (Entry<UUID, Table> entry : tables.entrySet()) {
|
||||||
ccJoinedTable(entry.getValue().getRoomId(), entry.getValue().getId(), entry.getValue().isTournament());
|
ccJoinedTable(entry.getValue().getRoomId(), entry.getValue().getId(), entry.getValue().isTournament());
|
||||||
}
|
}
|
||||||
for (Iterator<Entry<UUID, UUID>> iterator = userTournaments.entrySet().iterator(); iterator.hasNext();) {
|
for (Iterator<Entry<UUID, UUID>> iterator = userTournaments.entrySet().iterator(); iterator.hasNext(); ) {
|
||||||
Entry<UUID, UUID> next = iterator.next();
|
Entry<UUID, UUID> next = iterator.next();
|
||||||
Optional<TournamentController> tournamentController = TournamentManager.instance.getTournamentController(next.getValue());
|
Optional<TournamentController> tournamentController = TournamentManager.instance.getTournamentController(next.getValue());
|
||||||
if (tournamentController.isPresent()) {
|
if (tournamentController.isPresent()) {
|
||||||
|
@ -442,7 +443,7 @@ public class User {
|
||||||
}
|
}
|
||||||
gameSessions.clear();
|
gameSessions.clear();
|
||||||
logger.trace("REMOVE " + userName + " watched Games " + watchedGames.size());
|
logger.trace("REMOVE " + userName + " watched Games " + watchedGames.size());
|
||||||
for (Iterator<UUID> it = watchedGames.iterator(); it.hasNext();) { // Iterator to prevent ConcurrentModificationException
|
for (Iterator<UUID> it = watchedGames.iterator(); it.hasNext(); ) { // Iterator to prevent ConcurrentModificationException
|
||||||
UUID gameId = it.next();
|
UUID gameId = it.next();
|
||||||
GameManager.instance.stopWatching(gameId, userId);
|
GameManager.instance.stopWatching(gameId, userId);
|
||||||
}
|
}
|
||||||
|
@ -658,13 +659,13 @@ public class User {
|
||||||
builder.append(proto.getMatches());
|
builder.append(proto.getMatches());
|
||||||
List<String> quit = new ArrayList<>();
|
List<String> quit = new ArrayList<>();
|
||||||
if (proto.getMatchesIdleTimeout() > 0) {
|
if (proto.getMatchesIdleTimeout() > 0) {
|
||||||
quit.add("I:" + Integer.toString(proto.getMatchesIdleTimeout()));
|
quit.add("I:" + proto.getMatchesIdleTimeout());
|
||||||
}
|
}
|
||||||
if (proto.getMatchesTimerTimeout() > 0) {
|
if (proto.getMatchesTimerTimeout() > 0) {
|
||||||
quit.add("T:" + Integer.toString(proto.getMatchesTimerTimeout()));
|
quit.add("T:" + proto.getMatchesTimerTimeout());
|
||||||
}
|
}
|
||||||
if (proto.getMatchesQuit() > 0) {
|
if (proto.getMatchesQuit() > 0) {
|
||||||
quit.add("Q:" + Integer.toString(proto.getMatchesQuit()));
|
quit.add("Q:" + proto.getMatchesQuit());
|
||||||
}
|
}
|
||||||
if (!quit.isEmpty()) {
|
if (!quit.isEmpty()) {
|
||||||
builder.append(" (");
|
builder.append(" (");
|
||||||
|
@ -690,13 +691,13 @@ public class User {
|
||||||
builder.append(proto.getTourneys());
|
builder.append(proto.getTourneys());
|
||||||
List<String> quit = new ArrayList<>();
|
List<String> quit = new ArrayList<>();
|
||||||
if (proto.getTourneysQuitDuringDrafting() > 0) {
|
if (proto.getTourneysQuitDuringDrafting() > 0) {
|
||||||
quit.add("D:" + Integer.toString(proto.getTourneysQuitDuringDrafting()));
|
quit.add("D:" + proto.getTourneysQuitDuringDrafting());
|
||||||
}
|
}
|
||||||
if (proto.getTourneysQuitDuringConstruction() > 0) {
|
if (proto.getTourneysQuitDuringConstruction() > 0) {
|
||||||
quit.add("C:" + Integer.toString(proto.getTourneysQuitDuringConstruction()));
|
quit.add("C:" + proto.getTourneysQuitDuringConstruction());
|
||||||
}
|
}
|
||||||
if (proto.getTourneysQuitDuringRound() > 0) {
|
if (proto.getTourneysQuitDuringRound() > 0) {
|
||||||
quit.add("R:" + Integer.toString(proto.getTourneysQuitDuringRound()));
|
quit.add("R:" + proto.getTourneysQuitDuringRound());
|
||||||
}
|
}
|
||||||
if (!quit.isEmpty()) {
|
if (!quit.isEmpty()) {
|
||||||
builder.append(" (");
|
builder.append(" (");
|
||||||
|
|
|
@ -1,23 +1,16 @@
|
||||||
|
|
||||||
package mage.cards.a;
|
package mage.cards.a;
|
||||||
|
|
||||||
import java.util.UUID;
|
|
||||||
import mage.abilities.Ability;
|
|
||||||
import mage.abilities.dynamicvalue.common.StaticValue;
|
import mage.abilities.dynamicvalue.common.StaticValue;
|
||||||
import mage.abilities.effects.OneShotEffect;
|
|
||||||
import mage.abilities.effects.common.LookLibraryAndPickControllerEffect;
|
import mage.abilities.effects.common.LookLibraryAndPickControllerEffect;
|
||||||
import mage.cards.*;
|
import mage.cards.CardImpl;
|
||||||
|
import mage.cards.CardSetInfo;
|
||||||
import mage.constants.CardType;
|
import mage.constants.CardType;
|
||||||
import mage.constants.Outcome;
|
|
||||||
import mage.constants.Zone;
|
import mage.constants.Zone;
|
||||||
import mage.filter.FilterCard;
|
|
||||||
import mage.filter.StaticFilters;
|
import mage.filter.StaticFilters;
|
||||||
import mage.game.Game;
|
|
||||||
import mage.players.Player;
|
import java.util.UUID;
|
||||||
import mage.target.TargetCard;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
|
||||||
* @author Quercitron
|
* @author Quercitron
|
||||||
*/
|
*/
|
||||||
public final class AncestralMemories extends CardImpl {
|
public final class AncestralMemories extends CardImpl {
|
||||||
|
@ -39,40 +32,3 @@ public final class AncestralMemories extends CardImpl {
|
||||||
return new AncestralMemories(this);
|
return new AncestralMemories(this);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
class AncestralMemoriesEffect extends OneShotEffect {
|
|
||||||
|
|
||||||
public AncestralMemoriesEffect() {
|
|
||||||
super(Outcome.DrawCard);
|
|
||||||
this.staticText = "Look at the top seven cards of your library. Put two of them into your hand and the rest into your graveyard";
|
|
||||||
}
|
|
||||||
|
|
||||||
public AncestralMemoriesEffect(final AncestralMemoriesEffect effect) {
|
|
||||||
super(effect);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public AncestralMemoriesEffect copy() {
|
|
||||||
return new AncestralMemoriesEffect(this);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean apply(Game game, Ability source) {
|
|
||||||
Player controller = game.getPlayer(source.getControllerId());
|
|
||||||
if (controller != null) {
|
|
||||||
Cards cards = new CardsImpl(controller.getLibrary().getTopCards(game, 7));
|
|
||||||
if (!cards.isEmpty()) {
|
|
||||||
controller.lookAtCards(source, null, cards, game);
|
|
||||||
TargetCard target = new TargetCard(Math.min(2, cards.size()), Zone.LIBRARY, new FilterCard("two cards to put in your hand"));
|
|
||||||
if (controller.choose(Outcome.DrawCard, cards, target, game)) {
|
|
||||||
Cards toHand = new CardsImpl(target.getTargets());
|
|
||||||
controller.moveCards(cards, Zone.HAND, source, game);
|
|
||||||
cards.removeAll(toHand);
|
|
||||||
}
|
|
||||||
controller.moveCards(cards, Zone.GRAVEYARD, source, game);
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
|
@ -1,7 +1,5 @@
|
||||||
|
|
||||||
package mage.cards.t;
|
package mage.cards.t;
|
||||||
|
|
||||||
import java.util.UUID;
|
|
||||||
import mage.MageInt;
|
import mage.MageInt;
|
||||||
import mage.abilities.common.EntersBattlefieldTappedAbility;
|
import mage.abilities.common.EntersBattlefieldTappedAbility;
|
||||||
import mage.abilities.common.SimpleActivatedAbility;
|
import mage.abilities.common.SimpleActivatedAbility;
|
||||||
|
@ -12,22 +10,28 @@ import mage.abilities.mana.GreenManaAbility;
|
||||||
import mage.cards.CardImpl;
|
import mage.cards.CardImpl;
|
||||||
import mage.cards.CardSetInfo;
|
import mage.cards.CardSetInfo;
|
||||||
import mage.constants.CardType;
|
import mage.constants.CardType;
|
||||||
import mage.constants.SubType;
|
|
||||||
import mage.constants.Duration;
|
import mage.constants.Duration;
|
||||||
|
import mage.constants.SubType;
|
||||||
import mage.constants.Zone;
|
import mage.constants.Zone;
|
||||||
import mage.game.permanent.token.TokenImpl;
|
import mage.game.permanent.token.TokenImpl;
|
||||||
import mage.game.permanent.token.Token;
|
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
|
||||||
* @author Loki
|
* @author Loki
|
||||||
*/
|
*/
|
||||||
public final class TreetopVillage extends CardImpl {
|
public final class TreetopVillage extends CardImpl {
|
||||||
|
|
||||||
public TreetopVillage(UUID ownerId, CardSetInfo setInfo) {
|
public TreetopVillage(UUID ownerId, CardSetInfo setInfo) {
|
||||||
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
|
super(ownerId, setInfo, new CardType[]{CardType.LAND}, "");
|
||||||
|
|
||||||
|
// Treetop Village enters the battlefield tapped.
|
||||||
this.addAbility(new EntersBattlefieldTappedAbility());
|
this.addAbility(new EntersBattlefieldTappedAbility());
|
||||||
|
|
||||||
|
// {T}: Add {G}.
|
||||||
this.addAbility(new GreenManaAbility());
|
this.addAbility(new GreenManaAbility());
|
||||||
|
|
||||||
|
// {1}{G}: Treetop Village becomes a 3/3 green Ape creature with trample until end of turn. It’s still a land. (It can deal excess combat damage to the player or planeswalker it’s attacking.)
|
||||||
this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new BecomesCreatureSourceEffect(new ApeToken(), "land", Duration.EndOfTurn), new ManaCostsImpl("{1}{G}")));
|
this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new BecomesCreatureSourceEffect(new ApeToken(), "land", Duration.EndOfTurn), new ManaCostsImpl("{1}{G}")));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -51,6 +55,7 @@ class ApeToken extends TokenImpl {
|
||||||
toughness = new MageInt(3);
|
toughness = new MageInt(3);
|
||||||
this.addAbility(TrampleAbility.getInstance());
|
this.addAbility(TrampleAbility.getInstance());
|
||||||
}
|
}
|
||||||
|
|
||||||
public ApeToken(final ApeToken token) {
|
public ApeToken(final ApeToken token) {
|
||||||
super(token);
|
super(token);
|
||||||
}
|
}
|
||||||
|
|
|
@ -250,7 +250,7 @@ public class VerifyCardDataTest {
|
||||||
|
|
||||||
cardsList.forEach((cardName, amount) -> {
|
cardsList.forEach((cardName, amount) -> {
|
||||||
if (amount != 2) {
|
if (amount != 2) {
|
||||||
String error = "Error: found non duplicated rare card - "
|
String error = "Error: found non duplicated rare card -"
|
||||||
+ " set (" + set.getCode() + " - " + set.getName() + ")"
|
+ " set (" + set.getCode() + " - " + set.getName() + ")"
|
||||||
+ " card (" + cardName + ")";
|
+ " card (" + cardName + ")";
|
||||||
doubleErrors.add(error);
|
doubleErrors.add(error);
|
||||||
|
|
|
@ -398,7 +398,7 @@ public abstract class ContinuousEffectImpl extends EffectImpl implements Continu
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean isCanLookAtNextTopLibraryCard(Game game) {
|
public boolean canLookAtNextTopLibraryCard(Game game) {
|
||||||
// If the top card of your library changes while you’re casting a spell, playing a land, or activating an ability,
|
// If the top card of your library changes while you’re casting a spell, playing a land, or activating an ability,
|
||||||
// you can’t look at the new top card until you finish doing so. This means that if you cast the top card of
|
// you can’t look at the new top card until you finish doing so. This means that if you cast the top card of
|
||||||
// your library, you can’t look at the next one until you’re done paying for that spell. (2019-05-03)
|
// your library, you can’t look at the next one until you’re done paying for that spell. (2019-05-03)
|
||||||
|
|
|
@ -20,7 +20,6 @@ public class ChooseACardNameEffect extends OneShotEffect {
|
||||||
public static final String INFO_KEY = "NAMED_CARD";
|
public static final String INFO_KEY = "NAMED_CARD";
|
||||||
|
|
||||||
public enum TypeOfName {
|
public enum TypeOfName {
|
||||||
|
|
||||||
ALL,
|
ALL,
|
||||||
NOT_BASIC_LAND_NAME,
|
NOT_BASIC_LAND_NAME,
|
||||||
NONBASIC_LAND_NAME,
|
NONBASIC_LAND_NAME,
|
||||||
|
|
|
@ -39,7 +39,7 @@ public class LookAtTopCardOfLibraryAnyTimeEffect extends ContinuousEffectImpl {
|
||||||
if (obj == null) {
|
if (obj == null) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
if (!isCanLookAtNextTopLibraryCard(game)) {
|
if (!canLookAtNextTopLibraryCard(game)) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
controller.lookAtCards("Top card of " + obj.getIdName() + " controller's library", topCard, game);
|
controller.lookAtCards("Top card of " + obj.getIdName() + " controller's library", topCard, game);
|
||||||
|
|
|
@ -44,11 +44,11 @@ public class PlayWithTheTopCardRevealedEffect extends ContinuousEffectImpl {
|
||||||
if (allPlayers) {
|
if (allPlayers) {
|
||||||
for (UUID playerId : game.getState().getPlayersInRange(controller.getId(), game)) {
|
for (UUID playerId : game.getState().getPlayersInRange(controller.getId(), game)) {
|
||||||
Player player = game.getPlayer(playerId);
|
Player player = game.getPlayer(playerId);
|
||||||
if (player != null && isCanLookAtNextTopLibraryCard(game)) {
|
if (player != null && canLookAtNextTopLibraryCard(game)) {
|
||||||
player.setTopCardRevealed(true);
|
player.setTopCardRevealed(true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else if (isCanLookAtNextTopLibraryCard(game)) {
|
} else if (canLookAtNextTopLibraryCard(game)) {
|
||||||
controller.setTopCardRevealed(true);
|
controller.setTopCardRevealed(true);
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
|
|
|
@ -456,6 +456,8 @@ public interface Player extends MageItem, Copyable<Player> {
|
||||||
/**
|
/**
|
||||||
* Adds the cards to the reveal window and adds the source object's id name
|
* Adds the cards to the reveal window and adds the source object's id name
|
||||||
* to the title bar of the revealed cards window
|
* to the title bar of the revealed cards window
|
||||||
|
* <p>
|
||||||
|
* Warning, if you use it from continuous effect, then check with extra call isCanLookAtNextTopLibraryCard
|
||||||
*
|
*
|
||||||
* @param source
|
* @param source
|
||||||
* @param name
|
* @param name
|
||||||
|
@ -472,6 +474,8 @@ public interface Player extends MageItem, Copyable<Player> {
|
||||||
/**
|
/**
|
||||||
* Adds the cards to the look window and adds the source object's id name to
|
* Adds the cards to the look window and adds the source object's id name to
|
||||||
* the title bar of the lookedAt window
|
* the title bar of the lookedAt window
|
||||||
|
* <p>
|
||||||
|
* Warning, if you use it from continuous effect, then check with extra call isCanLookAtNextTopLibraryCard
|
||||||
*
|
*
|
||||||
* @param source
|
* @param source
|
||||||
* @param name
|
* @param name
|
||||||
|
|
|
@ -14,7 +14,6 @@ import mage.watchers.Watcher;
|
||||||
|
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Map.Entry;
|
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
Loading…
Reference in a new issue