master
Jonathan Hager 6 years ago
parent 02639b3986
commit b591c38e13

@ -112,13 +112,13 @@ public class Controller extends ApplicationAdapter implements InputProcessor{
int y = (int) temp.getyPos();
Entity arrow = d.getCurrentEntities()[i].move((int) d.getPlayer().getxPos(), (int) d.getPlayer().getyPos());
Sprite tempObject = m.entitySprites[i];
tempObject.setPosition(temp.getxPos(), temp.getyPos());
EntitySprite tempObject = m.entitySprites[i];
tempObject.update((int) temp.getxPos(), (int) temp.getyPos());
boolean overlaps = false;
boolean delete = false;
if(Intersector.overlaps(tempObject.getBoundingRectangle(), playerSprite)){
if(Intersector.overlaps(tempObject.getCollisionSprite(), playerSprite)){
overlaps = true;
if(d.getCurrentEntities()[i].getId() == 2){
@ -134,7 +134,7 @@ public class Controller extends ApplicationAdapter implements InputProcessor{
for(RectangleMapObject rectangleObject : mapObjects.getByType(RectangleMapObject.class)){
Rectangle rectangle = rectangleObject.getRectangle();
if(Intersector.overlaps(tempObject.getBoundingRectangle(), rectangle)){
if(Intersector.overlaps(tempObject.getCollisionSprite(), rectangle)){
overlaps = true;
delete = true;
break;
@ -145,7 +145,7 @@ public class Controller extends ApplicationAdapter implements InputProcessor{
for(int j = 0; j < m.entitySprites.length; j++){
if(i != j){
if(d.getCurrentEntities()[j] != null && d.getCurrentEntities()[j].getId() != 2){
if(Intersector.overlaps(tempObject.getBoundingRectangle(), m.entitySprites[j].getBoundingRectangle())){
if(Intersector.overlaps(tempObject.getCollisionSprite(), m.entitySprites[j].getCollisionSprite())){
overlaps = true;
break;
}
@ -160,7 +160,7 @@ public class Controller extends ApplicationAdapter implements InputProcessor{
d.getCurrentEntities()[i].setxPos(x);
d.getCurrentEntities()[i].setyPos(y);
tempObject.setPosition(x, y);
tempObject.update(x, y);
}
m.entitySprites[i] = tempObject;
@ -169,7 +169,7 @@ public class Controller extends ApplicationAdapter implements InputProcessor{
for(int k = 5; k < d.getCurrentEntities().length; k++){
if(d.getCurrentEntities()[k] == null){
d.getCurrentEntities()[k] = arrow;
m.updateEntitySprite(d.getCurrentEntities());
m.generateNewEntitySprite(arrow, k);
break;
}
}
@ -177,8 +177,7 @@ public class Controller extends ApplicationAdapter implements InputProcessor{
if(delete && d.getCurrentEntities()[i].getId() == 2 || d.getCurrentEntities()[i].getToDelete()){
d.getCurrentEntities()[i] = null;
m.updateEntitySprite(d.getCurrentEntities());
m.deleteEntitySprite(i);
}
}
}
@ -351,6 +350,8 @@ public class Controller extends ApplicationAdapter implements InputProcessor{
d.setCurrentLevel(d.getLevel()[level]);
d.setCurrentRoom(d.getCurrentLevel().getRooms()[roomPosX][roomPosY]);
d.setCurrentEntities(d.getCurrentRoom().getEnemies());
m.generateEntitySprites(d.getCurrentEntities());
}
public void attack(Entity attacker, Entity[] e){
@ -527,6 +528,8 @@ public class Controller extends ApplicationAdapter implements InputProcessor{
v.cleanUp();
v = null;
m = new GameScreen(d, volume);
m.generateEntitySprites(d.getCurrentEntities());
hc = new HudContainer();
m.startLoadingScreen();
return true;

@ -14,18 +14,19 @@ import com.badlogic.gdx.math.Rectangle;
*
* @author jonathan
*/
public class PlayerSprite {
public class EntitySprite {
// 0: pants, 1: body, 2: head, 3: hair, 4: collision
private Sprite[] sprites;
private Rectangle collisionSprite;
private Rectangle fullCollisionSprite;
private TextureRegion[][][] regions;
private int[] frames;
// 0: links, 1: rechts
private int direction;
public PlayerSprite(Texture[] textures){
public EntitySprite(Texture[] textures){
sprites = new Sprite[1];
regions = new TextureRegion[1][][];
frames = new int[2];
@ -37,6 +38,7 @@ public class PlayerSprite {
}
collisionSprite = new Rectangle(0, 0, 32, 16);
fullCollisionSprite = sprites[0].getBoundingRectangle();
}
public void updateIdle(){
@ -165,4 +167,11 @@ public class PlayerSprite {
public void setDirection(int direction) {
this.direction = direction;
}
/**
* @return the fullCollisionSprite
*/
public Rectangle getFullCollisionSprite() {
return fullCollisionSprite;
}
}

@ -15,7 +15,6 @@ import com.badlogic.gdx.math.Intersector;
import com.badlogic.gdx.utils.Timer;
import com.dungeoncrawler.model.Dungeon;
import com.dungeoncrawler.model.Entity;
import com.dungeoncrawler.model.Item;
import com.dungeoncrawler.model.entities.*;
import java.util.ArrayList;
@ -23,12 +22,12 @@ public class GameScreen {
//PLAYER
Texture p;
PlayerSprite player;
EntitySprite player;
//ENTITIES
Texture[] entityTextures;
public Sprite[] entitySprites;
public EntitySprite[] entitySprites;
TextureRegion[][] archerRegions;
Texture archerTexture;
TextureRegion[][] swordsmanRegions;
@ -84,13 +83,13 @@ public class GameScreen {
playerTexture[2] = new Texture(Gdx.files.internal("sprites/player.png"));
playerTexture[3] = new Texture(Gdx.files.internal("sprites/player.png"));
player = new PlayerSprite(playerTexture);
player = new EntitySprite(playerTexture);
player.update(200, 200);
//ENTITIES
entityTextures = new Texture[5];
entitySprites = new Sprite[15];
entitySprites = new EntitySprite[15];
arrowTextures = new Texture[10];
arrowSprites = new Sprite[10];
@ -178,192 +177,126 @@ public class GameScreen {
public void render (SpriteBatch batch, Player p, Entity[] e, Entity[] arrows, int tileX, int tileY, int level, int roomPosX, int roomPosY) {
Gdx.gl.glClearColor(0, 0, 0, 1);
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
Gdx.gl.glClearColor(0, 0, 0, 1);
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
playerMoving = (p.getMovementX() != 0 || p.getMovementY() != 0);
playerMoving = (p.getMovementX() != 0 || p.getMovementY() != 0);
//setzt player Sprite auf richtige Position
player.update((int) p.getxPos(), (int) p.getyPos());
if(p.getMovementX() > 1){
player.setDirection(1);
player.updateFlip();
}
else if(p.getMovementX() < -1){
player.setDirection(0);
player.updateFlip();
}
tm = getM().getMaps()[level][roomPosX][roomPosY].getMap();
objects = getM().getMaps()[level][roomPosX][roomPosY].getObjects();
mapItems = getM().getMaps()[level][roomPosX][roomPosY].getMapItems();
if(tm == null){
System.out.println("Dein scheiß geht net");
}
else{
tmr = new OrthogonalTiledMapRenderer(tm);
}
// dreht SpielerSprite je nach Bewegungsrichtung
/*
if(p.getMovementX() == 3){ //RECHTS
player.setRegion(regions[0][1]);
}
if(p.getMovementX() == -3){ //LINKS
player.setRegion(regions[0][3]);
}
if(p.getMovementY() == 3){ //OBEN
player.setRegion(regions[0][0]);
}
if(p.getMovementY() == -3){ //UNTEN
player.setRegion(regions[0][2]);
}
*/
//MAP
tmr.setView(camera);
tmr.render();
//setzt player Sprite auf richtige Position
player.update((int) p.getxPos(), (int) p.getyPos());
if(p.getMovementX() > 1){
player.setDirection(1);
player.updateFlip();
}
else if(p.getMovementX() < -1){
player.setDirection(0);
player.updateFlip();
}
camera.zoom = 700f; // Standart 700f
tm = getM().getMaps()[level][roomPosX][roomPosY].getMap();
objects = getM().getMaps()[level][roomPosX][roomPosY].getObjects();
mapItems = getM().getMaps()[level][roomPosX][roomPosY].getMapItems();
camera.update();
batch.setProjectionMatrix(camera.combined);
if(tm == null){
System.out.println("Dein scheiß geht net");
}
else{
tmr = new OrthogonalTiledMapRenderer(tm);
}
//MAP
tmr.setView(camera);
tmr.render();
camera.zoom = 700f; // Standart 700f
updateEntitySprite(e);
camera.update();
batch.setProjectionMatrix(camera.combined);
updateEntitySprites(e);
//BATCH
batch.begin();
//DRAWING LOADING SCREEN IF LOADING
//DRAWING INVENTORY
for(AnimatedObject object : objects){
object.getSprite().draw(batch);
}
for(AnimatedObject object : objects){
object.getSprite().draw(batch);
}
for(AnimatedObject mapItem : mapItems){
mapItem.getSprite().draw(batch);
}
for(AnimatedObject mapItem : mapItems){
mapItem.getSprite().draw(batch);
}
//DRAW'T JEDES ENTITY - prueft vorher ob vorhanden
for(int i = 0; i < e.length; i++){
if(e[i] != null){
//controls.draw(batch);
//DRAW'T JEDES ENTITY - prueft vorher ob vorhanden
for(int i = 0; i < e.length; i++){
if(e[i] != null){
switch(e[i].getDirection()){
case -1:
break;
case 0:
if(e[i].getId() == 0){
entitySprites[i].setRegion(archerRegions[0][0]);
}
else if(e[i].getId() == 1){
entitySprites[i].setRegion(swordsmanRegions[0][0]);
}
break;
case 1:
if(e[i].getId() == 0){
entitySprites[i].setRegion(archerRegions[0][1]);
}
else if(e[i].getId() == 1){
entitySprites[i].setRegion(swordsmanRegions[0][1]);
}
break;
case 2:
if(e[i].getId() == 0){
entitySprites[i].setRegion(archerRegions[0][2]);
}
else if(e[i].getId() == 1){
entitySprites[i].setRegion(swordsmanRegions[0][2]);
}
break;
case 3:
if(e[i].getId() == 0){
entitySprites[i].setRegion(archerRegions[0][3]);
}
else if(e[i].getId() == 1){
entitySprites[i].setRegion(swordsmanRegions[0][3]);
}
break;
entitySprites[i].getSprites()[0].draw(batch);
if(e[i].getId() != 2){
if(e[i].getHp() < e[i].getMaxhp() && e[i].getHp() > 0){
healthBar = new Texture("sprites/halfHealthEntity.png");
Sprite healthBarSprite = new Sprite(healthBar);
healthBarSprite.setPosition(e[i].getxPos(), e[i].getyPos());
healthBarSprite.draw(batch);
}
entitySprites[i].draw(batch);
entitySprites[i].setX(e[i].getxPos());
entitySprites[i].setY(e[i].getyPos());
if(e[i].getId() != 2){
if(e[i].getHp() < e[i].getMaxhp() && e[i].getHp() > 0){
healthBar = new Texture("sprites/halfHealthEntity.png");
Sprite healthBarSprite = new Sprite(healthBar);
healthBarSprite.setPosition(e[i].getxPos(), e[i].getyPos());
healthBarSprite.draw(batch);
}
else if(e[i].getHp() == e[i].getMaxhp()){
healthBar = new Texture("sprites/fullHealthEntity.png");
Sprite healthBarSprite = new Sprite(healthBar);
healthBarSprite.setPosition(e[i].getxPos(), e[i].getyPos());
healthBarSprite.draw(batch);
}
else if(e[i].getHp() == e[i].getMaxhp()){
healthBar = new Texture("sprites/fullHealthEntity.png");
Sprite healthBarSprite = new Sprite(healthBar);
healthBarSprite.setPosition(e[i].getxPos(), e[i].getyPos());
healthBarSprite.draw(batch);
}
}
}
}
// Player wird gedrawt
for(Sprite sprite : player.getSprites()){
sprite.draw(batch);
}
// Player wird gedrawt
for(Sprite sprite : player.getSprites()){
sprite.draw(batch);
}
/*
for(int i = 0; i < arrowSprites.length; i++){
if(arrowSprites[i] != null){
arrowSprites[i].setX(arrows[i].getxPos());
arrowSprites[i].setY(arrows[i].getyPos());
arrowSprites[i].draw(batch);
}
}
*/
roomChangeSprite.setRegion(roomChangeTextureRegion[0][roomChangeRow]);
if(roomLoading == true){
roomChangeSprite.draw(batch);
}
roomChangeSprite.setRegion(roomChangeTextureRegion[0][roomChangeRow]);
if(roomLoading == true){
roomChangeSprite.draw(batch);
}
batch.end();
}
public void updateEntitySprite(Entity[] e){
public void generateEntitySprites(Entity[] e){
for(int i = 0; i < e.length; i++){
if(e[i] != null){
if(e[i].getId() == 0){ //nimmt entity ID -> 0 = Archer || 1 = Swordsman || 2 = Arrow
entityTextures[i] = new Texture("sprites/archer.png");
archerRegions = TextureRegion.split(entityTextures[i], 48, 48);
entitySprites[i] = new Sprite(archerRegions[0][2]);
entitySprites[i].setX(e[i].getxPos());
entitySprites[i].setY(e[i].getyPos());
}
if(e[i].getId() == 1){
entityTextures[i] = new Texture("sprites/swordsman.png");
swordsmanRegions = TextureRegion.split(entityTextures[i], 48, 48);
entitySprites[i] = new Sprite(swordsmanRegions[0][2]);
entitySprites[i].setX(e[i].getxPos());
entitySprites[i].setY(e[i].getyPos());
}
if(e[i].getId() == 2){
Texture tx = new Texture("sprites/arrow.png");
//swordsmanRegions = TextureRegion.split(entityTextures[i], 48, 48);
entitySprites[i] = new Sprite(tx);
entitySprites[i].setX(e[i].getxPos());
entitySprites[i].setY(e[i].getyPos());
}
}
generateNewEntitySprite(e[i], i);
}
}
public void generateNewEntitySprite(Entity e, int i){
if(e != null){
Texture[] tx = new Texture[1];
if(e.getId() == 0){ //nimmt entity ID -> 0 = Archer || 1 = Swordsman || 2 = Arrow
tx[0] = new Texture("sprites/player.png");
}
if(e.getId() == 1){
tx[0] = new Texture("sprites/player.png");
}
if(e.getId() == 2){
tx[0] = new Texture("sprites/player.png");
}
entitySprites[i] = new EntitySprite(tx);
entitySprites[i].update((int) e.getxPos(), (int) e.getyPos());
}
}
public void updateEntitySprites(Entity[] e){
for(int i = 0; i < e.length; i++){
if(e[i] != null){
entitySprites[i].update((int) e[i].getxPos(), (int) e[i].getyPos());
}
}
}
public void deleteEntitySprite(int i){
entitySprites[i] = null;
}
public Entity[] playerAttack(Entity e[], Player p, SpriteBatch batch){
if(p.getDirection() == 0){
@ -374,7 +307,7 @@ public class GameScreen {
for(int i = 0; i< e.length ; i++){
if(e[i] != null){
if(Intersector.overlaps(entitySprites[i].getBoundingRectangle(), attackSprite.getBoundingRectangle())){
if(Intersector.overlaps(entitySprites[i].getCollisionSprite(), attackSprite.getBoundingRectangle())){
if(e[i] != null){
if(e[i].getHp() - p.getDmg() <= 0){
e[i] = null;
@ -394,7 +327,7 @@ public class GameScreen {
attackSprite.setY(p.getyPos()- 2f);
for(int i = 0; i< e.length ; i++){
if(entitySprites[i] != null){
if(Intersector.overlaps(entitySprites[i].getBoundingRectangle(), attackSprite.getBoundingRectangle())){
if(Intersector.overlaps(entitySprites[i].getCollisionSprite(), attackSprite.getBoundingRectangle())){
if(e[i] != null){
if(e[i].getHp() - p.getDmg() <= 0){
e[i] = null;
@ -414,7 +347,7 @@ public class GameScreen {
attackSprite.setY(p.getyPos());
for(int i = 0; i<e.length ; i++){
if(entitySprites[i] != null){
if(Intersector.overlaps(entitySprites[i].getBoundingRectangle(), attackSprite.getBoundingRectangle())){
if(Intersector.overlaps(entitySprites[i].getCollisionSprite(), attackSprite.getBoundingRectangle())){
if(e[i] != null){
if(e[i].getHp() - p.getDmg() <= 0){
e[i] = null;
@ -434,7 +367,7 @@ public class GameScreen {
attackSprite.setY(p.getyPos() - 8f);
for(int i = 0; i < e.length ; i++){
if(entitySprites[i] != null){
if(Intersector.overlaps(entitySprites[i].getBoundingRectangle(), attackSprite.getBoundingRectangle())){
if(Intersector.overlaps(entitySprites[i].getCollisionSprite(), attackSprite.getBoundingRectangle())){
if(e[i] != null){
if(e[i].getHp() - p.getDmg() <= 0){
e[i] = null;
@ -460,23 +393,10 @@ public class GameScreen {
}
//GETTER
public PlayerSprite getPlayer(){
public EntitySprite getPlayer(){
return player;
}
public float getEntitySpriteX(int i){
return entitySprites[i].getX();
}
public float getEntitySpriteY(int i){
return entitySprites[i].getY();
}
public void setEntitySpriteX(int i,float x){
entitySprites[i].setX(x);
}
public void setEntitySpriteY(int i,float y){
entitySprites[i].setY(y);
}
public boolean getIsLoading(){
return roomLoading;
}

@ -16,11 +16,13 @@ public class MapContainer {
private TiledMap map;
private ArrayList<AnimatedObject> objects;
private ArrayList<AnimatedObject> mapItems;
private EntitySprite[] enemies;
public MapContainer(TiledMap map){
this.map = map;
this.objects = new ArrayList<>();
this.mapItems = new ArrayList<>();
this.enemies = new EntitySprite[15];
}
/**
@ -65,4 +67,22 @@ public class MapContainer {
this.mapItems = mapItems;
}
/**
* @return the enemies
*/
public EntitySprite[] getEnemies() {
return enemies;
}
/**
* @param enemies the enemies to set
*/
public void setEnemies(EntitySprite[] enemies) {
this.enemies = enemies;
}
public void setEnemies(EntitySprite enemy, int i) {
this.enemies[i] = enemy;
}
}

Loading…
Cancel
Save