/**
*
*/
package com.softuni.earth.base.objects;
import javafx.animation.TranslateTransition;
import javafx.geometry.Point2D;
import javafx.scene.paint.Color;
import javafx.scene.shape.Circle;
import javafx.util.Duration;
import com.softuni.earth.base.GameObject;
/**
* @author kpetkova
*
*/
public class Bullet extends Item {
private GameObject holder;
private String shootingDirection;
private boolean isTop;
public GameObject getHolder() {
return holder;
}
public void setHolder(GameObject holder) {
this.holder = holder;
}
public Bullet(GameObject holder) {
super();
this.holder = holder;
createNode();
}
/*
* (non-Javadoc)
*
* @see com.softuni.earth.base.GameObject#update()
*/
@Override
public void update() {
}
@Override
public void updatePosition(Point2D moveBy) {
double translateX = holder.getNode().getTranslateX();
double translateY = holder.getNode().getTranslateY();
Point2D playerPosition = new Point2D(translateX, translateY);
this.position = playerPosition;
TranslateTransition smoothMove = new TranslateTransition(
Duration.millis(2000), this.getNode());
smoothMove.setFromX(translateX);
smoothMove.setFromY(translateY);
// FIXME: Change 1000 to screenWidth()
int leftRightDirection = 0;
int upDownDirection = 0;
switch (shootingDirection) {
case ("west"):
leftRightDirection = -1000;
break;
case ("east"):
leftRightDirection = 1000;
break;
case ("north"):
upDownDirection = -1000;
break;
case ("south"):
upDownDirection = 1000;
break;
default:
//some other directions?
break;
}
smoothMove.setByX(this.getPosition().getX() + leftRightDirection);
smoothMove.setByY(this.getPosition().getY() + upDownDirection);
smoothMove.setAutoReverse(true);
smoothMove.setCycleCount(1);
smoothMove.play();
}
private void createNode() {
Circle bulletCircle = new Circle(5f);
bulletCircle.setFill(Color.BLUE);
bulletCircle.setVisible(true);
bulletCircle.setId("Player Bullet");
Point2D playerPosition = holder.getPosition();
double xPosition = playerPosition == null ? 0 : playerPosition.getX();
double yPosition = playerPosition == null ? 0 : playerPosition.getY();
bulletCircle.setTranslateX(xPosition);
bulletCircle.setTranslateY(yPosition);
setNode(bulletCircle);
}
public boolean isTop() {
return isTop;
}
public void setTop(boolean isTop) {
this.isTop = isTop;
}
public String getShootingDirection() {
return shootingDirection;
}
public void setShootingDirection(String shootingDirection) {
this.shootingDirection = shootingDirection;
}
}