merge komplett

master
Jonathan Hager 6 years ago
commit d6df86efbf

@ -9,7 +9,6 @@ import com.badlogic.gdx.ApplicationAdapter;
import com.badlogic.gdx.Gdx; import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.Input; import com.badlogic.gdx.Input;
import com.badlogic.gdx.InputProcessor; import com.badlogic.gdx.InputProcessor;
import com.badlogic.gdx.graphics.GL20;
import com.badlogic.gdx.graphics.g2d.SpriteBatch; import com.badlogic.gdx.graphics.g2d.SpriteBatch;
import com.dungeoncrawler.view.*; import com.dungeoncrawler.view.*;
import com.dungeoncrawler.model.Dungeon; import com.dungeoncrawler.model.Dungeon;
@ -23,11 +22,13 @@ public class Controller extends ApplicationAdapter implements InputProcessor{
Dungeon d; Dungeon d;
DungeonGenerator dg; DungeonGenerator dg;
MainMenu v; MainMenu v;
Player p;
Entity[] e; Entity[] e;
Timer t; Timer t;
View m; View m;
Archer a; Archer a;
int[] tile;
int[] posRoom;
int level;
@Override @Override
public void create(){ public void create(){
@ -35,10 +36,42 @@ public class Controller extends ApplicationAdapter implements InputProcessor{
e = new Entity[5]; e = new Entity[5];
batch = new SpriteBatch(); batch = new SpriteBatch();
v = new MainMenu(); v = new MainMenu();
p = new Player();
d = new Dungeon(p);
dg = new DungeonGenerator(); dg = new DungeonGenerator();
dg.ichWillSpielen();
d = dg.generateDungeon(0, 0, 0, new Player());
dg.ichWillSpielen(d);
tile = new int[2];
posRoom = new int[2];
int roomLengthX = d.getLevel()[0].getRooms().length;
int roomLengthY = d.getLevel()[0].getRooms()[0].length;
int roomAmount = d.getLevel()[0].getRooms().length;
int startRoom = (int) (Math.random() * roomAmount);
level = 0;
int k = 0;
for(int i = 0; i < roomLengthX; i++){
for(int j = 0; j < roomLengthY; j++){
if(d.getLevel()[level].getRooms()[i][j] != null){
if(k == startRoom){
// Startraum wurde ausgewählt
posRoom[0] = i;
posRoom[1] = j;
}
k++;
}
}
}
e = new Entity[5];
Gdx.input.setInputProcessor(this); Gdx.input.setInputProcessor(this);
t = new Timer(); t = new Timer();
a = new Archer(0,0,0); a = new Archer(0,0,0);
@ -49,11 +82,11 @@ public class Controller extends ApplicationAdapter implements InputProcessor{
for(int i = 0; i< e.length; i++){ for(int i = 0; i< e.length; i++){
if(e[i] == null){} if(e[i] == null){}
else{ else{
e[i].rdmMove(p.getxPos(), p.getyPos()); e[i].rdmMove(d.getPlayer().getxPos(), d.getPlayer().getyPos());
m.setPlayerSpriteX(p.getxPos()); m.setPlayerSpriteX(d.getPlayer().getxPos());
m.setPlayerSpriteY(p.getyPos()); m.setPlayerSpriteY(d.getPlayer().getyPos());
m.setEntitySpriteX(i,p.getxPos()); m.setEntitySpriteX(i, d.getPlayer().getxPos());
m.setEntitySpriteY(i,p.getxPos()); m.setEntitySpriteY(i, d.getPlayer().getxPos());
} }
} }
} }
@ -65,20 +98,68 @@ public class Controller extends ApplicationAdapter implements InputProcessor{
public void render(){ public void render(){
//PASSIERT IN MAINMENU //PASSIERT IN MAINMENU
if(v != null){ if(v != null){
v.render(batch, p , e); v.render(batch, d.getPlayer() , e);
} }
//PASSIERT IN GAMESCREEN (view) //PASSIERT IN GAMESCREEN (view)
if(m != null){ if(m != null){
//ENTITIES //ENTITIES
p.setxPos(m.getPlayerSpriteX()); d.getPlayer().setxPos(m.getPlayerSpriteX());
p.setyPos(m.getPlayerSpriteY()); d.getPlayer().setyPos(m.getPlayerSpriteY());
if(v == null){
//RENDER d.getPlayer().update();
m.render(batch, p, e);
tile[0] = (int) d.getPlayer().getxPos() / 48;
tile[1] = (int) d.getPlayer().getyPos() / 48;
System.out.println("pos Player tiles: " + tile[0] + " " + tile[1]);
int xPos = tile[0];
int yPos = tile[1];
// oben
if(xPos == 4 && yPos == 6){
System.out.println("oben");
posRoom[1] += 1;
d.getPlayer().setxPos(100);
d.getPlayer().setyPos(100);
}
// rechts
if(xPos == 8 && yPos == 3){
System.out.println("rechts");
posRoom[0] += 1;
d.getPlayer().setxPos(100);
d.getPlayer().setyPos(100);
}
// unten
if(xPos == 4 && yPos == 0){
System.out.println("unten");
posRoom[1] -= 1;
d.getPlayer().setxPos(100);
d.getPlayer().setyPos(100);
}
// links
if(xPos == 0 && yPos == 3){
System.out.println("links");
posRoom[0] -= 1;
d.getPlayer().setxPos(100);
d.getPlayer().setyPos(100);
}
// Render methode zum rendern der einzelnen Sprites wird aufgerufen
m.render(batch, d.getPlayer(), e, tile, level, posRoom);
} }
} }
}
@Override @Override
@ -110,19 +191,19 @@ public class Controller extends ApplicationAdapter implements InputProcessor{
public boolean keyDown(int keycode) { public boolean keyDown(int keycode) {
if(keycode == Input.Keys.LEFT){ if(keycode == Input.Keys.LEFT){
if(v != null){ if(v != null){
v.moveCursor(3); v.moveCursor(3);
} }
if(m != null){ if(m != null){
p.setMovementX(-3); d.getPlayer().setMovementX(-3);
} }
} }
if(keycode == Input.Keys.RIGHT){ if(keycode == Input.Keys.RIGHT){
if(v != null){ if(v != null){
v.moveCursor(1); v.moveCursor(1);
} }
if(m != null){ if(m != null){
p.setMovementX(3); d.getPlayer().setMovementX(3);
} }
} }
@ -131,7 +212,7 @@ public class Controller extends ApplicationAdapter implements InputProcessor{
v.moveCursor(2); v.moveCursor(2);
} }
if(m != null){ if(m != null){
p.setMovementY(-3); d.getPlayer().setMovementY(-3);
} }
} }
@ -140,7 +221,7 @@ public class Controller extends ApplicationAdapter implements InputProcessor{
v.moveCursor(0); v.moveCursor(0);
} }
if(m != null){ if(m != null){
p.setMovementY(3); d.getPlayer().setMovementY(3);
} }
} }
@ -149,8 +230,10 @@ public class Controller extends ApplicationAdapter implements InputProcessor{
if(v.click() == -1){} if(v.click() == -1){}
else if(v.click() == 0){ else if(v.click() == 0){
v = null; v = null;
m = new View();
newEntity(a, 200, 200, 200); newEntity(a, 200, 200, 200);
m = new View(d);
System.out.println("NICE"); System.out.println("NICE");
} }
} }
@ -165,7 +248,7 @@ public class Controller extends ApplicationAdapter implements InputProcessor{
v.stopCursor(3); v.stopCursor(3);
} }
if(m != null){ if(m != null){
p.setMovementX(0); d.getPlayer().setMovementX(0);
} }
} }
@ -174,7 +257,7 @@ public class Controller extends ApplicationAdapter implements InputProcessor{
v.stopCursor(1); v.stopCursor(1);
} }
if(m != null){ if(m != null){
p.setMovementX(0); d.getPlayer().setMovementX(0);
} }
} }
@ -183,7 +266,7 @@ public class Controller extends ApplicationAdapter implements InputProcessor{
v.stopCursor(2); v.stopCursor(2);
} }
if(m != null){ if(m != null){
p.setMovementY(0); d.getPlayer().setMovementY(0);
} }
} }
@ -192,7 +275,7 @@ public class Controller extends ApplicationAdapter implements InputProcessor{
v.stopCursor(0); v.stopCursor(0);
} }
if(m != null){ if(m != null){
p.setMovementY(0); d.getPlayer().setMovementY(0);
} }
} }

