PuttingPiecesDisplay.java :  » Game » pathboardgame » gui » gameEntities » Java Open Source

Java Open Source » Game » pathboardgame 
pathboardgame » gui » gameEntities » PuttingPiecesDisplay.java
package gui.gameEntities;

import gameEngine.JGamePanel;
import gameEngine.entityClasses.Entity;
import gameEngine.gameMath.Point;
import gameLogic.Game;
import gameLogic.PhaseChangeListener;
import gameLogic.gameFlow.gameStates.GameStateGameEnded;
import gameLogic.gameFlow.gameStates.GameStateMovingStrongs;
import gameLogic.gameFlow.gameStates.GameStatePuttingStrongs;
import gameLogic.gameFlow.gameStates.GameStatePuttingWeaks;
import gameLogic.gameFlow.gameStates.StateVisitor;

import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionListener;

public class PuttingPiecesDisplay implements MouseMotionListener,PhaseChangeListener,StateVisitor{

  private final Entity entityPieceWeak;
  private final Entity entityPieceStrong;

  private final int x;
  private final int y;
  private final boolean isTop;
  private final int boardSize;
  private final int gridWidth;
  private boolean weakVisible = false;
  private boolean strongVisible = false;
  private final Point boardPosition;

  public PuttingPiecesDisplay(final JGamePanel gamePanel,final Point position, final String weakPieceSprite, final String strongPieceSprite,final boolean isTop,final Point boardPosition,final int boardSize, final int gridWidth) {
    this.boardPosition = boardPosition;
    this.boardSize = boardSize;
    this.gridWidth = gridWidth;
    this.isTop = isTop;
    x = (int)position.getX();
    y = (int)position.getY();
    gamePanel.addMouseMotionListener(this);
    entityPieceWeak = new Entity();
    entityPieceWeak.setPosition(position);
    entityPieceWeak.setSprite(weakPieceSprite);
    setWeakInvisible();
    gamePanel.addGameElement(entityPieceWeak);

    entityPieceStrong = new Entity();
    entityPieceStrong.setPosition(position);
    entityPieceStrong.setSprite(strongPieceSprite);
    setStrongInvisible();
    gamePanel.addGameElement(entityPieceStrong);
  }

  @Override
  public void changedPhase(final Game game) {
    game.getCurrentState().accept(this);
  }

  @Override
  public void mouseDragged(final MouseEvent e) {
    //Not used
  }

  @Override
  public void mouseMoved(final MouseEvent e) {
    final int mouseX = e.getX();
    final int mouseY = e.getY();

    if(mouseX < boardPosition.getX()){
      setAllInvisible();
      return;
    }
    if(mouseX >= boardPosition.getX()+boardSize){
      setAllInvisible();
      return;
    }
    if(mouseY < boardPosition.getY()){
      setAllInvisible();
      return;
    }
    if(mouseY >= boardPosition.getY()+boardSize){
      setAllInvisible();
      return;
    }


    final int wichSquare = (mouseX-x)/gridWidth;
    final int pieceX = wichSquare*gridWidth+x;
    entityPieceWeak.setVisible(weakVisible);
    entityPieceStrong.setVisible(strongVisible);
    entityPieceWeak.setPosition(pieceX,y);
    entityPieceStrong.setPosition(pieceX,y);
  }

  @Override
  public void onGameEnded(final GameStateGameEnded gameStateGameEnded) {
    setWeakInvisible();
    setStrongInvisible();
  }

  @Override
  public void onMovingStrongs(final GameStateMovingStrongs gameStateMovingStrongs) {
    setWeakInvisible();
    setStrongInvisible();
  }

  @Override
  public void onPuttingStrongs(final GameStatePuttingStrongs gameStatePuttingStrongs) {
    setWeakInvisible();
    if(gameStatePuttingStrongs.isTopPlayerTurn() && isTop || gameStatePuttingStrongs.isBottomPlayerTurn() && !isTop) {
      setStrongVisible();
    }else{
      setStrongInvisible();
    }
  }

  @Override
  public void onPuttingWeaks(final GameStatePuttingWeaks gameStatePuttingWeaks) {
    setStrongInvisible();
    if(gameStatePuttingWeaks.isTopPlayerTurn() && isTop || gameStatePuttingWeaks.isBottomPlayerTurn() && !isTop) {
      setWeakVisible();
    } else {
      setWeakInvisible();
    }
  }

  private void setAllInvisible() {
    entityPieceWeak.setVisible(false);
    entityPieceStrong.setVisible(false);
  }

  private void setStrongInvisible() {
    strongVisible = false;
    entityPieceStrong.setVisible(strongVisible);
  }

  private void setStrongVisible() {
    strongVisible = true;
    entityPieceStrong.setVisible(strongVisible);
  }

  private void setWeakInvisible() {
    weakVisible = false;
    entityPieceWeak.setVisible(weakVisible);
  }

  private void setWeakVisible() {
    weakVisible = true;
    entityPieceWeak.setVisible(weakVisible);
  }

}
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.