turn based system added in the fight-system

master
GammelJAN 5 years ago
parent 560659be17
commit ec241d3d53

@ -1,9 +1,24 @@
package com.trs.main;
import com.badlogic.gdx.math.Vector2;
public class Enemy extends FightObject{
boolean move = false;
public Enemy(float x, float y, AnimatedSprite sprite, Stats stats, int id) {
super(x, y, sprite, stats, id);
}
public void act(){
if(POI == null && !move){
POI = new Vector2(x, y - 32);
move = true;
}
else if(move && POI == null){
state = 2;
move = false;
}
}
}

@ -9,6 +9,9 @@ public abstract class FightObject {
protected float x;
protected float y;
protected Vector2 POI;
// 0: waiting 1: doing action 2: finished action
protected int state = 0;
public FightObject(float x, float y, AnimatedSprite sprite, Stats stats, int id) {
this.sprite = sprite;

@ -40,7 +40,7 @@ public class FightScreen {
// SORTING OBJECTS BY INITIATIVE STAT
/*
for(int j = 0; j < objects.length-1; j++){
for(int i = objects.length-1; i >= 0; i--){
if(i > 0 && objects[i].stats.getInit() > objects[i-1].stats.getInit()){
@ -50,53 +50,23 @@ public class FightScreen {
}
}
}
*/
objects[0].state = 1;
}
public void act(float deltatime) {
System.out.println(getPlayer().state);
if(state == 0){
boolean finished = true;
for(FightObject object : objects){
Vector2 POI = new Vector2((int)(Math.ceil((double)(object.x)/32.0) * 32.0) - 16, (int)(Math.ceil((double)(object.y)/32.0) * 32.0));
float speed = 2.5f;
if(Math.abs(Vector2.dst(object.x, object.y, POI.x, POI.y)) < 3f && Math.abs(Vector2.dst(object.x, object.y, POI.x, POI.y)) != 0) {
speed = Math.abs(Vector2.dst(object.x, object.y, POI.x, POI.y));
}
Vector2 movement = new Vector2(speed,0);
movement.setAngleRad(StaticMath.calculateAngle(object.x, object.y, POI.x, POI.y));
int facing;
if(movement.angleDeg() < 135 && movement.angleDeg() >= 45) {
facing = 0;
}
else if(movement.angleDeg() >= 135 && movement.angleDeg() < 225) {
facing = 1;
}
else if(movement.angleDeg() >= 225 && movement.angleDeg() < 315) {
facing = 2;
}
else {
facing = 3;
if(object.x % 32 != 0 || object.y % 32 != 0){
object.POI = new Vector2((int)(Math.ceil((double)(object.x)/32.0) * 32.0) - 16, (int)(Math.ceil((double)(object.y)/32.0) * 32.0));
}
if(StaticMath.calculateDistance(object.x, object.y, POI.x, POI.y, movement.angleRad()) == 0) {
movement.x = 0;
movement.y = 0;
}
object.setX(object.x + movement.x);
object.setY(object.y + movement.y);
int animationRow = 0;
if(movement.x != 0 || movement.y != 0) {
animationRow = 8;
}
object.sprite.setRow(animationRow + facing);
if(movement.x != 0 || movement.y != 0){
}
gotoPOI();
for(FightObject object : objects){
if(object.POI != null){
finished = false;
break;
}
}
if(finished){
@ -104,31 +74,58 @@ public class FightScreen {
}
}
else if(state == 1){
if(Gdx.input.isKeyJustPressed(Input.Keys.W)){
if(getPlayer().POI == null){
getPlayer().POI = new Vector2(getPlayer().x, getPlayer().y + 32);
System.out.println("W");
}
}
if(Gdx.input.isKeyJustPressed(Input.Keys.A)){
if(getPlayer().POI == null){
getPlayer().POI = new Vector2(getPlayer().x-32, getPlayer().y);
System.out.println("A");
}
}
if(Gdx.input.isKeyJustPressed(Input.Keys.S)){
if(getPlayer().POI == null){
getPlayer().POI = new Vector2(getPlayer().x, getPlayer().y - 32);
System.out.println("S");
for(int i = 0; i < objects.length; i++){
if(objects[i].state == 1){
if(objects[i] instanceof FightPlayer){
if(Gdx.input.isKeyJustPressed(Input.Keys.W)){
if(objects[i].POI == null){
objects[i].POI = new Vector2(objects[i].x, objects[i].y + 32);
System.out.println("W");
}
}
if(Gdx.input.isKeyJustPressed(Input.Keys.A)){
if(objects[i].POI == null){
objects[i].POI = new Vector2(objects[i].x-32, objects[i].y);
System.out.println("A");
}
}
if(Gdx.input.isKeyJustPressed(Input.Keys.S)){
if(objects[i].POI == null){
objects[i].POI = new Vector2(objects[i].x, objects[i].y - 32);
System.out.println("S");
}
}
if(Gdx.input.isKeyJustPressed(Input.Keys.D)){
if(objects[i].POI == null){
objects[i].POI = new Vector2(objects[i].x + 32, objects[i].y);
System.out.println("D");
}
}
if(Gdx.input.isKeyJustPressed(Input.Keys.F)){
System.out.println("F");
objects[i].state = 2;
}
}
else if(objects[i] instanceof Enemy){
((Enemy)objects[i]).act();
}
}
}
if(Gdx.input.isKeyJustPressed(Input.Keys.D)){
if(getPlayer().POI == null){
getPlayer().POI = new Vector2(getPlayer().x + 32, getPlayer().y);
System.out.println("D");
else if(objects[i].state == 2){
objects[i].state = 0;
if(i == objects.length-1){
objects[0].state = 1;
}
else{
objects[i+1].state = 1;
}
}
}
}
else if(state == 2){
}
gotoPOI();
for(FightObject object : objects) {
@ -208,16 +205,16 @@ public class FightScreen {
movement.setAngleRad(StaticMath.calculateAngle(object.x, object.y, object.POI.x, object.POI.y));
int facing;
if(movement.angleDeg() < 135 && movement.angleDeg() >= 45) {
facing = 0;
facing = 0;
}
else if(movement.angleDeg() >= 135 && movement.angleDeg() < 225) {
facing = 1;
facing = 1;
}
else if(movement.angleDeg() >= 225 && movement.angleDeg() < 315) {
facing = 2;
facing = 2;
}
else {
facing = 3;
facing = 3;
}
if((int)object.x == (int)object.POI.x && (int)object.y == (int)object.POI.y) {

Loading…
Cancel
Save