@ -38,11 +38,11 @@ public class DungeonGenerator {
// TODO: Zufällig Türen setzen // TODO: Zufällig Türen setzen
//int xPos = roomAmount / 2; int xPos = roomAmount / 2;
//int yPos = roomAmount / 2; int yPos = roomAmount / 2;
int xPos = (int) (Math.random() * roomAmount); //int xPos = (int) (Math.random() * roomAmount);
int yPos = (int) (Math.random() * roomAmount); //int yPos = (int) (Math.random() * roomAmount);
tempLevel.setRoom(generateRoom(), xPos, yPos); tempLevel.setRoom(generateRoom(), xPos, yPos);
@ -53,8 +53,8 @@ public class DungeonGenerator {
switch (direction) { switch (direction) {
// Oben // Oben
case 0: case 0:
if(yPos != 0){ if(yPos != roomAmount - 1){
yPos -= 1; yPos += 1;
} }
break; break;
// Rechts // Rechts
@ -65,8 +65,8 @@ public class DungeonGenerator {
break; break;
// Unten // Unten
case 2: case 2:
if(yPos != roomAmount - 1){ if(yPos != 0){
yPos += 1; yPos -= 1;
} }
break; break;
// Links // Links
@ -95,12 +95,10 @@ public class DungeonGenerator {
Room tempRoom = new Room(new ItemContainer[itemAmount], new Entity[enemyAmount]); Room tempRoom = new Room(new ItemContainer[itemAmount], new Entity[enemyAmount]);
return tempRoom; return tempRoom;
} }
private int[] generatePos(int sizeX, int sizeY, int tileSize){ private int[] generatePos(int sizeX, int sizeY, int tileSize){
int[] position = new int[2]; int[] position = new int[2];
int xPos = (int) (Math.random() * sizeX); int xPos = (int) (Math.random() * sizeX);
@ -109,25 +107,24 @@ public class DungeonGenerator {
return position; return position;
} }
public void ichWillSpielen(){ public void ichWillSpielen(Dungeon d){
Dungeon d = this.generateDungeon(200, 200, 200, new Player());
for(int i=0;i<d.getLevel().length;i++){ for(int i=0;i<d.getLevel().length;i++){
Level temp = d.getLevel()[i]; Level temp = d.getLevel()[i];
System.out.println("Level " + i); System.out.println("Level " + i);
for(int j = 0; j < temp.getRooms().length; j++){ for(int j = 0; j < temp.getRooms().length; j++){
//System.out.print(knoten[i].gebeName() + " ");
for(int k = 0; k < temp.getRooms().length; k++){ for(int k = temp.getRooms().length - 1; k >= 0; k--){
if(temp.getRooms()[j][k] == null){ if(temp.getRooms()[j][k] == null){
System.out.print("0 "); System.out.print("0 ");
} }
else{ else{
System.out.print("1 "); System.out.print("1 ");
}
} }
System.out.println();
} }
System.out.println();
}
} }
} }
} }

@ -27,7 +27,8 @@ public abstract class Entity {
} }
public void update(){ public void update(){
xPos += movementX;
yPos += movementY;
} }
public void die(){ public void die(){
@ -128,23 +129,6 @@ public abstract class Entity {
return -1; return -1;
} }
public int direction(){
if(movementX == -3){
return 3;
}
if(movementX == 3){
return 1;
}
if(movementY == 3){
return 0;
}
if(movementY == -3){
return 2;
}
return -1;
}
public float getxPos() { public float getxPos() {
return xPos; return xPos;
} }

@ -33,7 +33,7 @@ public class Level {
} }
public void setRoom(Room room, int x, int y){ public void setRoom(Room room, int x, int y){
if(x < this.rooms.length){ if(x < this.rooms.length && y < this.rooms.length){
this.rooms[x][y] = room; this.rooms[x][y] = room;
} }
} }

@ -24,6 +24,4 @@ public class Player extends Entity {
// TODO: Sinnvolle Werte finden // TODO: Sinnvolle Werte finden
} }
} }

