Package xunome.game.multiplayerg

Source Code of xunome.game.multiplayerg.MultiPlayer

/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/

package xunome.game.multiplayerg;

import xunome.game.BaseGame;
import xunome.xUnoME;
import xunome.game.Card;
import xunome.game.Player;
import xunome.game.InvalidMove;
import java.util.Vector;
import xunome.graphics.EndGame;

/**
*
* @author Sem iNick
* @since 3.0
*/
public final class MultiPlayer extends BaseGame {

    private MultiPlayerManager comunicator;

    public MultiPlayer(Vector deck, int pos, int numberPlayers, MultiPlayerManager com,
                        xUnoME mid) {

        super(deck, numberPlayers, pos, mid);
        comunicator = com;
        setGameStatus(true);
    }

    public final synchronized boolean jogada(Player player, Card card) throws InvalidMove {

        Card atualUP = getTable().getUpCard();

        if ((card.getType() != Card.JOKER4) && (isValidMove(card))) {

            switch (card.getType()) {

                case Card.GET2:

                    penalize(getNextPlayer(), 2);
                    setColor(card.getColor());
                break;

                case Card.REVERSE:

                    changeDirection();
                    setColor(card.getColor());
                break;

                case Card.SKIP:

                    super.nextPlayer();
                    setColor(card.getColor());
                break;

                case Card.NORMAL:

                    setColor(card.getColor());
                break;
            }

        } else if ((card.getType() == Card.JOKER4)
                    && (player.checkHaveCard(getAtualColor(), atualUP) == Player.JOKER)) {

            penalize(getNextPlayer(), 4);
            getCanvas().refresh();
            super.nextPlayer();
        } else {

            throw new InvalidMove();
        }

        super.nextPlayer();

        if ((card.getType() == Card.JOKER) || (card.getType() == Card.JOKER4)) {

            if (player.isLocalPlayer()) {

                //Show color chooser
                getCanvas().chooseColor();
                //Wait until player chooses color
                while(getChoose()) {}
            }
        }

        int numberBefore = player.getNumberOfCards();
        int cardPlayedPos = player.getAtualCardP();
        getTable().add2Discarded(player.discard());

        if (player.isLocalPlayer()) {

            if (numberBefore == 2) {

                getCanvas().refresh();
                setCallUno(true);
                try {

                    Thread.sleep(3000);
                } catch (InterruptedException ie) {}
            }
            comunicator.getDataListener().sendMove(cardPlayedPos,
                                                    getAtualColor(),
                                                    player.getMasterPos(),
                                                    getCallUno());
            if (getCallUno()) {

                penalize(player, 3);
            }
            setCallUno(false);
        }
       
        return (player.getNumberOfCards() == 0);
    }

    public final void nextPlayerRemote() {

        //#ifdef DEBUG
        System.out.println("Next remote");
        //#endif
        comunicator.getDataListener().nextPlayer(getLocalPlayerPos());
        super.nextPlayer();
    }

    public final void getEndForm(boolean winner) {

        if (winner) {

            comunicator.getDataListener().sendData(DataListener.MESSAGE + "Server"
                    + DataListener.MSG_SEPARATOR + comunicator.getName() + " win. \\o/"
                    + DataListener.DATA_DELIMITER);
        }
        EndGame end = new EndGame(winner);
        end.startEffect();
        getMidlet().getLCD().setCurrent(end);

        try {

            Thread.sleep(5000L);
        } catch (InterruptedException ie) {}

        comunicator.showChatForm();
    }

    public final void stopPlaying() {

        if (comunicator.isServer()) {
           
            DataListener data = comunicator.getDataListener();
            data.sendData(DataListener.MESSAGE + "Server" + DataListener.MSG_SEPARATOR
                        + "Server player's destroyed the game." + DataListener.DATA_DELIMITER);
            data.sendData(DataListener.BACK_CHAT + "" + DataListener.DATA_DELIMITER);
            comunicator.showChatForm();
        }

        super.stopPlaying();
    }
}
TOP

Related Classes of xunome.game.multiplayerg.MultiPlayer

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.