GammelJan 6 years ago
commit d92e29f35d

@ -270,7 +270,11 @@ public class Controller extends ApplicationAdapter implements InputProcessor{
gs.updateDamageContainer();
}
}
}
if(!hasEnemies()){
gs.getM().getMaps()[level][roomPosX][roomPosY].raiseDoors();
}
}
}
},0, 0.03f);
@ -427,6 +431,8 @@ public class Controller extends ApplicationAdapter implements InputProcessor{
// Level
d.setLevel(d.getCurrentLevel(), level);
clearEnemies();
// oben
if(tileX == (roomX / 2) && tileY == roomY){
System.out.println("oben");
@ -434,8 +440,6 @@ public class Controller extends ApplicationAdapter implements InputProcessor{
roomPosY += 1;
d.getPlayer().setxPos((roomX / 2)* 48);
d.getPlayer().setyPos(48);
gs.startLoadingScreen();
clearEnemies();
}
// rechts
@ -445,8 +449,6 @@ public class Controller extends ApplicationAdapter implements InputProcessor{
roomPosX += 1;
d.getPlayer().setxPos(48);
d.getPlayer().setyPos((roomY / 2)*48);
gs.startLoadingScreen();
clearEnemies();
}
// unten
@ -456,8 +458,6 @@ public class Controller extends ApplicationAdapter implements InputProcessor{
roomPosY -= 1;
d.getPlayer().setxPos((roomX / 2)*48);
d.getPlayer().setyPos(roomY*48 - 48);
gs.startLoadingScreen();
clearEnemies();
}
// links
@ -467,8 +467,6 @@ public class Controller extends ApplicationAdapter implements InputProcessor{
roomPosX -= 1;
d.getPlayer().setxPos((roomX*48) - 48);
d.getPlayer().setyPos((roomY / 2)*48);
gs.startLoadingScreen();
clearEnemies();
}
if(roomPosX == d.getCurrentLevel().getExit()[0] && roomPosY == d.getCurrentLevel().getExit()[1]){
@ -502,6 +500,12 @@ public class Controller extends ApplicationAdapter implements InputProcessor{
d.setCurrentEntities(d.getCurrentRoom().getEnemies());
gs.generateEntitySprites(d.getCurrentEntities());
gs.startLoadingScreen();
if(hasEnemies()){
gs.getM().getMaps()[level][roomPosX][roomPosY].lowerDoors();
}
}
public void attack(Entity attacker, Entity[] e){

@ -25,21 +25,36 @@ public class AnimatedObject {
frame = (int) (Math.random()*texture[0].length);
row = (int) (Math.random()*texture.length);
sprite = new Sprite(texture[row][frame]);
sprite = new Sprite(texture[getRow()][getFrame()]);
}
public void updateTexture(){
if(frame >= texture[0].length - 1){
frame = 0;
public void updateAnimation(){
if(getFrame() >= texture[0].length - 1){
setFrame(0);
}
else{
frame++;
setFrame(getFrame() + 1);
}
sprite.setRegion(texture[row][frame]);
sprite.setRegion(texture[getRow()][getFrame()]);
}
public void updateTexture(){
sprite.setRegion(texture[getRow()][getFrame()]);
}
public void updateBackwards(){
if(getFrame() <= 0){
setFrame(texture[0].length - 1);
}
else{
setFrame(getFrame() - 1);
}
sprite.setRegion(texture[getRow()][getFrame()]);
}
/**
* @return the sprite
*/
@ -71,4 +86,32 @@ public class AnimatedObject {
public void setTexture(TextureRegion[][] texture) {
this.texture = texture;
}
/**
* @return the frame
*/
public int getFrame() {
return frame;
}
/**
* @param frame the frame to set
*/
public void setFrame(int frame) {
this.frame = frame;
}
/**
* @return the row
*/
public int getRow() {
return row;
}
/**
* @param row the row to set
*/
public void setRow(int row) {
this.row = row;
}
}

@ -42,6 +42,7 @@ public class GameScreen {
OrthographicCamera camera;
public ArrayList<AnimatedObject> objects;
public ArrayList<AnimatedObject> mapItems;
public ArrayList<AnimatedObject> doors;
Timer animations;
Timer animatePlayer;
@ -162,7 +163,7 @@ public class GameScreen {
public void run() {
if(objects != null){
for(AnimatedObject object : objects){
object.updateTexture();
object.updateAnimation();
}
}
}
@ -237,6 +238,7 @@ public class GameScreen {
tm = getM().getMaps()[level][roomPosX][roomPosY].getMap();
objects = getM().getMaps()[level][roomPosX][roomPosY].getObjects();
mapItems = getM().getMaps()[level][roomPosX][roomPosY].getMapItems();
doors = getM().getMaps()[level][roomPosX][roomPosY].getDoors();
if(tm != null){
tmr = new OrthogonalTiledMapRenderer(tm);
@ -283,6 +285,10 @@ public class GameScreen {
mapItem.getSprite().draw(batch);
}
for(AnimatedObject door : doors){
door.getSprite().draw(batch);
}
for(EntitySprite eSprite : renderArray){
eSprite.getSprites()[0].draw(batch);
}

@ -7,6 +7,7 @@ package com.dungeoncrawler.view;
import com.badlogic.gdx.graphics.Texture;
import com.badlogic.gdx.maps.tiled.TiledMap;
import com.badlogic.gdx.utils.Timer;
import com.dungeoncrawler.model.Item;
import java.util.ArrayList;
@ -18,13 +19,22 @@ public class MapContainer {
private TiledMap map;
private ArrayList<AnimatedObject> objects;
private ArrayList<AnimatedObject> mapItems;
private ArrayList<AnimatedObject> doors;
private boolean doorsDown;
private EntitySprite[] enemies;
private Timer doorTimer;
private int doorState;
public MapContainer(TiledMap map){
this.map = map;
this.objects = new ArrayList<>();
this.mapItems = new ArrayList<>();
this.enemies = new EntitySprite[15];
doors = new ArrayList<>();
doorTimer = new Timer();
// 0: up, 1: animation, 2: down
doorState = 0;
}
@ -48,6 +58,52 @@ public class MapContainer {
}
}
public void lowerDoors(){
if(doorState == 0){
doorState = 1;
for(AnimatedObject door : doors){
door.setFrame(9);
}
doorTimer.scheduleTask(new Timer.Task() {
@Override
public void run() {
for(AnimatedObject door : doors){
door.updateBackwards();
}
if(doors.get(0).getFrame() == 0){
doorState = 2;
doorTimer.clear();
}
}
}, 0, 0.08f);
}
}
public void raiseDoors(){
if(doorState == 2){
doorState = 1;
for(AnimatedObject door : doors){
door.setFrame(0);
}
doorTimer.scheduleTask(new Timer.Task() {
@Override
public void run() {
for(AnimatedObject door : doors){
door.updateAnimation();
}
if(doors.get(0).getFrame() >= 9){
doorState = 0;
doorTimer.clear();
}
}
}, 0, 0.08f);
}
}
/**
* @return the map
@ -109,5 +165,26 @@ public class MapContainer {
public void setEnemies(EntitySprite enemy, int i) {
this.enemies[i] = enemy;
}
/**
* @return the doorsDown
*/
public boolean isDoorsDown() {
return doorsDown;
}
/**
* @return the doors
*/
public ArrayList<AnimatedObject> getDoors() {
return doors;
}
/**
* @param doors the doors to set
*/
public void setDoors(ArrayList<AnimatedObject> doors) {
this.doors = doors;
}
}

@ -30,6 +30,9 @@ public class MapGenerator {
Texture amulet;
Texture key;
Texture potion;
Texture doorTop;
Texture doorLeft;
Texture doorRight;
public MapGenerator(Texture[] tiles){
allTiles = new TextureRegion[7][][];
@ -41,6 +44,10 @@ public class MapGenerator {
amulet = new Texture("sprites/amulet.png");
key = new Texture("sprites/key.png");
potion = new Texture("sprites/potion.png");
doorTop = new Texture("sprites/door.png");
doorLeft = new Texture("sprites/doorleft.png");
doorRight = new Texture("sprites/doorright.png");
}
public Map generateMap(Dungeon d){
@ -115,6 +122,14 @@ public class MapGenerator {
staticLayer.getCell((tempX / 2) + 1, tempY + 3).setTile(new StaticTiledMapTile(splitTiles[0][0])); //oben3
staticLayer.getCell((tempX / 2) + 0, tempY + 3).setTile(new StaticTiledMapTile(splitTiles[3][5])); //oben3-1
staticLayer.getCell((tempX / 2) + 2, tempY + 3).setTile(new StaticTiledMapTile(splitTiles[2][5])); //oben3+1
AnimatedObject door = new AnimatedObject(this.doorTop, 48, 144);
door.setSpritePosition(((tempX / 2) + 1) * 48, (tempY + 1) * 48);
door.setFrame(9);
door.updateTexture();
temp.getDoors().add(door);
}
collisionLayer.getObjects().remove(top);
@ -150,8 +165,13 @@ public class MapGenerator {
tempObject.getSprite().setPosition((tempX + 1) * 48, ((tempY / 2) + 2) * 48);
temp.getObjects().add(tempObject);
RectangleMapObject door = new RectangleMapObject(mapDimensionX*48 - 48, (mapDimensionY / 2) * 48, 48, 48);
doorLayer.getObjects().add(door);
AnimatedObject door = new AnimatedObject(this.doorRight, 48, 144);
door.setSpritePosition((tempX + 1) * 48, ((tempY / 2) + 1) * 48);
door.setFrame(9);
door.updateTexture();
temp.getDoors().add(door);
}
collisionLayer.getObjects().remove(right);
@ -161,6 +181,9 @@ public class MapGenerator {
collisionLayer.getObjects().add(tempTop);
collisionLayer.getObjects().add(tempBottom);
RectangleMapObject door = new RectangleMapObject(mapDimensionX*48 - 48, (mapDimensionY / 2) * 48, 48, 48);
doorLayer.getObjects().add(door);
}
// Ausgang unten
@ -177,6 +200,14 @@ public class MapGenerator {
staticLayer.getCell((tempX / 2) + 0, 0).setTile(new StaticTiledMapTile(splitTiles[4][5])); //unten-1
staticLayer.getCell((tempX / 2) + 1, 0).setTile(new StaticTiledMapTile(splitTiles[0][0])); //unten1
staticLayer.getCell((tempX / 2) + 2, 0).setTile(new StaticTiledMapTile(splitTiles[4][4])); //unten2
AnimatedObject door = new AnimatedObject(this.doorTop, 48, 144);
door.setSpritePosition(((tempX / 2) + 1) * 48, -2 * 48);
door.setFrame(9);
door.updateTexture();
temp.getDoors().add(door);
}
collisionLayer.getObjects().remove(bottom);
@ -211,6 +242,14 @@ public class MapGenerator {
AnimatedObject tempObject = new AnimatedObject(torchT, 48, 96);
tempObject.getSprite().setPosition(0, ((tempY / 2) + 2) * 48);
temp.getObjects().add(tempObject);
AnimatedObject door = new AnimatedObject(this.doorLeft, 48, 144);
door.setSpritePosition(0, ((tempY / 2) + 1) * 48);
door.setFrame(9);
door.updateTexture();
temp.getDoors().add(door);
}
collisionLayer.getObjects().remove(left);

Loading…
Cancel
Save