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; package com.trs.main;
import com.badlogic.gdx.math.Vector2;
public class Enemy extends FightObject{ public class Enemy extends FightObject{
boolean move = false;
public Enemy(float x, float y, AnimatedSprite sprite, Stats stats, int id) { public Enemy(float x, float y, AnimatedSprite sprite, Stats stats, int id) {
super(x, y, sprite, stats, 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 x;
protected float y; protected float y;
protected Vector2 POI; 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) { public FightObject(float x, float y, AnimatedSprite sprite, Stats stats, int id) {
this.sprite = sprite; this.sprite = sprite;

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

Loading…
Cancel
Save