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.Input;
import com.badlogic.gdx.InputProcessor;
import com.badlogic.gdx.graphics.GL20;
import com.badlogic.gdx.graphics.g2d.SpriteBatch;
import com.dungeoncrawler.view.*;
import com.dungeoncrawler.model.Dungeon;
@ -23,11 +22,13 @@ public class Controller extends ApplicationAdapter implements InputProcessor{
Dungeon d;
DungeonGenerator dg;
MainMenu v;
Player p;
Entity[] e;
Timer t;
View m;
Archer a;
int[] tile;
int[] posRoom;
int level;
@Override
public void create(){
@ -35,10 +36,42 @@ public class Controller extends ApplicationAdapter implements InputProcessor{
e = new Entity[5];
batch = new SpriteBatch();
v = new MainMenu();
p = new Player();
d = new Dungeon(p);
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);
t = new Timer();
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++){
if(e[i] == null){}
else{
e[i].rdmMove(p.getxPos(), p.getyPos());
m.setPlayerSpriteX(p.getxPos());
m.setPlayerSpriteY(p.getyPos());
m.setEntitySpriteX(i,p.getxPos());
m.setEntitySpriteY(i,p.getxPos());
e[i].rdmMove(d.getPlayer().getxPos(), d.getPlayer().getyPos());
m.setPlayerSpriteX(d.getPlayer().getxPos());
m.setPlayerSpriteY(d.getPlayer().getyPos());
m.setEntitySpriteX(i, d.getPlayer().getxPos());
m.setEntitySpriteY(i, d.getPlayer().getxPos());
}
}
}
@ -65,20 +98,68 @@ public class Controller extends ApplicationAdapter implements InputProcessor{
public void render(){
//PASSIERT IN MAINMENU
if(v != null){
v.render(batch, p , e);
v.render(batch, d.getPlayer() , e);
}
//PASSIERT IN GAMESCREEN (view)
if(m != null){
//ENTITIES
p.setxPos(m.getPlayerSpriteX());
p.setyPos(m.getPlayerSpriteY());
d.getPlayer().setxPos(m.getPlayerSpriteX());
d.getPlayer().setyPos(m.getPlayerSpriteY());
if(v == null){
//RENDER
m.render(batch, p, e);
d.getPlayer().update();
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
@ -110,19 +191,19 @@ public class Controller extends ApplicationAdapter implements InputProcessor{
public boolean keyDown(int keycode) {
if(keycode == Input.Keys.LEFT){
if(v != null){
v.moveCursor(3);
v.moveCursor(3);
}
if(m != null){
p.setMovementX(-3);
d.getPlayer().setMovementX(-3);
}
}
if(keycode == Input.Keys.RIGHT){
if(v != null){
v.moveCursor(1);
v.moveCursor(1);
}
if(m != null){
p.setMovementX(3);
d.getPlayer().setMovementX(3);
}
}
@ -131,7 +212,7 @@ public class Controller extends ApplicationAdapter implements InputProcessor{
v.moveCursor(2);
}
if(m != null){
p.setMovementY(-3);
d.getPlayer().setMovementY(-3);
}
}
@ -140,7 +221,7 @@ public class Controller extends ApplicationAdapter implements InputProcessor{
v.moveCursor(0);
}
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){}
else if(v.click() == 0){
v = null;
m = new View();
newEntity(a, 200, 200, 200);
m = new View(d);
System.out.println("NICE");
}
}
@ -165,7 +248,7 @@ public class Controller extends ApplicationAdapter implements InputProcessor{
v.stopCursor(3);
}
if(m != null){
p.setMovementX(0);
d.getPlayer().setMovementX(0);
}
}
@ -174,7 +257,7 @@ public class Controller extends ApplicationAdapter implements InputProcessor{
v.stopCursor(1);
}
if(m != null){
p.setMovementX(0);
d.getPlayer().setMovementX(0);
}
}
@ -183,7 +266,7 @@ public class Controller extends ApplicationAdapter implements InputProcessor{
v.stopCursor(2);
}
if(m != null){
p.setMovementY(0);
d.getPlayer().setMovementY(0);
}
}
@ -192,7 +275,7 @@ public class Controller extends ApplicationAdapter implements InputProcessor{
v.stopCursor(0);
}
if(m != null){
p.setMovementY(0);
d.getPlayer().setMovementY(0);
}
}

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

@ -27,7 +27,8 @@ public abstract class Entity {
}
public void update(){
xPos += movementX;
yPos += movementY;
}
public void die(){
@ -127,23 +128,6 @@ public abstract class Entity {
}
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() {
return xPos;

@ -33,7 +33,7 @@ public class Level {
}
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;
}
}

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

