diff --git a/core/src/com/trs/main/Enemy.java b/core/src/com/trs/main/Enemy.java index 4b30b51..49ca2c6 100644 --- a/core/src/com/trs/main/Enemy.java +++ b/core/src/com/trs/main/Enemy.java @@ -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; + } + } } diff --git a/core/src/com/trs/main/FightObject.java b/core/src/com/trs/main/FightObject.java index 532c495..7ccb402 100644 --- a/core/src/com/trs/main/FightObject.java +++ b/core/src/com/trs/main/FightObject.java @@ -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; diff --git a/core/src/com/trs/main/FightScreen.java b/core/src/com/trs/main/FightScreen.java index 5984f1e..56159ab 100644 --- a/core/src/com/trs/main/FightScreen.java +++ b/core/src/com/trs/main/FightScreen.java @@ -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) {