diff --git a/core/assets/sprites/healingPotion.png b/core/assets/sprites/healingPotion.png new file mode 100644 index 0000000..de1c734 Binary files /dev/null and b/core/assets/sprites/healingPotion.png differ diff --git a/core/assets/sprites/hud.png b/core/assets/sprites/hud.png index c552bcd..1f3d8c8 100644 Binary files a/core/assets/sprites/hud.png and b/core/assets/sprites/hud.png differ diff --git a/core/assets/sprites/itemTest.png b/core/assets/sprites/itemTest.png new file mode 100644 index 0000000..7046e46 Binary files /dev/null and b/core/assets/sprites/itemTest.png differ diff --git a/core/assets/sprites/key.png b/core/assets/sprites/key.png new file mode 100644 index 0000000..2376f7f Binary files /dev/null and b/core/assets/sprites/key.png differ diff --git a/core/assets/sprites/torch.png b/core/assets/sprites/torch.png index 0aa2c84..d4d5dfb 100644 Binary files a/core/assets/sprites/torch.png and b/core/assets/sprites/torch.png differ diff --git a/core/src/com/dungeoncrawler/control/Controller.java b/core/src/com/dungeoncrawler/control/Controller.java index f067451..f505277 100644 --- a/core/src/com/dungeoncrawler/control/Controller.java +++ b/core/src/com/dungeoncrawler/control/Controller.java @@ -23,6 +23,10 @@ import com.dungeoncrawler.model.DungeonGenerator; 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.items.Key; +import com.dungeoncrawler.model.items.Potion; +import com.dungeoncrawler.model.items.Sword; public class Controller extends ApplicationAdapter implements InputProcessor{ SpriteBatch batch; @@ -117,6 +121,8 @@ public class Controller extends ApplicationAdapter implements InputProcessor{ } } },0,1f); + + } @@ -313,12 +319,60 @@ public class Controller extends ApplicationAdapter implements InputProcessor{ d.setCurrentEntities(m.playerAttack(d.getCurrentEntities(), d.getPlayer(), batch)); } } - /*if(keycode == Input.Keys.F){ + if(keycode == Input.Keys.F){ + if(v != null){} + if(m != null){ + Item k = new Sword(1); + m.addItem(k); + //d.setCurrentItemContainer(m.playerPickUp(d.getCurrentItemContainer(), d.getPlayer())); + } + } + + + if(keycode == Input.Keys.G){ if(v != null){} if(m != null){ - d.setCurrentItemContainer(m.playerPickUp(d.getCurrentItemContainer(), d.getPlayer())); + Item k = new Potion(1); + m.addItem(k); + //d.setCurrentItemContainer(m.playerPickUp(d.getCurrentItemContainer(), d.getPlayer())); } - }*/ + } + if(keycode == Input.Keys.H){ + if(v != null){} + if(m != null){ + Item k = new Key(1); + m.addItem(k); + //d.setCurrentItemContainer(m.playerPickUp(d.getCurrentItemContainer(), d.getPlayer())); + } + } + + if(keycode == Input.Keys.NUM_1){ + m.moveItem(0); + } + if(keycode == Input.Keys.NUM_2){ + m.moveItem(1); + } + if(keycode == Input.Keys.NUM_3){ + m.moveItem(2); + } + if(keycode == Input.Keys.NUM_4){ + m.moveItem(3); + } + if(keycode == Input.Keys.NUM_5){ + m.moveItem(4); + } + if(keycode == Input.Keys.NUM_6){ + m.moveItem(5); + } + if(keycode == Input.Keys.NUM_7){ + m.moveItem(6); + } + if(keycode == Input.Keys.NUM_8){ + m.moveItem(7); + } + + + if(keycode == Input.Keys.UP){ volume += 0.1f; @@ -400,6 +454,8 @@ public class Controller extends ApplicationAdapter implements InputProcessor{ v.cleanUp(); v = null; m = new GameScreen(d, volume); + + return true; case 1: v.cleanUp(); @@ -411,7 +467,7 @@ public class Controller extends ApplicationAdapter implements InputProcessor{ return true; } if(m != null){ - + return true; } diff --git a/core/src/com/dungeoncrawler/model/Inventory.java b/core/src/com/dungeoncrawler/model/Inventory.java index 79c605e..961c777 100644 --- a/core/src/com/dungeoncrawler/model/Inventory.java +++ b/core/src/com/dungeoncrawler/model/Inventory.java @@ -5,8 +5,12 @@ public class Inventory { Item items[][]; Item equipped[]; + int width; + int height; public Inventory(int width, int height){ + this.width = width; + this.height = height; items = new Item[width][height]; equipped = new Item[2]; } @@ -44,5 +48,11 @@ public class Inventory { return items[x][y]; } + public int getWidth(){ + return width; + } + public int getHeight(){ + return height; + } } diff --git a/core/src/com/dungeoncrawler/model/entities/Player.java b/core/src/com/dungeoncrawler/model/entities/Player.java index b069463..4e9c7d7 100644 --- a/core/src/com/dungeoncrawler/model/entities/Player.java +++ b/core/src/com/dungeoncrawler/model/entities/Player.java @@ -31,5 +31,8 @@ public class Player extends Entity { public void pickUp(Item item){ inv.addItem(item); } + public Inventory getInv(){ + return inv; + } } diff --git a/core/src/com/dungeoncrawler/view/GameScreen.java b/core/src/com/dungeoncrawler/view/GameScreen.java index 5690415..9357ad1 100644 --- a/core/src/com/dungeoncrawler/view/GameScreen.java +++ b/core/src/com/dungeoncrawler/view/GameScreen.java @@ -16,6 +16,7 @@ import com.badlogic.gdx.math.Rectangle; import com.badlogic.gdx.utils.Timer; import com.dungeoncrawler.model.Dungeon; import com.dungeoncrawler.model.Entity; +import com.dungeoncrawler.model.Item; import com.dungeoncrawler.model.ItemContainer; import com.dungeoncrawler.model.entities.*; import java.util.ArrayList; @@ -56,6 +57,15 @@ public class GameScreen { // Sound public Music music; + //Inventory TEST + Texture HudTexture; + Sprite HudSprite; + Texture[] InventoryItemTextures; + Sprite[] InventoryItemSprites; + float[] invXPos; + float[] invYPos; + + public GameScreen(Dungeon d, float volume) { //CONTROLS /* @@ -89,7 +99,7 @@ public class GameScreen { m = new Map(); camera = new OrthographicCamera(1, h/w); - camera.translate(300f, 200f); + camera.translate(175f, 215f); MapGenerator mg = new MapGenerator(new Texture(Gdx.files.internal("tilesets/haha.png"))); @@ -114,11 +124,42 @@ public class GameScreen { } } },0, 0.1f); - + + //Inventory TEST + HudTexture = new Texture("sprites/HUD.png"); + HudSprite = new Sprite(HudTexture); + HudSprite.setX(-HudSprite.getWidth()); + HudSprite.setY(20f); + InventoryItemTextures = new Texture[8]; + InventoryItemSprites = new Sprite[8]; + invXPos = new float[8]; + invYPos = new float[8]; + //Equipped 1 + invXPos[0] = HudSprite.getX() + 37f; + invYPos[0] = HudSprite.getY() + 112f; + //Equipped 2 + invXPos[1] = HudSprite.getX() + 85f; + invYPos[1] = HudSprite.getY() + 112f; + + invXPos[2] = HudSprite.getX() + 10f; + invYPos[2] = HudSprite.getY() + 61f; + invXPos[3] = HudSprite.getX() + 61f; + invYPos[3] = HudSprite.getY() + 61f; + invXPos[4] = HudSprite.getX() + 112f; + invYPos[4] = HudSprite.getY() + 61f; + + invXPos[5] = HudSprite.getX() + 10f; + invYPos[5] = HudSprite.getY() + 10f; + invXPos[6] = HudSprite.getX() + 61f; + invYPos[6] = HudSprite.getY() + 10f; + invXPos[7] = HudSprite.getX() + 112f; + invYPos[7] = HudSprite.getY() + 10f; + } public void render (SpriteBatch batch, Player p, Entity[] e, Entity[] arrows, int tileX, int tileY, int level, int roomPosX, int roomPosY) { + Gdx.gl.glClearColor(0, 0, 0, 1); Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT); @@ -183,6 +224,15 @@ public class GameScreen { //BATCH batch.begin(); + HudSprite.draw(batch); + + //DRAWING INVENTORY + for(int i = 0; i < InventoryItemSprites.length ;i++){ + if(InventoryItemSprites[i] != null){ + InventoryItemSprites[i].draw(batch); + } + } + for(AnimatedObject object : objects){ object.getSprite().draw(batch); } @@ -349,6 +399,61 @@ public class GameScreen { } return e; } + + public void moveItem(int i){ + if(i == 0){ + if(InventoryItemSprites[i] != null){ + for(int n = 2; n < InventoryItemSprites.length ; n++){ + if(InventoryItemSprites[n] == null){ + InventoryItemTextures[n] = InventoryItemTextures[i]; + InventoryItemSprites[n] = InventoryItemSprites[i]; + } + } + } + } + } + + + public void addItem(Item item){ + switch(item.getId()){ + case 0: + for(int i = 2; i < InventoryItemSprites.length; i++){ + if(InventoryItemSprites[i] == null){ + //InventoryItemTextures[i] = new Texture("sprites/itemTest.png"); + InventoryItemTextures[i] = new Texture("sprites/key.png"); + InventoryItemSprites[i] = new Sprite(InventoryItemTextures[i]); + InventoryItemSprites[i].setX(invXPos[i]); + InventoryItemSprites[i].setY(invYPos[i]); + break; + } + } + break; + case 1: + for(int i = 2; i < InventoryItemSprites.length; i++){ + if(InventoryItemSprites[i] == null){ + //InventoryItemTextures[i] = new Texture("sprites/itemTest.png"); + InventoryItemTextures[i] = new Texture("sprites/healingPotion.png"); + InventoryItemSprites[i] = new Sprite(InventoryItemTextures[i]); + InventoryItemSprites[i].setX(invXPos[i]); + InventoryItemSprites[i].setY(invYPos[i]); + break; + } + } + break; + case 2: + for(int i = 2; i < InventoryItemSprites.length; i++){ + if(InventoryItemSprites[i] == null){ + //InventoryItemTextures[i] = new Texture("sprites/itemTest.png"); + InventoryItemTextures[i] = new Texture("sprites/sword.png"); + InventoryItemSprites[i] = new Sprite(InventoryItemTextures[i]); + InventoryItemSprites[i].setX(invXPos[i]); + InventoryItemSprites[i].setY(invYPos[i]); + break; + } + } + break; + } + } /* public ItemContainer playerPickUp(ItemContainer[] items, Player p){ for(int i = 0; i < items.length; i++){ @@ -361,9 +466,9 @@ public class GameScreen { } return items; - } - */ + */ + public void cleanUp(){ music.dispose(); }