GammelJan 6 years ago
commit b1366d7343

@ -139,7 +139,7 @@ public class Controller extends ApplicationAdapter implements InputProcessor{
if(Intersector.overlaps(tempObject.getCollisionSprite(), playerSprite)){ if(Intersector.overlaps(tempObject.getCollisionSprite(), playerSprite)){
overlaps = true; overlaps = true;
if(d.getCurrentEntities()[i].getType() == 2){ if(d.getCurrentEntities()[i].getType() == 2 && d.getCurrentEntities()[i].isTargetsPlayer()){
delete = true; delete = true;
d.getCurrentEntities()[i].attack(d.getPlayer()); d.getCurrentEntities()[i].attack(d.getPlayer());
} }
@ -565,6 +565,64 @@ public class Controller extends ApplicationAdapter implements InputProcessor{
} }
} }
if(keycode == Input.Keys.LEFT){
if(mm != null){}
if(gs != null && gs.getIsLoading() == false){
Entity lol = d.getPlayer().shoot((int) d.getPlayer().getxPos() - 1, (int) d.getPlayer().getyPos());
for(int k = 5; k < d.getCurrentEntities().length; k++){
if(d.getCurrentEntities()[k] == null){
d.getCurrentEntities()[k] = lol;
gs.generateNewEntitySprite(lol, k);
break;
}
}
}
}
if(keycode == Input.Keys.UP){
if(mm != null){}
if(gs != null && gs.getIsLoading() == false){
Entity lol = d.getPlayer().shoot((int) d.getPlayer().getxPos(), (int) d.getPlayer().getyPos() + 1);
for(int k = 5; k < d.getCurrentEntities().length; k++){
if(d.getCurrentEntities()[k] == null){
d.getCurrentEntities()[k] = lol;
gs.generateNewEntitySprite(lol, k);
break;
}
}
}
}
if(keycode == Input.Keys.RIGHT){
if(mm != null){}
if(gs != null && gs.getIsLoading() == false){
Entity lol = d.getPlayer().shoot((int) d.getPlayer().getxPos() + 1, (int) d.getPlayer().getyPos());
for(int k = 5; k < d.getCurrentEntities().length; k++){
if(d.getCurrentEntities()[k] == null){
d.getCurrentEntities()[k] = lol;
gs.generateNewEntitySprite(lol, k);
break;
}
}
}
}
if(keycode == Input.Keys.DOWN){
if(mm != null){}
if(gs != null && gs.getIsLoading() == false){
Entity lol = d.getPlayer().shoot((int) d.getPlayer().getxPos(), (int) d.getPlayer().getyPos() - 1);
for(int k = 5; k < d.getCurrentEntities().length; k++){
if(d.getCurrentEntities()[k] == null){
d.getCurrentEntities()[k] = lol;
gs.generateNewEntitySprite(lol, k);
break;
}
}
}
}
return true; return true;
} }

@ -16,6 +16,7 @@ public abstract class Entity {
protected Inventory inv; protected Inventory inv;
private boolean toDelete; private boolean toDelete;
private double angle; private double angle;
protected boolean targetsPlayer;
@ -27,6 +28,7 @@ public abstract class Entity {
this.movementY = 0; this.movementY = 0;
this.direction = 2; this.direction = 2;
this.toDelete = false; this.toDelete = false;
this.targetsPlayer = true;
} }
public void attack(Entity e){ public void attack(Entity e){
@ -185,5 +187,12 @@ public abstract class Entity {
public int getType() { public int getType() {
return type; return type;
} }
/**
* @return the targetsPlayer
*/
public boolean isTargetsPlayer() {
return targetsPlayer;
}
} }

@ -114,7 +114,7 @@ public class Archer extends Entity{
alpha = 2*Math.PI - alpha; alpha = 2*Math.PI - alpha;
} }
} }
a = new Projectile(this.xPos + 32, this.yPos + 32, this.lvl, 2); a = new Projectile(this.xPos + 32, this.yPos + 32, this.lvl, 2, true);
movementX = (int) (6 * Math.cos(alpha)); movementX = (int) (6 * Math.cos(alpha));
movementY = (int) (6 * Math.sin(alpha)); movementY = (int) (6 * Math.sin(alpha));

