From 005d44b7af7e0eb5a6aac46c17494b05266f1aad Mon Sep 17 00:00:00 2001 From: Jonathan Hager Date: Wed, 29 Apr 2020 00:14:35 +0200 Subject: [PATCH] Is fast Isaac --- .../dungeoncrawler/control/Controller.java | 39 +++++++++++++++--- .../model/DungeonGenerator.java | 5 ++- .../com/dungeoncrawler/model/Inventory.java | 8 +++- core/src/com/dungeoncrawler/model/Room.java | 40 +++++++++---------- .../com/dungeoncrawler/view/GameScreen.java | 20 +++++++++- .../com/dungeoncrawler/view/MapGenerator.java | 6 +-- 6 files changed, 83 insertions(+), 35 deletions(-) diff --git a/core/src/com/dungeoncrawler/control/Controller.java b/core/src/com/dungeoncrawler/control/Controller.java index f505277..ce09500 100644 --- a/core/src/com/dungeoncrawler/control/Controller.java +++ b/core/src/com/dungeoncrawler/control/Controller.java @@ -24,9 +24,11 @@ import com.dungeoncrawler.model.entities.*; import com.dungeoncrawler.model.Entity; import com.badlogic.gdx.utils.Timer; import com.dungeoncrawler.model.Item; +import com.dungeoncrawler.model.ItemContainer; import com.dungeoncrawler.model.items.Key; import com.dungeoncrawler.model.items.Potion; import com.dungeoncrawler.model.items.Sword; +import java.util.ArrayList; public class Controller extends ApplicationAdapter implements InputProcessor{ SpriteBatch batch; @@ -278,6 +280,27 @@ public class Controller extends ApplicationAdapter implements InputProcessor{ d.setCurrentRoom(d.getCurrentLevel().getRooms()[roomPosX][roomPosY]); d.setCurrentEntities(d.getCurrentRoom().getEnemies()); } + + public ArrayList playerPickUp(){ + + ArrayList tempItems = d.getCurrentRoom().getItems(); + ArrayList tempSprites = m.getM().getMaps()[level][roomPosX][roomPosY].getMapItems(); + ArrayList garbageCollector = new ArrayList<>(); + + for(int i = 0; i < tempItems.size(); i++){ + if(Intersector.overlaps(m.getPlayer().getBoundingRectangle(), tempSprites.get(i).getSprite().getBoundingRectangle())){ + garbageCollector.add(tempItems.get(i)); + + tempItems.remove(i); + tempSprites.remove(i); + } + } + + d.getCurrentRoom().setItems(tempItems); + + return garbageCollector; + + } @Override public boolean keyDown(int keycode) { @@ -322,9 +345,14 @@ public class Controller extends ApplicationAdapter implements InputProcessor{ if(keycode == Input.Keys.F){ if(v != null){} if(m != null){ - Item k = new Sword(1); - m.addItem(k); + //Item k = new Sword(1); + //m.addItem(k); //d.setCurrentItemContainer(m.playerPickUp(d.getCurrentItemContainer(), d.getPlayer())); + ArrayList garbage = playerPickUp(); + + for(ItemContainer item : garbage){ + d.getPlayer().getInv().addItem(item.getItem()); + } } } @@ -333,7 +361,7 @@ public class Controller extends ApplicationAdapter implements InputProcessor{ if(v != null){} if(m != null){ Item k = new Potion(1); - m.addItem(k); + //m.addItem(k); //d.setCurrentItemContainer(m.playerPickUp(d.getCurrentItemContainer(), d.getPlayer())); } } @@ -341,11 +369,11 @@ public class Controller extends ApplicationAdapter implements InputProcessor{ if(v != null){} if(m != null){ Item k = new Key(1); - m.addItem(k); + //m.addItem(k); //d.setCurrentItemContainer(m.playerPickUp(d.getCurrentItemContainer(), d.getPlayer())); } } - + /* if(keycode == Input.Keys.NUM_1){ m.moveItem(0); } @@ -370,6 +398,7 @@ public class Controller extends ApplicationAdapter implements InputProcessor{ if(keycode == Input.Keys.NUM_8){ m.moveItem(7); } + */ diff --git a/core/src/com/dungeoncrawler/model/DungeonGenerator.java b/core/src/com/dungeoncrawler/model/DungeonGenerator.java index fd9680e..163efbe 100644 --- a/core/src/com/dungeoncrawler/model/DungeonGenerator.java +++ b/core/src/com/dungeoncrawler/model/DungeonGenerator.java @@ -7,6 +7,7 @@ package com.dungeoncrawler.model; import com.dungeoncrawler.model.entities.*; import com.dungeoncrawler.model.items.Sword; +import java.util.ArrayList; /** * @@ -143,7 +144,7 @@ public class DungeonGenerator { int itemAmount = (int) (Math.random() * 2); int enemyAmount = (int) (Math.random() * 6); - Room tempRoom = new Room(new ItemContainer[itemAmount], new Entity[enemyAmount]); + Room tempRoom = new Room(new ArrayList(itemAmount), new Entity[enemyAmount]); // Items werden generiert int[][] belegt = new int[itemAmount][2]; @@ -227,7 +228,7 @@ public class DungeonGenerator { tempContainer = null; } - tempRoom.setItem(tempContainer, i); + tempRoom.getItems().add(tempContainer); } // Entities werden generiert diff --git a/core/src/com/dungeoncrawler/model/Inventory.java b/core/src/com/dungeoncrawler/model/Inventory.java index 961c777..baf3206 100644 --- a/core/src/com/dungeoncrawler/model/Inventory.java +++ b/core/src/com/dungeoncrawler/model/Inventory.java @@ -17,8 +17,8 @@ public class Inventory { public void addItem(Item i) { - for(int n = 0; n <= items.length; n++){ - for(int m = 0; m <= items[0].length; m++){ + for(int n = 0; n < items.length; n++){ + for(int m = 0; m < items[0].length; m++){ if(items[n][m] == null){ items[n][m] = i; n = items.length + 1; @@ -48,6 +48,10 @@ public class Inventory { return items[x][y]; } + public Item[][] getItem(){ + return items; + } + public int getWidth(){ return width; } diff --git a/core/src/com/dungeoncrawler/model/Room.java b/core/src/com/dungeoncrawler/model/Room.java index 8b32a7e..ad88b79 100644 --- a/core/src/com/dungeoncrawler/model/Room.java +++ b/core/src/com/dungeoncrawler/model/Room.java @@ -5,17 +5,19 @@ */ package com.dungeoncrawler.model; +import java.util.ArrayList; + /** * * @author jonathan */ public class Room { - private ItemContainer[] item; + private ArrayList items; private Entity[] enemies; int lvl; - public Room(ItemContainer[] item, Entity[] enemies){ - this.item = item; + public Room(ArrayList items, Entity[] enemies){ + this.items = items; this.enemies = enemies; } @@ -30,24 +32,6 @@ public class Room { // TODO: Zu Implementieren } - /** - * @return the item - */ - public ItemContainer[] getItem() { - return item; - } - - /** - * @param item the item to set - */ - public void setItem(ItemContainer[] item) { - this.item = item; - } - - public void setItem(ItemContainer item, int i) { - this.item[i] = item; - } - /** * @return the enemies */ @@ -65,4 +49,18 @@ public class Room { public void setEnemies(Entity enemy, int i){ this.enemies[i] = enemy; } + + /** + * @return the items + */ + public ArrayList getItems() { + return items; + } + + /** + * @param items the items to set + */ + public void setItems(ArrayList items) { + this.items = items; + } } diff --git a/core/src/com/dungeoncrawler/view/GameScreen.java b/core/src/com/dungeoncrawler/view/GameScreen.java index 9357ad1..9dcb0af 100644 --- a/core/src/com/dungeoncrawler/view/GameScreen.java +++ b/core/src/com/dungeoncrawler/view/GameScreen.java @@ -126,7 +126,7 @@ public class GameScreen { },0, 0.1f); //Inventory TEST - HudTexture = new Texture("sprites/HUD.png"); + HudTexture = new Texture("sprites/hud.png"); HudSprite = new Sprite(HudTexture); HudSprite.setX(-HudSprite.getWidth()); HudSprite.setY(20f); @@ -219,7 +219,19 @@ public class GameScreen { entitySprites[i].setY(e[i].getyPos()); } } - } + } + + InventoryItemSprites = new Sprite[8]; + + Item[][] items = p.getInv().getItem(); + + for(int x = 0; x < items.length; x++){ + for(int y = 0; y < items[0].length; y++){ + if(items[x][y] != null){ + addItem(items[x][y]); + } + } + } //BATCH @@ -301,6 +313,7 @@ public class GameScreen { } } + /* for(int i = 0; i < arrowSprites.length; i++){ if(arrowSprites[i] != null){ arrowSprites[i].setX(arrows[i].getxPos()); @@ -308,6 +321,7 @@ public class GameScreen { arrowSprites[i].draw(batch); } } + */ batch.end(); } @@ -400,6 +414,7 @@ public class GameScreen { return e; } + /* public void moveItem(int i){ if(i == 0){ if(InventoryItemSprites[i] != null){ @@ -413,6 +428,7 @@ public class GameScreen { } } + */ public void addItem(Item item){ switch(item.getId()){ diff --git a/core/src/com/dungeoncrawler/view/MapGenerator.java b/core/src/com/dungeoncrawler/view/MapGenerator.java index f527dfe..8967787 100644 --- a/core/src/com/dungeoncrawler/view/MapGenerator.java +++ b/core/src/com/dungeoncrawler/view/MapGenerator.java @@ -314,9 +314,9 @@ public class MapGenerator { layers.add(dynamicLayer); layers.add(staticLayer); - for(int i = 0; i < r.getItem().length; i++){ - if(r.getItem()[i] != null){ - ItemContainer container = r.getItem()[i]; + for(int i = 0; i < r.getItems().size(); i++){ + if(r.getItems().get(i) != null){ + ItemContainer container = r.getItems().get(i); Item item = container.getItem(); if(item.getId() == 2){