package com.mony.crazydriver.characters;
import com.badlogic.gdx.graphics.g2d.Animation;
import com.badlogic.gdx.graphics.g2d.TextureRegion;
import com.badlogic.gdx.math.Vector2;
import com.mony.crazydriver.managers.ResourceManager;
import com.mony.crazydriver.util.Constants;
public class Car extends Character{
public float SPEED = 250f;
public enum State {
RIGHT, LEFT, UP, DOWN, IDLE
}
public State state;
private int score;
Animation rightAnimation;
Animation leftAnimation;
Animation upAnimation;
Animation downAnimation;
TextureRegion idleFrame;
public Car(TextureRegion texture,float x, float y) {
super(texture,x, y);
idleFrame=texture;
rightAnimation = ResourceManager.getAnimation("car_right");
leftAnimation = ResourceManager.getAnimation("car_left");
upAnimation = ResourceManager.getAnimation("car_up");
downAnimation = ResourceManager.getAnimation("car_down");
//La posicion inicial es idle
state= State.IDLE;
score = 0;
}
public void update(float dt) {
// Calcula el tiempo para cargar el frame que proceda de la animaci�n
stateTime += dt;
// Carga el frame seg�n su posici�n y el momento del juego
switch (state) {
case RIGHT:
currentFrame = rightAnimation.getKeyFrame(stateTime, true);
break;
case LEFT:
currentFrame = leftAnimation.getKeyFrame(stateTime, true);
break;
case UP:
currentFrame = upAnimation.getKeyFrame(stateTime, true);
break;
case DOWN:
currentFrame = downAnimation.getKeyFrame(stateTime, true);
break;
case IDLE:
currentFrame = idleFrame;
break;
default:
currentFrame = idleFrame;
}
}
public void move(Vector2 movement) {
movement.scl(SPEED);
position.add(movement);
rect.x=position.x;
rect.y=position.y;
if (position.x <= 0)
position.x = 0;
if ((position.x + currentFrame.getRegionWidth()) > Constants.SCREEN_WIDTH)
position.x = Constants.SCREEN_WIDTH - currentFrame.getRegionWidth();
if (position.y <= 0)
position.y = 0;
if ((position.y + currentFrame.getRegionHeight()) > Constants.SCREEN_HEIGHT)
position.y = Constants.SCREEN_HEIGHT - currentFrame.getRegionHeight();
}
public int getScore() {
return score;
}
public void setScore(int score) {
this.score = score;
}
public void addScore(int score) {
this.score += score;
}
public float getSpeed() {
return SPEED;
}
public void setSpeed(float speed) {
this.SPEED=speed;
}
}