@ -5,7 +5,6 @@
*/
package com.dungeoncrawler.view;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.graphics.Texture;
import com.badlogic.gdx.graphics.g2d.TextureRegion;
import com.badlogic.gdx.maps.MapLayers;
@ -29,7 +28,9 @@ public class MapGenerator {
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][][];
for(int i = 0; i < levelAmount; i++){
@ -51,30 +52,66 @@ public class MapGenerator {
Room room = l.getRooms()[x][y];
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;
}
else{
tempLevel[x][y] = null;
}
}
}
return tempLevel;
}
private TiledMap generateRoom(Room r, int sizeX, int sizeY){
private TiledMap generateRoom(Room r, int roomDimensionX, int roomDimensionY){
TiledMap tempRoom = new TiledMap();
int mapDimensionX = roomDimensionX + 2;
int mapDimensionY = roomDimensionY + 2;
MapLayers layers = tempRoom.getLayers();
TiledMapTileLayer collisionLayer = new TiledMapTileLayer(7, 5, 48, 48);
TiledMapTileLayer dynamicLayer = new TiledMapTileLayer(7, 5, 48, 48);
TiledMapTileLayer staticLayer = new TiledMapTileLayer(7, 5, 48, 48);
TiledMapTileLayer collisionLayer = new TiledMapTileLayer(mapDimensionX, mapDimensionY, 48, 48);
TiledMapTileLayer dynamicLayer = new TiledMapTileLayer(mapDimensionX, mapDimensionY, 48, 48);
TiledMapTileLayer staticLayer = new TiledMapTileLayer(mapDimensionX, mapDimensionY, 48, 48);
for(int x = 0; x < 7; x++){
for(int y = 0; y < 5; y++){
for(int x = 0; x < mapDimensionX + 1; x++){
for(int y = 0; y < mapDimensionY + 1; y++){
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);
}
}
@ -85,4 +122,26 @@ public class MapGenerator {
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.g2d.SpriteBatch;
import com.badlogic.gdx.graphics.g2d.Sprite;
import com.badlogic.gdx.utils.Timer;
import com.badlogic.gdx.graphics.g2d.TextureRegion;
import com.badlogic.gdx.maps.tiled.TiledMap;
import com.badlogic.gdx.maps.tiled.TiledMapRenderer;
import com.badlogic.gdx.maps.tiled.renderers.OrthogonalTiledMapRenderer;
import com.dungeoncrawler.model.Dungeon;
import com.dungeoncrawler.model.DungeonGenerator;
import com.dungeoncrawler.model.Entity;
import com.dungeoncrawler.model.entities.*;
@ -31,13 +29,12 @@ public class View {
Texture archerTexture;
//MAP
Map tm;
Map m;
TiledMapRenderer tmr;
TiledMap test;
OrthographicCamera camera;
Dungeon d;
public View() {
public View(Dungeon d) {
float w = Gdx.graphics.getWidth();
float h = Gdx.graphics.getHeight();
float wc = w/2;
@ -58,34 +55,38 @@ public class View {
//MAP
tm = new Map();
m = new Map();
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")));
TiledMap[][][] maps = mg.generateMap(7, d);
tm.setMaps(maps);
for(int i=0;i<tm.getMaps()[0].length;i++){
for(int j=0;j<tm.getMaps()[0][0].length;j++){
if(tm.getMaps()[0][i][j] != null){
test = tm.getMaps()[0][i][j];
}
}
}
TiledMap[][][] maps = mg.generateMap(d);
m.setMaps(maps);
mg.ichWillSpielen(m.getMaps());
test = new TiledMap();
tmr = new OrthogonalTiledMapRenderer(test);
}
public void render (SpriteBatch batch, Player p, Entity[] e) {
public void render (SpriteBatch batch, Player p, Entity[] e, int[] tile, int level, int[] posRoom) {
Gdx.gl.glClearColor(0, 0, 0, 1);
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
//PLAYER
player.setX(player.getX()+ p.getMovementX());
player.setY(player.getY()+ p.getMovementY());
player.setX(p.getxPos());
player.setY(p.getyPos());
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){
player.setRegion(regions[0][1]);
@ -103,7 +104,8 @@ public class View {
//MAP
tmr.setView(camera);
tmr.render();
camera.zoom = 1000f;
camera.zoom = 1500f;
camera.update();
batch.setProjectionMatrix(camera.combined);

Loading…
Cancel
Save