Package com.rosiminc.pm.game.tiles

Source Code of com.rosiminc.pm.game.tiles.FlipTile

package com.rosiminc.pm.game.tiles;

import com.rosiminc.pm.game.Tile;

/**
* This object represents a flip tile.
*
* @author Shymon
*
*/
public class FlipTile extends GameBoardTile {

  private Tile tile;
  private Tile tile2;
  private boolean firstTile;

  /**
   * This constructor initialises the tile with given row, column and pipe
   * tile.
   *
   * @param row
   *            the row
   * @param col
   *            the column
   * @param tile
   *            the pipe tile
   * @throws IllegalArgumentException
   *             if the tile is null
   */
  public FlipTile(int row, int col, Tile tile) {
    this(row, col, tile, null);
  }

  /**
   * This constructor initialises the tile with given row, column, pipe tile
   * and secondary pipe tile.
   *
   * @param row
   *            the row
   * @param col
   *            the column
   * @param tile
   *            the pipe tile
   * @throws IllegalArgumentException
   *             if the tiles sent are null
   */
  private FlipTile(int row, int col, Tile tile, Tile tile2) {
    super(row, col);

    setTile(tile);
    setTile2(tile2);
    this.firstTile = true;
  }

  /**
   * This method sets the primary tile.
   *
   * @param tile
   *            the primary pipe tile
   * @throws IllegalArgumentException
   *             if tile is null
   */
  private void setTile(Tile tile) {

    if (tile == null)
      throw new IllegalArgumentException("Null tile sent");
    this.tile = tile;
  }

  /**
   * This method sets the secondary tile.
   *
   * @param tile
   *            the secondary pipe tile
   * @throws IllegalArgumentException
   *             if tile is null
   */
  private void setTile2(Tile tile2) {

    if (tile2 != null)
      this.tile2 = tile2;
    else
      this.tile2 = generateTile(this.tile);
  }

  /**
   * This method generates a random secondary tile.
   *
   * @param original
   *            the original tile
   * @return the generated tile
   */
  private Tile generateTile(Tile original) {
    Tile aTile;
    boolean invalid = true;

    do {
      aTile = Tile.getTile((int) (Math.random() * 15)+1);
      invalid = (aTile.getNumSides() == original.getNumSides());
    } while (invalid);

    return aTile;
  }

  /*
   * (non-Javadoc)
   *
   * @see com.rosiminc.pm.game.tiles.GameBoardTile#actionA()
   */
  @Override
  public void actionA() {
    firstTile = !firstTile;
  }

  /*
   * (non-Javadoc)
   *
   * @see com.rosiminc.pm.game.tiles.GameBoardTile#actionB()
   */
  @Override
  public void actionB() {
    firstTile = !firstTile;

  }

  /*
   * (non-Javadoc)
   *
   * @see com.rosiminc.pm.game.tiles.GameBoardTile#shuffle()
   */
  @Override
  public void shuffle() {
    firstTile = ((int) (Math.random() * 2)) == 1;
  }

  /*
   * (non-Javadoc)
   *
   * @see com.rosiminc.pm.game.tiles.GameBoardTile#getTile()
   */
  @Override
  public Tile getTile() {
    if (firstTile)
      return tile;
    else
      return tile2;
  }

  /*
   * (non-Javadoc)
   *
   * @see com.rosiminc.pm.game.tiles.GameBoardTile#getTileType()
   */
  @Override
  public TileType getTileType() {
    return TileType.FLIP;
  }

}
TOP

Related Classes of com.rosiminc.pm.game.tiles.FlipTile

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.