@ -5,7 +5,6 @@
*/ */
package com.dungeoncrawler.view; package com.dungeoncrawler.view;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.graphics.Texture; import com.badlogic.gdx.graphics.Texture;
import com.badlogic.gdx.graphics.g2d.TextureRegion; import com.badlogic.gdx.graphics.g2d.TextureRegion;
import com.badlogic.gdx.maps.MapLayers; import com.badlogic.gdx.maps.MapLayers;
@ -29,7 +28,9 @@ public class MapGenerator {
splitTiles = TextureRegion.split(this.tiles, 48, 48); splitTiles = TextureRegion.split(this.tiles, 48, 48);
} }
public TiledMap[][][] generateMap(int levelAmount, Dungeon d){ public TiledMap[][][] generateMap(Dungeon d){
int levelAmount = d.getLevel().length;
TiledMap[][][] tempMap = new TiledMap[levelAmount][][]; TiledMap[][][] tempMap = new TiledMap[levelAmount][][];
for(int i = 0; i < levelAmount; i++){ for(int i = 0; i < levelAmount; i++){
@ -51,30 +52,66 @@ public class MapGenerator {
Room room = l.getRooms()[x][y]; Room room = l.getRooms()[x][y];
if(room != null){ if(room != null){
TiledMap tempRoom = generateRoom(room, sizeX, sizeY); int tempX = 7;
int tempY = 5;
TiledMap tempRoom = generateRoom(room, tempX, tempY);
// Wenn es Fehler gibt, dann wohl hier: Viel Spaß beim Suchen! Danke!
TiledMapTileLayer temp = (TiledMapTileLayer) tempRoom.getLayers().get(2);
// Ausgang oben
if(y < l.getRooms()[0].length - 1 && l.getRooms()[x][y + 1] != null){
temp.getCell((tempX / 2) + 1, tempY + 1).setTile(new StaticTiledMapTile(splitTiles[0][3])); //oben
}
// Ausgang rechts
if(x < l.getRooms().length - 1 && l.getRooms()[x + 1][y] != null){
temp.getCell(tempX + 1, (tempY / 2) + 1).setTile(new StaticTiledMapTile(splitTiles[0][3])); //rechts
}
// Ausgang unten
if(y > 0 && l.getRooms()[x][y - 1] != null){
temp.getCell((tempX / 2) + 1, 0).setTile(new StaticTiledMapTile(splitTiles[0][3])); //unten
}
// Ausgang links
if(x > 0 && l.getRooms()[x - 1][y] != null){
temp.getCell(0, (tempY / 2) + 1).setTile(new StaticTiledMapTile(splitTiles[0][3])); //links
}
tempLevel[x][y] = tempRoom; tempLevel[x][y] = tempRoom;
} }
else{
tempLevel[x][y] = null;
}
} }
} }
return tempLevel; return tempLevel;
} }
private TiledMap generateRoom(Room r, int sizeX, int sizeY){ private TiledMap generateRoom(Room r, int roomDimensionX, int roomDimensionY){
TiledMap tempRoom = new TiledMap(); TiledMap tempRoom = new TiledMap();
int mapDimensionX = roomDimensionX + 2;
int mapDimensionY = roomDimensionY + 2;
MapLayers layers = tempRoom.getLayers(); MapLayers layers = tempRoom.getLayers();
TiledMapTileLayer collisionLayer = new TiledMapTileLayer(7, 5, 48, 48); TiledMapTileLayer collisionLayer = new TiledMapTileLayer(mapDimensionX, mapDimensionY, 48, 48);
TiledMapTileLayer dynamicLayer = new TiledMapTileLayer(7, 5, 48, 48); TiledMapTileLayer dynamicLayer = new TiledMapTileLayer(mapDimensionX, mapDimensionY, 48, 48);
TiledMapTileLayer staticLayer = new TiledMapTileLayer(7, 5, 48, 48); TiledMapTileLayer staticLayer = new TiledMapTileLayer(mapDimensionX, mapDimensionY, 48, 48);
for(int x = 0; x < mapDimensionX + 1; x++){
for(int y = 0; y < mapDimensionY + 1; y++){
for(int x = 0; x < 7; x++){
for(int y = 0; y < 5; y++){
TiledMapTileLayer.Cell cell = new TiledMapTileLayer.Cell(); TiledMapTileLayer.Cell cell = new TiledMapTileLayer.Cell();
cell.setTile(new StaticTiledMapTile(splitTiles[0][0]));
if(x == 0 || x == mapDimensionX - 1 || y == 0 || y == mapDimensionY - 1){
cell.setTile(new StaticTiledMapTile(splitTiles[0][5]));
}
else{
cell.setTile(new StaticTiledMapTile(splitTiles[0][0]));
}
staticLayer.setCell(x, y, cell); staticLayer.setCell(x, y, cell);
} }
} }
@ -85,4 +122,26 @@ public class MapGenerator {
return tempRoom; return tempRoom;
} }
public void ichWillSpielen(TiledMap[][][] map){
for(int i=0;i<map.length;i++){
TiledMap[][] temp = map[i];
System.out.println("MapLevel " + i);
for(int j = 0; j < temp.length; j++){
for(int k = temp[j].length - 1; k >= 0; k--){
if(temp[j][k] == null){
System.out.print("0 ");
}
else{
System.out.print("1 ");
}
}
System.out.println();
}
}
}
} }