@ -30,6 +30,7 @@ public class Player extends Entity {
type = -1; type = -1;
inv = new Inventory(3,2); inv = new Inventory(3,2);
// TODO: Sinnvolle Werte finden // TODO: Sinnvolle Werte finden
this.targetsPlayer = false;
} }
@ -55,5 +56,59 @@ public class Player extends Entity {
return false; return false;
} }
@Override
public Entity shoot(int xPosPlayer, int yPosPlayer){
Projectile a = null;
if(!isToDelete()){
float deltaX = xPosPlayer - (int) xPos;
float deltaY = yPosPlayer - (int) yPos;
double alpha;
if(deltaY == 0){
if(deltaX < 0){
alpha = Math.PI;
}
else{
alpha = 0;
}
}
else 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){
alpha = Math.PI - alpha;
}
else if(deltaX > 0 && deltaY < 0){
alpha = 2*Math.PI - alpha;
}
}
a = new Projectile(this.xPos + 32, this.yPos + 32, this.lvl, 2, false);
int tempMovementX = (int) (6 * Math.cos(alpha));
int tempMovementY = (int) (6 * Math.sin(alpha));
a.setMovementX(tempMovementX);
a.setMovementY(tempMovementY);
a.setAngle(alpha);
if((alpha >= 0 && alpha <= Math.PI / 2) || (alpha <= 2 * Math.PI && alpha >= 2 * Math.PI - Math.PI / 2)){
setDirection(1);
}
else{
setDirection(0);
}
}
return a;
}
} }

@ -14,7 +14,7 @@ public class Projectile extends Entity{
int direction; int direction;
int lifetime; int lifetime;
public Projectile(float xPos, float yPos, int lvl, int id){ public Projectile(float xPos, float yPos, int lvl, int id, boolean targetsPlayer){
super(xPos, yPos, lvl); super(xPos, yPos, lvl);
xStart = xPos; xStart = xPos;
yStart = yPos; yStart = yPos;
@ -22,6 +22,7 @@ public class Projectile extends Entity{
this.id = id; this.id = id;
type = 2; type = 2;
this.lifetime = 0; this.lifetime = 0;
this.targetsPlayer = targetsPlayer;
} }
public float getxStart(){ public float getxStart(){

@ -122,7 +122,7 @@ public class Wizard extends Entity{
alpha = 2*Math.PI - alpha; alpha = 2*Math.PI - alpha;
} }
} }
a = new Projectile(this.xPos + 32, this.yPos + 32, this.lvl, 4); a = new Projectile(this.xPos + 32, this.yPos + 32, this.lvl, 4, true);
movementX = (int) (6 * Math.cos(alpha)); movementX = (int) (6 * Math.cos(alpha));
movementY = (int) (6 * Math.sin(alpha)); movementY = (int) (6 * Math.sin(alpha));

@ -206,19 +206,6 @@ public class GameScreen {
updateEntitySprites(e); updateEntitySprites(e);
//BATCH
batch.begin();
for(AnimatedObject object : objects){
object.getSprite().draw(batch);
}
for(AnimatedObject mapItem : mapItems){
mapItem.getSprite().draw(batch);
}
ArrayList<EntitySprite> temp = new ArrayList<>(); ArrayList<EntitySprite> temp = new ArrayList<>();
for(EntitySprite entity : entitySprites){ for(EntitySprite entity : entitySprites){
@ -239,29 +226,20 @@ public class GameScreen {
Arrays.sort(renderArray); Arrays.sort(renderArray);
for(EntitySprite eSprite : renderArray){ //BATCH
if(eSprite != null){ batch.begin();
for(int i = 0; i < eSprite.getSprites().length; i++){
eSprite.getSprites()[i].draw(batch);
}
}
}
/*
//DRAW'T JEDES ENTITY - prueft vorher ob vorhanden
for(int i = 0; i < renderArray.length; i++){
if(e[i] != null){
entitySprites[i].getSprites()[0].draw(batch);
} for(AnimatedObject object : objects){
object.getSprite().draw(batch);
} }
// Player wird gedrawt for(AnimatedObject mapItem : mapItems){
for(Sprite sprite : player.getSprites()){ mapItem.getSprite().draw(batch);
sprite.draw(batch); }
for(EntitySprite eSprite : renderArray){
eSprite.getSprites()[0].draw(batch);
} }
*/
roomChangeSprite.setRegion(roomChangeTextureRegion[0][roomChangeRow]); roomChangeSprite.setRegion(roomChangeTextureRegion[0][roomChangeRow]);
if(roomLoading == true){ if(roomLoading == true){
@ -272,6 +250,8 @@ public class GameScreen {
} }
public void generateEntitySprites(Entity[] e){ public void generateEntitySprites(Entity[] e){
entitySprites = new EntitySprite[15];
for(int i = 0; i < e.length; i++){ for(int i = 0; i < e.length; i++){
generateNewEntitySprite(e[i], i); generateNewEntitySprite(e[i], i);
} }

Loading…
Cancel
Save