master
Jonathan Hager 6 years ago
commit f28cf8858c

@ -143,6 +143,7 @@ public class Controller extends ApplicationAdapter implements InputProcessor{
if(tileX == 0 || tileX == roomX || tileY == 0 || tileY == roomY){ if(tileX == 0 || tileX == roomX || tileY == 0 || tileY == roomY){
updateRoom(); updateRoom();
} }
// Render methode zum rendern der einzelnen Sprites wird aufgerufen // Render methode zum rendern der einzelnen Sprites wird aufgerufen
@ -159,7 +160,7 @@ public class Controller extends ApplicationAdapter implements InputProcessor{
public void updateObjects(int level, int roomPosX, int roomPosY){ public void updateObjects(int level, int roomPosX, int roomPosY){
MapLayers layers = m.getM().getMaps()[level][roomPosX][roomPosY].getLayers(); MapLayers layers = m.getM().getMaps()[level][roomPosX][roomPosY].getMap().getLayers();
MapObjects objects = layers.get(0).getObjects(); MapObjects objects = layers.get(0).getObjects();
//System.out.println(objects.getCount()); //System.out.println(objects.getCount());

@ -0,0 +1,70 @@
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package com.dungeoncrawler.view;
import com.badlogic.gdx.graphics.Texture;
import com.badlogic.gdx.graphics.g2d.Sprite;
import com.badlogic.gdx.graphics.g2d.TextureRegion;
/**
*
* @author jonathan
*/
public class AnimatedObject {
private Sprite sprite;
private TextureRegion[][] texture;
private int frame;
private int row;
public AnimatedObject(Texture tx, int tileWidth, int tileHeight){
texture = TextureRegion.split(tx, tileWidth, tileHeight);
frame = (int) (Math.random()*texture[0].length);
row = (int) (Math.random()*texture.length);
sprite = new Sprite(texture[row][frame]);
}
public void updateTexture(){
if(frame >= texture[0].length - 1){
frame = 0;
}
else{
frame++;
}
sprite.setRegion(texture[row][frame]);
}
/**
* @return the sprite
*/
public Sprite getSprite() {
return sprite;
}
/**
* @param sprite the sprite to set
*/
public void setSprite(Sprite sprite) {
this.sprite = sprite;
}
/**
* @return the texture
*/
public TextureRegion[][] getTexture() {
return texture;
}
/**
* @param texture the texture to set
*/
public void setTexture(TextureRegion[][] texture) {
this.texture = texture;
}
}

@ -13,10 +13,12 @@ import com.badlogic.gdx.maps.tiled.TiledMapRenderer;
import com.badlogic.gdx.maps.tiled.renderers.OrthogonalTiledMapRenderer; import com.badlogic.gdx.maps.tiled.renderers.OrthogonalTiledMapRenderer;
import com.badlogic.gdx.math.Intersector; import com.badlogic.gdx.math.Intersector;
import com.badlogic.gdx.math.Rectangle; import com.badlogic.gdx.math.Rectangle;
import com.badlogic.gdx.utils.Timer;
import com.dungeoncrawler.model.Dungeon; import com.dungeoncrawler.model.Dungeon;
import com.dungeoncrawler.model.Entity; import com.dungeoncrawler.model.Entity;
import com.dungeoncrawler.model.ItemContainer; import com.dungeoncrawler.model.ItemContainer;
import com.dungeoncrawler.model.entities.*; import com.dungeoncrawler.model.entities.*;
import java.util.ArrayList;
public class GameScreen { public class GameScreen {
//CONTROLS //CONTROLS
@ -46,6 +48,9 @@ public class GameScreen {
TiledMapRenderer tmr; TiledMapRenderer tmr;
TiledMap tm; TiledMap tm;
OrthographicCamera camera; OrthographicCamera camera;
ArrayList<AnimatedObject> objects;
Timer animations;
// Sound // Sound
public Music music; public Music music;
@ -87,8 +92,7 @@ public class GameScreen {
MapGenerator mg = new MapGenerator(new Texture(Gdx.files.internal("tilesets/tileset_floor_1.png"))); MapGenerator mg = new MapGenerator(new Texture(Gdx.files.internal("tilesets/tileset_floor_1.png")));
TiledMap[][][] maps = mg.generateMap(d); m = mg.generateMap(d);
m.setMaps(maps);
mg.ichWillSpielen(m.getMaps()); mg.ichWillSpielen(m.getMaps());
tm = new TiledMap(); tm = new TiledMap();
@ -97,6 +101,18 @@ public class GameScreen {
music = Gdx.audio.newMusic(Gdx.files.internal("music/gamemusic.mp3")); music = Gdx.audio.newMusic(Gdx.files.internal("music/gamemusic.mp3"));
music.setVolume(volume); music.setVolume(volume);
music.play(); music.play();
animations = new Timer();
animations.scheduleTask(new Timer.Task() {
@Override
public void run() {
if(objects != null){
for(AnimatedObject object : objects){
object.updateTexture();
}
}
}
},0, 0.1f);
} }
@ -109,7 +125,8 @@ public class GameScreen {
player.setX(p.getxPos()); player.setX(p.getxPos());
player.setY(p.getyPos()); player.setY(p.getyPos());
tm = getM().getMaps()[level][roomPosX][roomPosY]; tm = getM().getMaps()[level][roomPosX][roomPosY].getMap();
objects = getM().getMaps()[level][roomPosX][roomPosY].getObjects();
if(tm == null){ if(tm == null){
System.out.println("Dein scheiß geht net"); System.out.println("Dein scheiß geht net");
@ -164,6 +181,10 @@ public class GameScreen {
//BATCH //BATCH
batch.begin(); batch.begin();
for(AnimatedObject object : objects){
object.getSprite().draw(batch);
}
player.draw(batch); player.draw(batch);
//controls.draw(batch); //controls.draw(batch);
//DRAW'T JEDES ENTITY - prueft vorher ob vorhanden //DRAW'T JEDES ENTITY - prueft vorher ob vorhanden
@ -223,6 +244,15 @@ public class GameScreen {
} }
} }
} }
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);
}
}
batch.end(); batch.end();
} }

@ -6,16 +6,12 @@
package com.dungeoncrawler.view; package com.dungeoncrawler.view;
import com.badlogic.gdx.graphics.g2d.Sprite;
import com.badlogic.gdx.maps.tiled.TiledMap;
/** /**
* *
* @author jonathan * @author jonathan
*/ */
public class Map { public class Map {
private TiledMap[][][] maps; private MapContainer[][][] maps;
private Sprite[] animatedObjects;
public Map(){ public Map(){
@ -24,33 +20,15 @@ public class Map {
/** /**
* @return the maps * @return the maps
*/ */
public TiledMap[][][] getMaps() { public MapContainer[][][] getMaps() {
return maps; return maps;
} }
/** /**
* @param maps the maps to set * @param maps the maps to set
*/ */
public void setMaps(TiledMap[][][] maps) { public void setMaps(MapContainer[][][] maps) {
this.maps = maps; this.maps = maps;
} }
/**
* @return the animatedObjects
*/
public Sprite[] getAnimatedObjects() {
return animatedObjects;
}
/**
* @param animatedObjects the animatedObjects to set
*/
public void setAnimatedObjects(Sprite[] animatedObjects) {
this.animatedObjects = animatedObjects;
}
public void setAnimatedObjects(Sprite animatedObjects, int i) {
this.animatedObjects[i] = animatedObjects;
}
} }

@ -0,0 +1,52 @@
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package com.dungeoncrawler.view;
import com.badlogic.gdx.maps.tiled.TiledMap;
import java.util.ArrayList;
/**
*
* @author jonathan
*/
public class MapContainer {
private TiledMap map;
private ArrayList<AnimatedObject> objects;
public MapContainer(TiledMap map){
this.map = map;
this.objects = new ArrayList<>();
}
/**
* @return the map
*/
public TiledMap getMap() {
return map;
}
/**
* @param map the map to set
*/
public void setMap(TiledMap map) {
this.map = map;
}
/**
* @return the objects
*/
public ArrayList<AnimatedObject> getObjects() {
return objects;
}
/**
* @param objects the objects to set
*/
public void setObjects(ArrayList<AnimatedObject> objects) {
this.objects = objects;
}
}

@ -25,32 +25,38 @@ public class MapGenerator {
Texture tiles; Texture tiles;
TextureRegion[][] splitTiles; TextureRegion[][] splitTiles;
Texture torchT;
public MapGenerator(Texture tiles){ public MapGenerator(Texture tiles){
this.tiles = tiles; this.tiles = tiles;
splitTiles = TextureRegion.split(this.tiles, 48, 48); splitTiles = TextureRegion.split(this.tiles, 48, 48);
torchT = new Texture("sprites/torch.png");
//torch = TextureRegion.split(torchT, 48, 48);
} }
public TiledMap[][][] generateMap(Dungeon d){ public Map generateMap(Dungeon d){
Map temp = new Map();
int levelAmount = d.getLevel().length; int levelAmount = d.getLevel().length;
TiledMap[][][] tempMap = new TiledMap[levelAmount][][]; MapContainer[][][] tempMap = new MapContainer[levelAmount][][];
// Jedes Level wird generiert // Jedes Level wird generiert
for(int i = 0; i < levelAmount; i++){ for(int i = 0; i < levelAmount; i++){
TiledMap[][] tempLevel = generateLevel(i, d.getLevel()[i]); MapContainer[][] tempLevel = generateLevel(i, d.getLevel()[i]);
tempMap[i] = tempLevel; tempMap[i] = tempLevel;
} }
return tempMap; temp.setMaps(tempMap);
return temp;
} }
private TiledMap[][] generateLevel(int i, Level l){ private MapContainer[][] generateLevel(int i, Level l){
int sizeX = l.getRooms().length; int sizeX = l.getRooms().length;
int sizeY = l.getRooms()[0].length; int sizeY = l.getRooms()[0].length;
TiledMap[][] tempLevel = new TiledMap[sizeX][sizeY]; MapContainer[][] tempLevel = new MapContainer[sizeX][sizeY];
for(int x = 0; x < sizeX; x++){ for(int x = 0; x < sizeX; x++){
for(int y = 0; y < sizeY; y++){ for(int y = 0; y < sizeY; y++){
@ -63,8 +69,9 @@ public class MapGenerator {
int mapDimensionX = tempX + 2; int mapDimensionX = tempX + 2;
int mapDimensionY = tempY + 2; int mapDimensionY = tempY + 2;
// Raum wird generiertf // Raum wird generiert
TiledMap tempRoom = generateRoom(room, tempX, tempY, i); MapContainer temp = generateRoom(room, tempX, tempY, i);
TiledMap tempRoom = temp.getMap();
// Wenn es Fehler gibt, dann wohl hier: Viel Spaß beim Suchen! Danke! // Wenn es Fehler gibt, dann wohl hier: Viel Spaß beim Suchen! Danke!
MapLayer collisionLayer = tempRoom.getLayers().get(0); MapLayer collisionLayer = tempRoom.getLayers().get(0);
@ -113,9 +120,13 @@ public class MapGenerator {
// X: Gesamtlänge, Y: Exakte Mitte der Gesamtlänge // X: Gesamtlänge, Y: Exakte Mitte der Gesamtlänge
staticLayer.getCell(tempX + 1, (tempY / 2) + 0).setTile(new StaticTiledMapTile(splitTiles[4][4])); //rechts-1 staticLayer.getCell(tempX + 1, (tempY / 2) + 0).setTile(new StaticTiledMapTile(splitTiles[4][4])); //rechts-1
staticLayer.getCell(tempX + 1, (tempY / 2) + 1).setTile(new StaticTiledMapTile(splitTiles[0][0])); //rechts1 staticLayer.getCell(tempX + 1, (tempY / 2) + 1).setTile(new StaticTiledMapTile(splitTiles[0][0])); //rechts1
staticLayer.getCell(tempX + 1, (tempY / 2) + 2).setTile(new StaticTiledMapTile(splitTiles[3][1])); //rechts2 staticLayer.getCell(tempX + 1, (tempY / 2) + 2).setTile(new StaticTiledMapTile(splitTiles[1][1])); //rechts2
staticLayer.getCell(tempX + 1, (tempY / 2) + 3).setTile(new StaticTiledMapTile(splitTiles[2][1])); //rechts3 staticLayer.getCell(tempX + 1, (tempY / 2) + 3).setTile(new StaticTiledMapTile(splitTiles[0][1])); //rechts3
staticLayer.getCell(tempX + 1, (tempY / 2) + 4).setTile(new StaticTiledMapTile(splitTiles[2][5])); //rechts4 staticLayer.getCell(tempX + 1, (tempY / 2) + 4).setTile(new StaticTiledMapTile(splitTiles[2][5])); //rechts4
AnimatedObject tempObject = new AnimatedObject(torchT, 48, 48);
tempObject.getSprite().setPosition((tempX + 1) * 48, ((tempY / 2) + 2) * 48);
temp.getObjects().add(tempObject);
} }
collisionLayer.getObjects().remove(right); collisionLayer.getObjects().remove(right);
@ -159,9 +170,13 @@ public class MapGenerator {
// X: 0, Y: Exakte Mitte der Gesamtlänge // X: 0, Y: Exakte Mitte der Gesamtlänge
staticLayer.getCell(0, (tempY / 2) + 0).setTile(new StaticTiledMapTile(splitTiles[4][5])); //links-1 staticLayer.getCell(0, (tempY / 2) + 0).setTile(new StaticTiledMapTile(splitTiles[4][5])); //links-1
staticLayer.getCell(0, (tempY / 2) + 1).setTile(new StaticTiledMapTile(splitTiles[0][0])); //links1 staticLayer.getCell(0, (tempY / 2) + 1).setTile(new StaticTiledMapTile(splitTiles[0][0])); //links1
staticLayer.getCell(0, (tempY / 2) + 2).setTile(new StaticTiledMapTile(splitTiles[3][1])); //links2 staticLayer.getCell(0, (tempY / 2) + 2).setTile(new StaticTiledMapTile(splitTiles[1][1])); //links2
staticLayer.getCell(0, (tempY / 2) + 3).setTile(new StaticTiledMapTile(splitTiles[2][1])); //links3 staticLayer.getCell(0, (tempY / 2) + 3).setTile(new StaticTiledMapTile(splitTiles[0][1])); //links3
staticLayer.getCell(0, (tempY / 2) + 4).setTile(new StaticTiledMapTile(splitTiles[3][5])); //links4 staticLayer.getCell(0, (tempY / 2) + 4).setTile(new StaticTiledMapTile(splitTiles[3][5])); //links4
AnimatedObject tempObject = new AnimatedObject(torchT, 48, 48);
tempObject.getSprite().setPosition(0, ((tempY / 2) + 2) * 48);
temp.getObjects().add(tempObject);
} }
collisionLayer.getObjects().remove(left); collisionLayer.getObjects().remove(left);
@ -173,7 +188,8 @@ public class MapGenerator {
collisionLayer.getObjects().add(tempBottom); collisionLayer.getObjects().add(tempBottom);
} }
tempLevel[x][y] = tempRoom; temp.setMap(tempRoom);
tempLevel[x][y] = temp;
} }
} }
@ -182,7 +198,9 @@ public class MapGenerator {
return tempLevel; return tempLevel;
} }
private TiledMap generateRoom(Room r, int roomDimensionX, int roomDimensionY, int lvl){ private MapContainer generateRoom(Room r, int roomDimensionX, int roomDimensionY, int lvl){
TiledMap tempRoom = new TiledMap();
MapContainer temp = new MapContainer(tempRoom);
int bodenX; int bodenX;
int bodenY; int bodenY;
@ -196,8 +214,6 @@ public class MapGenerator {
bodenY = lvl - 4; bodenY = lvl - 4;
} }
TiledMap tempRoom = new TiledMap();
// roomDimension bezieht sich auf die Größe des Raumes, da aber noch die Wände fehlen, // roomDimension bezieht sich auf die Größe des Raumes, da aber noch die Wände fehlen,
// muss auf die Größe jeweils 2 addiert werden. // muss auf die Größe jeweils 2 addiert werden.
int mapDimensionX = roomDimensionX + 2; int mapDimensionX = roomDimensionX + 2;
@ -248,20 +264,17 @@ public class MapGenerator {
// oben1 // oben1
else if(y == mapDimensionY - 1){ else if(y == mapDimensionY - 1){
if(x == roomDimensionX / 2 - 1 || x == roomDimensionX / 2 + 3){ if(x == roomDimensionX / 2 - 1 || x == roomDimensionX / 2 + 3){
cell.setTile(new StaticTiledMapTile(splitTiles[3][1]));
} AnimatedObject tempObject = new AnimatedObject(torchT, 48, 48);
else{ tempObject.getSprite().setPosition(x * 48, y * 48);
cell.setTile(new StaticTiledMapTile(splitTiles[1][1])); temp.getObjects().add(tempObject);
} }
cell.setTile(new StaticTiledMapTile(splitTiles[1][1]));
} }
// oben2 // oben2
else if(y == mapDimensionY){ else if(y == mapDimensionY){
if(x == roomDimensionX / 2 - 1 || x == roomDimensionX / 2 + 3){ cell.setTile(new StaticTiledMapTile(splitTiles[0][1]));
cell.setTile(new StaticTiledMapTile(splitTiles[2][1]));
}
else{
cell.setTile(new StaticTiledMapTile(splitTiles[0][1]));
}
} }
// oben3 // oben3
else if(y == mapDimensionY + 1){ else if(y == mapDimensionY + 1){
@ -298,13 +311,13 @@ public class MapGenerator {
layers.add(dynamicLayer); layers.add(dynamicLayer);
layers.add(staticLayer); layers.add(staticLayer);
return tempRoom; return temp;
} }
public void ichWillSpielen(TiledMap[][][] map){ public void ichWillSpielen(MapContainer[][][] map){
for(int i=0;i<map.length;i++){ for(int i=0;i<map.length;i++){
TiledMap[][] temp = map[i]; MapContainer[][] temp = map[i];
System.out.println("MapLevel " + i); System.out.println("MapLevel " + i);

Loading…
Cancel
Save