From 4617ae53584520a741f45770e17a2a253717f83a Mon Sep 17 00:00:00 2001 From: fred-boy Date: Wed, 25 Apr 2018 19:55:51 +0700 Subject: [PATCH] Add more blocks --- android/assets/terrain.png | Bin 9191 -> 24015 bytes .../cavecraft/game/GameRenderer.java | 19 ++++--- .../cavecraft/game/GameWorld.java | 2 +- .../ru/deadsoftware/cavecraft/game/Items.java | 50 +++++++++++------- .../cavecraft/game/objects/Block.java | 19 ++++--- .../cavecraft/menu/MenuRenderer.java | 2 +- .../deadsoftware/cavecraft/misc/Assets.java | 2 +- 7 files changed, 59 insertions(+), 35 deletions(-) diff --git a/android/assets/terrain.png b/android/assets/terrain.png index 11be603c04fcd1a53fa7ce91fa8363cd4ae2a20f..28bfb43f168fd1dd8a6593b75a2ec532f4615db1 100644 GIT binary patch literal 24015 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 literal 9191 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 Sqk&g)K)R0%G|L{^zxW?v2g}_6 diff --git a/core/src/ru/deadsoftware/cavecraft/game/GameRenderer.java b/core/src/ru/deadsoftware/cavecraft/game/GameRenderer.java index 3ffc0ae..648e785 100644 --- a/core/src/ru/deadsoftware/cavecraft/game/GameRenderer.java +++ b/core/src/ru/deadsoftware/cavecraft/game/GameRenderer.java @@ -28,14 +28,19 @@ public class GameRenderer extends Renderer { if (maxY>gameProc.world.getHeight()) maxY = gameProc.world.getHeight(); for (int y=minY; y0){ - } else if (gameProc.world.getBackMap(x,y)>0) { + if ((gameProc.world.getForeMap(x,y)==0 || Items.BLOCKS.getValueAt(gameProc.world.getForeMap(x,y)).transparent) + && gameProc.world.getBackMap(x,y)>0) { spriteBatch.draw( - Items.BLOCKS.getValueAt(gameProc.world.getBackMap(x,y)).getTexture(), + Assets.blockTextures[Items.BLOCKS.getValueAt(gameProc.world.getBackMap(x,y)).getTexture()], x * 16 - camera.position.x,y * 16 - camera.position.y); Assets.shade.setPosition(x * 16 - camera.position.x,y * 16 - camera.position.y); Assets.shade.draw(spriteBatch); } + if (gameProc.world.getForeMap(x,y)>0 && Items.BLOCKS.getValueAt(gameProc.world.getForeMap(x,y)).background) { + spriteBatch.draw( + Assets.blockTextures[Items.BLOCKS.getValueAt(gameProc.world.getForeMap(x,y)).getTexture()], + x * 16 - camera.position.x,y * 16 - camera.position.y); + } } } } @@ -51,7 +56,7 @@ public class GameRenderer extends Renderer { for (int x=minX; x0) { spriteBatch.draw( - Items.BLOCKS.getValueAt(gameProc.world.getForeMap(x,y)).getTexture(), + Assets.blockTextures[Items.BLOCKS.getValueAt(gameProc.world.getForeMap(x,y)).getTexture()], x * 16 - camera.position.x,y * 16 - camera.position.y); } } @@ -119,13 +124,13 @@ public class GameRenderer extends Renderer { y+18+(gameProc.creativeScroll*(72/(gameProc.maxCreativeScroll+1)))); for (int i=gameProc.creativeScroll*40; i<(gameProc.creativeScroll+1)*40; i++) { if (i>0 && i0) - spriteBatch.draw(Items.BLOCKS.getValueAt(gameProc.player.inventory[i]).getTexture(), + spriteBatch.draw(Assets.blockTextures[Items.BLOCKS.getValueAt(gameProc.player.inventory[i]).getTexture()], x+8+i*18, y+Assets.creativeInv.getRegionHeight()-24); } } @@ -140,7 +145,7 @@ public class GameRenderer extends Renderer { spriteBatch.draw(Assets.invBar, camera.viewportWidth/2 - Assets.invBar.getRegionWidth()/2, 0); for (int i=0; i<9; i++) { if (gameProc.player.inventory[i]>0) { - spriteBatch.draw(Items.BLOCKS.getValueAt(gameProc.player.inventory[i]).getTexture(), + spriteBatch.draw(Assets.blockTextures[Items.BLOCKS.getValueAt(gameProc.player.inventory[i]).getTexture()], camera.viewportWidth/2 - Assets.invBar.getRegionWidth()/2+3+i*20, 3); } diff --git a/core/src/ru/deadsoftware/cavecraft/game/GameWorld.java b/core/src/ru/deadsoftware/cavecraft/game/GameWorld.java index 7885d2e..0c3ac52 100644 --- a/core/src/ru/deadsoftware/cavecraft/game/GameWorld.java +++ b/core/src/ru/deadsoftware/cavecraft/game/GameWorld.java @@ -77,7 +77,7 @@ public class GameWorld { } public void placeToBackground(int x, int y, int value) { - if (value==0 || (getBackMap(x,y) == 0 && !Items.BLOCKS.getValueAt(value).foreground)) { + if (value==0 || (getBackMap(x,y) == 0 && !Items.BLOCKS.getValueAt(value).background)) { setBackMap(x,y,value); } } diff --git a/core/src/ru/deadsoftware/cavecraft/game/Items.java b/core/src/ru/deadsoftware/cavecraft/game/Items.java index e28062f..93b9a1f 100644 --- a/core/src/ru/deadsoftware/cavecraft/game/Items.java +++ b/core/src/ru/deadsoftware/cavecraft/game/Items.java @@ -10,24 +10,38 @@ public class Items { public static void loadBlocks() { BLOCKS.put("none", null); - BLOCKS.put("stone", new Block(0,0,16,16, Assets.blockTextures[0])); - BLOCKS.put("grass", new Block(0,0,16,16,Assets.blockTextures[1])); - BLOCKS.put("dirt", new Block(0,0,16,16,Assets.blockTextures[2])); - BLOCKS.put("cobblestone", new Block(0,0,16,16,Assets.blockTextures[3])); - BLOCKS.put("planks", new Block(0,0,16,16,Assets.blockTextures[4])); - BLOCKS.put("sapling", new Block(0,0,16,16,Assets.blockTextures[5],false,true)); - BLOCKS.put("bedrock", new Block(0,0,16,16,Assets.blockTextures[6])); - BLOCKS.put("water", new Block(0,0,16,16,Assets.blockTextures[7],false,true)); - BLOCKS.put("lava", new Block(0,0,16,16,Assets.blockTextures[8],false,true)); - BLOCKS.put("sand", new Block(0,0,16,16,Assets.blockTextures[9])); - BLOCKS.put("gravel", new Block(0,0,16,16,Assets.blockTextures[10])); - BLOCKS.put("gold_ore", new Block(0,0,16,16,Assets.blockTextures[11])); - BLOCKS.put("iron_ore", new Block(0,0,16,16,Assets.blockTextures[12])); - BLOCKS.put("coal_ore", new Block(0,0,16,16,Assets.blockTextures[13])); - BLOCKS.put("log", new Block(0,0,16,16,Assets.blockTextures[14])); - BLOCKS.put("leaves", new Block(0,0,16,16,Assets.blockTextures[15])); - BLOCKS.put("sponge", new Block(0,0,16,16,Assets.blockTextures[16])); - BLOCKS.put("glass", new Block(0,0,16,16,Assets.blockTextures[17])); + BLOCKS.put("stone", new Block(0)); + BLOCKS.put("grass", new Block(1)); + BLOCKS.put("dirt", new Block(2)); + BLOCKS.put("cobblestone", new Block(3)); + BLOCKS.put("planks", new Block(4)); + BLOCKS.put("sapling", new Block(5,false,false,true)); + BLOCKS.put("bedrock", new Block(6)); + BLOCKS.put("water", new Block(7,false,false,true)); + BLOCKS.put("lava", new Block(8,false,false,false)); + BLOCKS.put("sand", new Block(9)); + BLOCKS.put("gravel", new Block(10)); + BLOCKS.put("gold_ore", new Block(11)); + BLOCKS.put("iron_ore", new Block(12)); + BLOCKS.put("coal_ore", new Block(13)); + BLOCKS.put("log", new Block(14)); + BLOCKS.put("leaves", new Block(15)); + BLOCKS.put("sponge", new Block(16)); + BLOCKS.put("glass", new Block(17,true,false,true)); + BLOCKS.put("lapis_ore", new Block(18)); + BLOCKS.put("lapis_block", new Block(19)); + BLOCKS.put("sandstone", new Block(20)); + BLOCKS.put("noteblock", new Block(21)); + BLOCKS.put("bed", new Block(0,8,16,8,22,false,true,true)); + BLOCKS.put("cobweb", new Block(24,false,false,true)); + BLOCKS.put("tallgrass", new Block(25,false,false,true)); + BLOCKS.put("deadbush", new Block(26,false,false,true)); + BLOCKS.put("brick_block", new Block(27)); + BLOCKS.put("dandelion", new Block(28,false,false,true)); + BLOCKS.put("rose", new Block(29,false,false,true)); + BLOCKS.put("brown_mushroom", new Block(30,false,false,true)); + BLOCKS.put("red_mushroom", new Block(31,false,false,true)); + BLOCKS.put("wool", new Block(32,false,true,false)); } public static void load() { diff --git a/core/src/ru/deadsoftware/cavecraft/game/objects/Block.java b/core/src/ru/deadsoftware/cavecraft/game/objects/Block.java index a1696f6..4fa4736 100644 --- a/core/src/ru/deadsoftware/cavecraft/game/objects/Block.java +++ b/core/src/ru/deadsoftware/cavecraft/game/objects/Block.java @@ -6,25 +6,30 @@ import com.badlogic.gdx.math.Rectangle; public class Block { private int x,y,w,h; - private TextureRegion texture; + private int texture; - public boolean collision, foreground; + public boolean collision, background, transparent; - public Block(int x, int y, int w, int h, TextureRegion texture) { - this(x,y,w,h,texture, true, false); + public Block(int texture) { + this(0,0,16,16,texture, true, false, false); } - public Block(int x, int y, int w, int h, TextureRegion texture, boolean collision, boolean foreground) { + public Block(int texture, boolean collision, boolean background, boolean transparent) { + this(0,0,16,16,texture, collision, background, transparent); + } + + public Block(int x, int y, int w, int h, int texture, boolean collision, boolean background, boolean transparent) { this.x = x; this.y = y; this.w = w; this.h = h; this.texture = texture; this.collision = collision; - this.foreground = foreground; + this.background = background; + this.transparent = transparent; } - public TextureRegion getTexture() { + public int getTexture() { return texture; } diff --git a/core/src/ru/deadsoftware/cavecraft/menu/MenuRenderer.java b/core/src/ru/deadsoftware/cavecraft/menu/MenuRenderer.java index acfad3d..da04d46 100644 --- a/core/src/ru/deadsoftware/cavecraft/menu/MenuRenderer.java +++ b/core/src/ru/deadsoftware/cavecraft/menu/MenuRenderer.java @@ -61,7 +61,7 @@ public class MenuRenderer extends Renderer { spriteBatch.begin(); for (int x=0; x<=getWidth()/16; x++) for (int y=0; y<=getHeight()/16; y++) { - spriteBatch.draw(Items.BLOCKS.get("dirt").getTexture(), x * 16, y * 16); + spriteBatch.draw(Assets.blockTextures[Items.BLOCKS.get("dirt").getTexture()], x * 16, y * 16); spriteBatch.draw(Assets.shade,x*16,y*16); } spriteBatch.draw(Assets.gameLogo, getWidth()/2-Assets.gameLogo.getWidth()/2, 0); diff --git a/core/src/ru/deadsoftware/cavecraft/misc/Assets.java b/core/src/ru/deadsoftware/cavecraft/misc/Assets.java index f3d1226..28f3508 100644 --- a/core/src/ru/deadsoftware/cavecraft/misc/Assets.java +++ b/core/src/ru/deadsoftware/cavecraft/misc/Assets.java @@ -10,7 +10,7 @@ import ru.deadsoftware.cavecraft.CaveGame; public class Assets { - public static final int BLOCK_TEXTURES = 18; + public static final int BLOCK_TEXTURES = 47; private static GlyphLayout layout; -- 2.29.2