master
Jonathan Hager 6 years ago
commit f543073f97

@ -215,15 +215,21 @@ public class Controller extends ApplicationAdapter implements InputProcessor{
} }
} }
if(delete && d.getCurrentEntities()[i].getId() == 2 || d.getCurrentEntities()[i].getToDelete()){ if(delete || d.getCurrentEntities()[i].getToDelete()){
d.getCurrentEntities()[i] = null; if(d.getCurrentEntities()[i].getId() == 2){
gs.deleteEntitySprite(i); d.getCurrentEntities()[i] = null;
gs.deleteEntitySprite(i);
}
else{
}
} }
} }
} }
} }
} }
},0, 0.03f); },0, 0.03f);

@ -23,105 +23,110 @@ public class Archer extends Entity{
@Override @Override
public boolean move(int xPosPlayer, int yPosPlayer) { public boolean move(int xPosPlayer, int yPosPlayer) {
float deltaX = xPosPlayer - (int) xPos; if(!toDelete){
float deltaY = yPosPlayer - (int) yPos; float deltaX = xPosPlayer - (int) xPos;
float deltaY = yPosPlayer - (int) yPos;
double alpha;
if(deltaX == 0 && deltaY >= 0){ double alpha;
alpha = Math.PI / 2; if(deltaX == 0 && deltaY >= 0){
} alpha = Math.PI / 2;
else if(deltaX == 0 && deltaY < 0){
alpha = Math.PI / -2;
}
else{
alpha = Math.abs(Math.atan(deltaY / deltaX));
if(deltaX < 0 && deltaY < 0){
alpha = Math.PI + alpha;
} }
else if(deltaX < 0 && deltaY > 0){ else if(deltaX == 0 && deltaY < 0){
alpha = Math.PI - alpha; alpha = Math.PI / -2;
} }
else if(deltaX > 0 && deltaY < 0){ else{
alpha = 2*Math.PI - alpha; alpha = Math.abs(Math.atan(deltaY / deltaX));
if(deltaX < 0 && deltaY < 0){
alpha = Math.PI + alpha;
}
else if(deltaX < 0 && deltaY > 0){
alpha = Math.PI - alpha;
}
else if(deltaX > 0 && deltaY < 0){
alpha = 2*Math.PI - alpha;
}
} }
}
int distance = (int) Math.abs((deltaY / Math.sin(alpha)));
int distance = (int) Math.abs((deltaY / Math.sin(alpha)));
if(distance >= 104 && distance <= 184 && counter % 40 == 0){
if(distance >= 104 && distance <= 184 && counter % 40 == 0){ return true;
return true;
}
else{
movementX = (int) (3 * Math.cos(alpha));
movementY = (int) (3 * Math.sin(alpha));
System.out.println(distance);
if(distance < 124){
movementX *= -1;
movementY *= -1;
} }
else if(distance >= 124 && distance <= 164){ else{
movementX = 0; movementX = (int) (3 * Math.cos(alpha));
movementY = 0; movementY = (int) (3 * Math.sin(alpha));
System.out.println(distance);
if(distance < 124){
movementX *= -1;
movementY *= -1;
}
else if(distance >= 124 && distance <= 164){
movementX = 0;
movementY = 0;
}
xPos += movementX;
yPos += movementY;
} }
if(alpha >= Math.PI / -2 && alpha <= Math.PI / 2){
xPos += movementX; setDirection(1);
yPos += movementY; }
} else{
setDirection(0);
if(alpha >= Math.PI / -2 && alpha <= Math.PI / 2){ }
setDirection(1);
} counter++;
else{
setDirection(0);
} }
counter++;
return false; return false;
} }
@Override @Override
public Entity shoot(int xPosPlayer, int yPosPlayer){ public Entity shoot(int xPosPlayer, int yPosPlayer){
Arrow a = null;
float deltaX = xPosPlayer - (int) xPos; if(!toDelete){
float deltaY = yPosPlayer - (int) yPos; float deltaX = xPosPlayer - (int) xPos;
float deltaY = yPosPlayer - (int) yPos;
double alpha;
if(deltaX == 0 && deltaY >= 0){ double alpha;
alpha = Math.PI / 2; if(deltaX == 0 && deltaY >= 0){
} alpha = Math.PI / 2;
else if(deltaX == 0 && deltaY < 0){
alpha = Math.PI / -2;
}
else{
alpha = Math.abs(Math.atan(deltaY / deltaX));
if(deltaX < 0 && deltaY < 0){
alpha = Math.PI + alpha;
} }
else if(deltaX < 0 && deltaY > 0){ else if(deltaX == 0 && deltaY < 0){
alpha = Math.PI - alpha; alpha = Math.PI / -2;
} }
else if(deltaX > 0 && deltaY < 0){ else{
alpha = 2*Math.PI - alpha; alpha = Math.abs(Math.atan(deltaY / deltaX));
if(deltaX < 0 && deltaY < 0){
alpha = Math.PI + alpha;
}
else if(deltaX < 0 && deltaY > 0){
alpha = Math.PI - alpha;
}
else if(deltaX > 0 && deltaY < 0){
alpha = 2*Math.PI - alpha;
}
} }
} a = new Arrow(this.xPos, this.yPos, this.lvl, 0);
Arrow a = new Arrow(this.xPos, this.yPos, this.lvl, 0); movementX = (int) (6 * Math.cos(alpha));
movementX = (int) (6 * Math.cos(alpha)); movementY = (int) (6 * Math.sin(alpha));
movementY = (int) (6 * Math.sin(alpha));
a.setMovementX(movementX); a.setMovementX(movementX);
a.setMovementY(movementY); a.setMovementY(movementY);
a.setAngle(alpha); a.setAngle(alpha);
if(alpha >= Math.PI / -2 && alpha <= Math.PI / 2){ if(alpha >= Math.PI / -2 && alpha <= Math.PI / 2){
setDirection(1); setDirection(1);
} }
else{ else{
setDirection(0); setDirection(0);
}
} }
return a; return a;

@ -19,38 +19,39 @@ public class Swordsman extends Entity {
@Override @Override
public boolean move(int xPosPlayer, int yPosPlayer){ public boolean move(int xPosPlayer, int yPosPlayer){
float deltaX = xPosPlayer - (int) xPos; if(!toDelete){
float deltaY = yPosPlayer - (int) yPos; float deltaX = xPosPlayer - (int) xPos;
float deltaY = yPosPlayer - (int) yPos;
double alpha;
if(deltaX == 0 && deltaY >= 0){ double alpha;
alpha = Math.PI / 2; if(deltaX == 0 && deltaY >= 0){
} alpha = Math.PI / 2;
else if(deltaX == 0 && deltaY < 0){
alpha = Math.PI / -2;
}
else{
alpha = Math.abs(Math.atan(deltaY / deltaX));
if(deltaX < 0 && deltaY < 0){
alpha = Math.PI + alpha;
} }
else if(deltaX < 0 && deltaY > 0){ else if(deltaX == 0 && deltaY < 0){
alpha = Math.PI - alpha; alpha = Math.PI / -2;
} }
else if(deltaX > 0 && deltaY < 0){ else{
alpha = 2*Math.PI - alpha; alpha = Math.abs(Math.atan(deltaY / deltaX));
if(deltaX < 0 && deltaY < 0){
alpha = Math.PI + alpha;
}
else if(deltaX < 0 && deltaY > 0){
alpha = Math.PI - alpha;
}
else if(deltaX > 0 && deltaY < 0){
alpha = 2*Math.PI - alpha;
}
} }
movementX = (int) (3 * Math.cos(alpha));
movementY = (int) (3 * Math.sin(alpha));
xPos += movementX;
yPos += movementY;
updateDirection();
} }
movementX = (int) (3 * Math.cos(alpha));
movementY = (int) (3 * Math.sin(alpha));
xPos += movementX;
yPos += movementY;
updateDirection();
return false; return false;
} }

@ -22,10 +22,9 @@ public class EntitySprite {
private Rectangle collisionSprite; private Rectangle collisionSprite;
private Rectangle fullCollisionSprite; private Rectangle fullCollisionSprite;
private TextureRegion[][][] regions; private TextureRegion[][][] regions;
private int[] frames; private int[] frames;
private int attackState; private int attackState;
private int die;
// 0: links, 1: rechts // 0: links, 1: rechts
private int direction; private int direction;
@ -33,12 +32,12 @@ public class EntitySprite {
public EntitySprite(Texture[] textures, int width, int height){ public EntitySprite(Texture[] textures, int width, int height){
sprites = new Sprite[1]; sprites = new Sprite[1];
regions = new TextureRegion[1][][]; regions = new TextureRegion[1][][];
// 0: idle, 1: walking, 2: attack // 0: idle, 1: walking, 2: attack, 3: die
frames = new int[3]; frames = new int[4];
direction = 0; direction = 0;
attackState = 0; attackState = 0;
die = 0;
for(int i = 0; i < sprites.length; i++){ for(int i = 0; i < sprites.length; i++){
regions[i] = TextureRegion.split(textures[i], width, height); regions[i] = TextureRegion.split(textures[i], width, height);
@ -58,7 +57,10 @@ public class EntitySprite {
direction = e.getDirection(); direction = e.getDirection();
if(attackState == 1){ if(die >= 1){
updateDie();
}
else if(attackState == 1){
updateAttack(); updateAttack();
} }
else if(moves){ else if(moves){
@ -70,6 +72,17 @@ public class EntitySprite {
} }
} }
public void updateDie(){
if(frames[3] >= 9){
die = 2;
}
else{
frames[3]++;
sprites[0].setRegion(regions[0][4][frames[3]]);
updateFlip();
}
}
public void updateAttack(){ public void updateAttack(){
frames[0] = 0; frames[0] = 0;
frames[1] = 0; frames[1] = 0;
@ -131,15 +144,12 @@ public class EntitySprite {
public void update(int xPos, int yPos){ public void update(int xPos, int yPos){
for(int i = 0; i < sprites.length; i++){ for(int i = 0; i < sprites.length; i++){
sprites[i].setPosition(xPos - 16, yPos); sprites[i].setPosition(xPos - 16, yPos);
} }
updateCollision(xPos, yPos); updateCollision(xPos, yPos);
} }
public void updateCollision(int xPos, int yPos){ public void updateCollision(int xPos, int yPos){
collisionSprite.setPosition(xPos, yPos); collisionSprite.setPosition(xPos, yPos);
getFullCollisionSprite().setPosition(xPos, yPos); getFullCollisionSprite().setPosition(xPos, yPos);
@ -157,7 +167,6 @@ public class EntitySprite {
public Sprite[] getSprites() { public Sprite[] getSprites() {
return sprites; return sprites;
} }
/** /**
* @param sprites the sprites to set * @param sprites the sprites to set

Loading…
Cancel
Save