Search in sources :

Example 6 with Deck

use of com.janfic.games.computercombat.model.Deck in project computercombat by janfic.

the class DrawAbility method doAbility.

@Override
public List<MoveResult> doAbility(MatchState state, Move move) {
    List<MoveResult> r = new ArrayList<>();
    UseAbilityMove abilityMove = (UseAbilityMove) move;
    List<Card> cards = state.activeEntities.get(move.getPlayerUID());
    Deck deck = state.decks.get(move.getPlayerUID());
    List<Card> drawnCards = new ArrayList<>();
    if (cards.size() < 4) {
        if (this.cards == null) {
            if (deck.size() > 0) {
                Card s = deck.draw();
                s.setOwnerUID(move.getPlayerUID());
                cards.add(s);
                drawnCards.add(s);
            }
        } else {
            for (StateAnalyzer<Integer> card : this.cards) {
                Card s = SQLAPI.getSingleton().getCardById(card.analyze(state, move), move.getPlayerUID());
                s.setOwnerUID(move.getPlayerUID());
                s.generateMatchID();
                cards.add(s);
                drawnCards.add(s);
            }
        }
    }
    List<MoveAnimation> animations = new ArrayList<>();
    if (abilityMove.getCard().getID() == 0) {
        state.computers.get(move.getPlayerUID()).setProgress(0);
    } else {
        for (Card card : state.activeEntities.get(move.getPlayerUID())) {
            if (card.equals(abilityMove.getCard())) {
                card.setProgress(0);
            }
        }
    }
    List<Card> drained = new ArrayList<>();
    drained.add(((UseAbilityMove) (move)).getCard());
    ConsumeProgressAnimation drainAnimation = new ConsumeProgressAnimation(move.getPlayerUID(), drained);
    DrawAnimation drawAnimation = new DrawAnimation(move.getPlayerUID(), drawnCards);
    for (Player player : state.players) {
        if (player.getUID().equals(move.getPlayerUID())) {
            state.currentPlayerMove = state.getOtherProfile(player.getUID());
        }
    }
    animations.add(drainAnimation);
    animations.add(drawAnimation);
    MoveResult result = new MoveResult(move, MatchState.record(state), animations);
    r.add(result);
    return r;
}
Also used : Player(com.janfic.games.computercombat.model.Player) MoveAnimation(com.janfic.games.computercombat.model.moves.MoveAnimation) ArrayList(java.util.ArrayList) Deck(com.janfic.games.computercombat.model.Deck) ConsumeProgressAnimation(com.janfic.games.computercombat.model.animations.ConsumeProgressAnimation) Card(com.janfic.games.computercombat.model.Card) DrawAnimation(com.janfic.games.computercombat.model.animations.DrawAnimation) UseAbilityMove(com.janfic.games.computercombat.model.moves.UseAbilityMove) MoveResult(com.janfic.games.computercombat.model.moves.MoveResult)

Example 7 with Deck

use of com.janfic.games.computercombat.model.Deck in project computercombat by janfic.

the class MatchState method clone.

@Override
public Object clone() throws CloneNotSupportedException {
    Player player1 = (Player) players.get(0).clone();
    Player player2 = (Player) players.get(1).clone();
    Component[][] componentBoard = new Component[8][8];
    for (int x = 0; x < componentBoard.length; x++) {
        for (int y = 0; y < componentBoard[x].length; y++) {
            componentBoard[x][y] = new Component(this.componentBoard[x][y]);
        }
    }
    Map<String, List<Card>> activeEntities = new HashMap<>();
    List<Card> player1Cards = new ArrayList<>();
    List<Card> player2Cards = new ArrayList<>();
    activeEntities.put(player1.getUID(), player1Cards);
    activeEntities.put(player2.getUID(), player2Cards);
    for (String string : this.activeEntities.keySet()) {
        for (Card card : this.activeEntities.get(string)) {
            activeEntities.get(string).add((Card) (card.clone()));
        }
    }
    Map<String, Deck> decks = new HashMap<>();
    for (String uid : this.decks.keySet()) {
        decks.put(uid, (Deck) this.decks.get(uid).clone());
    }
    Map<String, Card> computers = new HashMap<>();
    for (String uid : this.computers.keySet()) {
        computers.put(uid, (Card) this.computers.get(uid).clone());
    }
    MatchState state = new MatchState(player1, player2, componentBoard, activeEntities, computers, decks);
    state.isGameOver = this.isGameOver;
    if (this.winner != null) {
        state.winner = "" + this.winner;
    }
    state.currentPlayerMove = "" + this.currentPlayerMove;
    MatchState.buildNeighbors(componentBoard);
    state.update();
    return state;
}
Also used : Player(com.janfic.games.computercombat.model.Player) HashMap(java.util.HashMap) ArrayList(java.util.ArrayList) Deck(com.janfic.games.computercombat.model.Deck) Card(com.janfic.games.computercombat.model.Card) ArrayList(java.util.ArrayList) List(java.util.List) Component(com.janfic.games.computercombat.model.Component)

Aggregations

Deck (com.janfic.games.computercombat.model.Deck)7 Card (com.janfic.games.computercombat.model.Card)4 InputEvent (com.badlogic.gdx.scenes.scene2d.InputEvent)3 ClickListener (com.badlogic.gdx.scenes.scene2d.utils.ClickListener)3 ArrayList (java.util.ArrayList)3 Player (com.janfic.games.computercombat.model.Player)2 ResultSet (java.sql.ResultSet)2 SQLIntegrityConstraintViolationException (java.sql.SQLIntegrityConstraintViolationException)2 Statement (java.sql.Statement)2 OrthographicCamera (com.badlogic.gdx.graphics.OrthographicCamera)1 Actor (com.badlogic.gdx.scenes.scene2d.Actor)1 InputListener (com.badlogic.gdx.scenes.scene2d.InputListener)1 Label (com.badlogic.gdx.scenes.scene2d.ui.Label)1 TextButton (com.badlogic.gdx.scenes.scene2d.ui.TextButton)1 Window (com.badlogic.gdx.scenes.scene2d.ui.Window)1 DragAndDrop (com.badlogic.gdx.scenes.scene2d.utils.DragAndDrop)1 DeckActor (com.janfic.games.computercombat.actors.DeckActor)1 Component (com.janfic.games.computercombat.model.Component)1 Profile (com.janfic.games.computercombat.model.Profile)1 ConsumeProgressAnimation (com.janfic.games.computercombat.model.animations.ConsumeProgressAnimation)1