Wargate.java :  » Game » magicwars » mw » server » card » gold » ugw » Java Open Source

Java Open Source » Game » magicwars 
magicwars » mw » server » card » gold » ugw » Wargate.java
package mw.server.card.gold.ugw;

import mw.server.list.CardList;
import mw.server.list.CardListFilter;
import mw.server.model.Ability;
import mw.server.model.Card;
import mw.server.model.Spell;
import mw.server.model.SpellAbility;
import mw.server.model.cost.ManaCost;
import mw.server.ChoiceCommand;
import mw.server.GameManager;
import mw.server.MWPlayer;

@SuppressWarnings("serial")
public class Wargate {
    public static Card getCard(final GameManager game, final Card card) {

        final SpellAbility searchAbility = new Ability(card, "0") {
            
            public void resolve() {
                if (getTargetCard() != null) {
                    int pid = getSourceCard().getControllerID();
                    MWPlayer p = game.getPlayerById(pid);
                    Card c = getTargetCard();
                    p.removeFromLibrary(c);
                    p.shuffleLibrary();
                    game.getManager().revealCard(c);
                    game.getBattlefield().addPermanent(c);
                }
            }
        };
        
        /**
         * Forms the list of permanent cards with converted mana cost X or less
         */
        final ChoiceCommand runtime = new ChoiceCommand() {
            
            public void execute() {
        
              int aid = card.getControllerID();
                CardList permanents = game.getPlayerById(aid).getLibrary().getCardList();

                final int X = card.getSpellAbility()[0].getXValue();
                
                permanents = permanents.filter(new CardListFilter() {

                    @Override
                    public boolean addCard(Card c) {
                        ManaCost manaCost = new ManaCost(c.getManaCost());
                        return c.isPermanent() && manaCost.getConverted() <= X;
                    }
                    
                });
                
                setInputChoice(permanents);
            }
        };
        
        final SpellAbility spell = new Spell(card) {
            
            public void resolve() {
                searchAbility.setChoiceCommand(runtime);
                searchAbility.setNeedsToChooseCard(true);
                game.getPlayerById(card.getControllerID()).getGameStatistics().setSearchedLibraryForCardThisTurn(true);
                game.getStack().add(searchAbility);
            }
        };
        
        spell.setStackDescription(card + ": Search your library for a permanent card with converted mana cost X or less, put it into play, then shuffle your library.");
        spell.setNeedsToChooseX(true);
        card.clearSpellAbility();
        card.addSpellAbility(spell);

        return card;
    }
}
java2s.com  | Contact Us | Privacy Policy
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.