@ -6,13 +6,11 @@ import com.badlogic.gdx.graphics.OrthographicCamera;
import com.badlogic.gdx.graphics.Texture; import com.badlogic.gdx.graphics.Texture;
import com.badlogic.gdx.graphics.g2d.SpriteBatch; import com.badlogic.gdx.graphics.g2d.SpriteBatch;
import com.badlogic.gdx.graphics.g2d.Sprite; import com.badlogic.gdx.graphics.g2d.Sprite;
import com.badlogic.gdx.utils.Timer;
import com.badlogic.gdx.graphics.g2d.TextureRegion; import com.badlogic.gdx.graphics.g2d.TextureRegion;
import com.badlogic.gdx.maps.tiled.TiledMap; import com.badlogic.gdx.maps.tiled.TiledMap;
import com.badlogic.gdx.maps.tiled.TiledMapRenderer; 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.dungeoncrawler.model.Dungeon; import com.dungeoncrawler.model.Dungeon;
import com.dungeoncrawler.model.DungeonGenerator;
import com.dungeoncrawler.model.Entity; import com.dungeoncrawler.model.Entity;
import com.dungeoncrawler.model.entities.*; import com.dungeoncrawler.model.entities.*;
@ -31,13 +29,12 @@ public class View {
Texture archerTexture; Texture archerTexture;
//MAP //MAP
Map tm; Map m;
TiledMapRenderer tmr; TiledMapRenderer tmr;
TiledMap test; TiledMap test;
OrthographicCamera camera; OrthographicCamera camera;
Dungeon d;
public View() { public View(Dungeon d) {
float w = Gdx.graphics.getWidth(); float w = Gdx.graphics.getWidth();
float h = Gdx.graphics.getHeight(); float h = Gdx.graphics.getHeight();
float wc = w/2; float wc = w/2;
@ -58,34 +55,38 @@ public class View {
//MAP //MAP
tm = new Map(); m = new Map();
camera = new OrthographicCamera(1, h/w); camera = new OrthographicCamera(1, h/w);
d = new DungeonGenerator().generateDungeon(10, 10, 48, new Player());
MapGenerator mg = new MapGenerator(new Texture(Gdx.files.internal("tiles.gif"))); MapGenerator mg = new MapGenerator(new Texture(Gdx.files.internal("tiles.gif")));
TiledMap[][][] maps = mg.generateMap(7, d);
tm.setMaps(maps);
for(int i=0;i<tm.getMaps()[0].length;i++){ TiledMap[][][] maps = mg.generateMap(d);
for(int j=0;j<tm.getMaps()[0][0].length;j++){ m.setMaps(maps);
if(tm.getMaps()[0][i][j] != null){ mg.ichWillSpielen(m.getMaps());
test = tm.getMaps()[0][i][j];
}
}
}
tmr = new OrthogonalTiledMapRenderer(test);
test = new TiledMap();
tmr = new OrthogonalTiledMapRenderer(test);
} }
public void render (SpriteBatch batch, Player p, Entity[] e, int[] tile, int level, int[] posRoom) {
public void render (SpriteBatch batch, Player p, Entity[] e) {
Gdx.gl.glClearColor(0, 0, 0, 1); Gdx.gl.glClearColor(0, 0, 0, 1);
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT); Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
//PLAYER player.setX(p.getxPos());
player.setX(player.getX()+ p.getMovementX()); player.setY(p.getyPos());
player.setY(player.getY()+ p.getMovementY());
int xPosRoom = posRoom[0];
int yPosRoom = posRoom[1];
test = m.getMaps()[level][xPosRoom][yPosRoom];
if(test == null){
System.out.println("Dein scheiß geht net");
}
else{
tmr = new OrthogonalTiledMapRenderer(test);
}
if(p.getMovementX() == 3){ if(p.getMovementX() == 3){
player.setRegion(regions[0][1]); player.setRegion(regions[0][1]);
@ -103,7 +104,8 @@ public class View {
//MAP //MAP
tmr.setView(camera); tmr.setView(camera);
tmr.render(); tmr.render();
camera.zoom = 1000f;
camera.zoom = 1500f;
camera.update(); camera.update();
batch.setProjectionMatrix(camera.combined); batch.setProjectionMatrix(camera.combined);

Loading…
Cancel
Save