From 4eb1f6f24fb76c0336394b85393e801fd0b99da4 Mon Sep 17 00:00:00 2001 From: fred-boy Date: Tue, 5 Mar 2019 01:13:33 +0700 Subject: [PATCH] Move items to JSON Split textures Misc improvements --- android/assets/game_items.json | 555 ++++++++++++++++++ android/assets/textures/bed_l.png | Bin 0 -> 448 bytes android/assets/textures/bed_r.png | Bin 0 -> 490 bytes android/assets/textures/bedrock.png | Bin 0 -> 225 bytes android/assets/textures/bookshelf.png | Bin 0 -> 681 bytes android/assets/textures/brick_slab.png | Bin 0 -> 406 bytes android/assets/textures/bricks.png | Bin 0 -> 452 bytes android/assets/textures/cactus.png | Bin 0 -> 368 bytes android/assets/textures/cake.png | Bin 0 -> 286 bytes android/assets/textures/clay.png | Bin 0 -> 539 bytes android/assets/textures/coal_block.png | Bin 0 -> 313 bytes android/assets/textures/coal_ore.png | Bin 0 -> 460 bytes android/assets/textures/cobblestone.png | Bin 0 -> 562 bytes android/assets/textures/cobblestone_mossy.png | Bin 0 -> 794 bytes android/assets/textures/cobblestone_slab.png | Bin 0 -> 545 bytes android/assets/textures/crafting_table.png | Bin 0 -> 602 bytes android/assets/textures/dandelion.png | Bin 0 -> 145 bytes android/assets/textures/deadbush.png | Bin 0 -> 334 bytes android/assets/textures/diamond_block.png | Bin 0 -> 445 bytes android/assets/textures/diamond_ore.png | Bin 0 -> 584 bytes android/assets/textures/dirt.png | Bin 0 -> 266 bytes android/assets/textures/double_stone_slab.png | Bin 0 -> 366 bytes android/assets/textures/furnace_off.png | Bin 0 -> 512 bytes android/assets/textures/furnace_on.png | Bin 0 -> 569 bytes android/assets/textures/glass.png | Bin 0 -> 243 bytes android/assets/textures/gold_block.png | Bin 0 -> 249 bytes android/assets/textures/gold_ore.png | Bin 0 -> 590 bytes android/assets/textures/grass.png | Bin 0 -> 408 bytes android/assets/textures/gravel.png | Bin 0 -> 565 bytes android/assets/textures/iron_bars.png | Bin 0 -> 314 bytes android/assets/textures/iron_block.png | Bin 0 -> 241 bytes android/assets/textures/iron_ore.png | Bin 0 -> 561 bytes android/assets/textures/ladder.png | Bin 0 -> 282 bytes android/assets/textures/lapis_block.png | Bin 0 -> 506 bytes android/assets/textures/lapis_ore.png | Bin 0 -> 637 bytes android/assets/textures/lava.png | Bin 0 -> 392 bytes android/assets/textures/lava_12.png | Bin 0 -> 398 bytes android/assets/textures/lava_16.png | Bin 0 -> 392 bytes android/assets/textures/lava_4.png | Bin 0 -> 395 bytes android/assets/textures/lava_8.png | Bin 0 -> 398 bytes android/assets/textures/leaves.png | Bin 0 -> 753 bytes android/assets/textures/log.png | Bin 0 -> 482 bytes android/assets/textures/mushroom_brown.png | Bin 0 -> 190 bytes android/assets/textures/mushroom_red.png | Bin 0 -> 197 bytes android/assets/textures/noteblock.png | Bin 0 -> 339 bytes android/assets/textures/obsidian.png | Bin 0 -> 563 bytes android/assets/textures/planks.png | Bin 0 -> 424 bytes android/assets/textures/rose.png | Bin 0 -> 355 bytes android/assets/textures/sand.png | Bin 0 -> 541 bytes android/assets/textures/sandstone.png | Bin 0 -> 453 bytes android/assets/textures/sandstone_slab.png | Bin 0 -> 338 bytes android/assets/textures/sapling.png | Bin 0 -> 489 bytes android/assets/textures/sponge.png | Bin 0 -> 491 bytes android/assets/textures/sponge_wet.png | Bin 0 -> 422 bytes android/assets/textures/stone.png | Bin 0 -> 331 bytes android/assets/textures/stone_slab.png | Bin 0 -> 419 bytes android/assets/textures/stonebrick.png | Bin 0 -> 361 bytes android/assets/textures/stonebrick_slab.png | Bin 0 -> 299 bytes android/assets/textures/tallgrass.png | Bin 0 -> 602 bytes android/assets/textures/water.png | Bin 0 -> 365 bytes android/assets/textures/water_12.png | Bin 0 -> 376 bytes android/assets/textures/water_16.png | Bin 0 -> 365 bytes android/assets/textures/water_4.png | Bin 0 -> 372 bytes android/assets/textures/water_8.png | Bin 0 -> 374 bytes android/assets/textures/web.png | Bin 0 -> 240 bytes android/assets/textures/wooden_slab.png | Bin 0 -> 353 bytes android/assets/textures/wool.png | Bin 0 -> 446 bytes android/assets/textures/wool_black.png | Bin 0 -> 417 bytes android/assets/textures/wool_blue.png | Bin 0 -> 463 bytes android/assets/textures/wool_brown.png | Bin 0 -> 456 bytes android/assets/textures/wool_cyan.png | Bin 0 -> 443 bytes android/assets/textures/wool_gray.png | Bin 0 -> 427 bytes android/assets/textures/wool_green.png | Bin 0 -> 454 bytes android/assets/textures/wool_lightblue.png | Bin 0 -> 491 bytes android/assets/textures/wool_lightgray.png | Bin 0 -> 441 bytes android/assets/textures/wool_lime.png | Bin 0 -> 448 bytes android/assets/textures/wool_magenta.png | Bin 0 -> 477 bytes android/assets/textures/wool_orange.png | Bin 0 -> 507 bytes android/assets/textures/wool_pink.png | Bin 0 -> 516 bytes android/assets/textures/wool_purple.png | Bin 0 -> 477 bytes android/assets/textures/wool_red.png | Bin 0 -> 430 bytes android/assets/textures/wool_yellow.png | Bin 0 -> 509 bytes android/build.gradle | 1 + .../ru/deadsoftware/cavedroid/GameScreen.java | 4 +- .../cavedroid/game/GameItems.java | 381 +++--------- .../cavedroid/game/GamePhysics.java | 2 +- .../deadsoftware/cavedroid/game/GameProc.java | 39 +- .../cavedroid/game/GameRenderer.java | 83 +-- .../cavedroid/game/GameWorld.java | 47 +- .../cavedroid/game/mobs/FallingGravel.java | 2 +- .../cavedroid/game/mobs/FallingSand.java | 2 +- .../cavedroid/game/objects/Block.java | 66 ++- .../cavedroid/game/objects/Item.java | 28 +- .../cavedroid/game/objects/Player.java | 22 - .../cavedroid/menu/MenuRenderer.java | 4 +- .../deadsoftware/cavedroid/misc/Assets.java | 34 +- .../cavedroid/desktop/DesktopLauncher.java | 2 +- 97 files changed, 783 insertions(+), 489 deletions(-) create mode 100644 android/assets/game_items.json create mode 100644 android/assets/textures/bed_l.png create mode 100644 android/assets/textures/bed_r.png create mode 100644 android/assets/textures/bedrock.png create mode 100644 android/assets/textures/bookshelf.png create mode 100644 android/assets/textures/brick_slab.png create mode 100644 android/assets/textures/bricks.png create mode 100644 android/assets/textures/cactus.png create mode 100644 android/assets/textures/cake.png create mode 100644 android/assets/textures/clay.png create mode 100644 android/assets/textures/coal_block.png create mode 100644 android/assets/textures/coal_ore.png create mode 100644 android/assets/textures/cobblestone.png create mode 100644 android/assets/textures/cobblestone_mossy.png create mode 100644 android/assets/textures/cobblestone_slab.png create mode 100644 android/assets/textures/crafting_table.png create mode 100644 android/assets/textures/dandelion.png create mode 100644 android/assets/textures/deadbush.png create mode 100644 android/assets/textures/diamond_block.png create mode 100644 android/assets/textures/diamond_ore.png create mode 100644 android/assets/textures/dirt.png create mode 100644 android/assets/textures/double_stone_slab.png create mode 100644 android/assets/textures/furnace_off.png create mode 100644 android/assets/textures/furnace_on.png create mode 100644 android/assets/textures/glass.png create mode 100644 android/assets/textures/gold_block.png create mode 100644 android/assets/textures/gold_ore.png create mode 100644 android/assets/textures/grass.png create mode 100644 android/assets/textures/gravel.png create mode 100644 android/assets/textures/iron_bars.png create mode 100644 android/assets/textures/iron_block.png create mode 100644 android/assets/textures/iron_ore.png create mode 100644 android/assets/textures/ladder.png create mode 100644 android/assets/textures/lapis_block.png create mode 100644 android/assets/textures/lapis_ore.png create mode 100644 android/assets/textures/lava.png create mode 100644 android/assets/textures/lava_12.png create mode 100644 android/assets/textures/lava_16.png create mode 100644 android/assets/textures/lava_4.png create mode 100644 android/assets/textures/lava_8.png create mode 100644 android/assets/textures/leaves.png create mode 100644 android/assets/textures/log.png create mode 100644 android/assets/textures/mushroom_brown.png create mode 100644 android/assets/textures/mushroom_red.png create mode 100644 android/assets/textures/noteblock.png create mode 100644 android/assets/textures/obsidian.png create mode 100644 android/assets/textures/planks.png create mode 100644 android/assets/textures/rose.png create mode 100644 android/assets/textures/sand.png create mode 100644 android/assets/textures/sandstone.png create mode 100644 android/assets/textures/sandstone_slab.png create mode 100644 android/assets/textures/sapling.png create mode 100644 android/assets/textures/sponge.png create mode 100644 android/assets/textures/sponge_wet.png create mode 100644 android/assets/textures/stone.png create mode 100644 android/assets/textures/stone_slab.png create mode 100644 android/assets/textures/stonebrick.png create mode 100644 android/assets/textures/stonebrick_slab.png create mode 100644 android/assets/textures/tallgrass.png create mode 100644 android/assets/textures/water.png create mode 100644 android/assets/textures/water_12.png create mode 100644 android/assets/textures/water_16.png create mode 100644 android/assets/textures/water_4.png create mode 100644 android/assets/textures/water_8.png create mode 100644 android/assets/textures/web.png create mode 100644 android/assets/textures/wooden_slab.png create mode 100644 android/assets/textures/wool.png create mode 100644 android/assets/textures/wool_black.png create mode 100644 android/assets/textures/wool_blue.png create mode 100644 android/assets/textures/wool_brown.png create mode 100644 android/assets/textures/wool_cyan.png create mode 100644 android/assets/textures/wool_gray.png create mode 100644 android/assets/textures/wool_green.png create mode 100644 android/assets/textures/wool_lightblue.png create mode 100644 android/assets/textures/wool_lightgray.png create mode 100644 android/assets/textures/wool_lime.png create mode 100644 android/assets/textures/wool_magenta.png create mode 100644 android/assets/textures/wool_orange.png create mode 100644 android/assets/textures/wool_pink.png create mode 100644 android/assets/textures/wool_purple.png create mode 100644 android/assets/textures/wool_red.png create mode 100644 android/assets/textures/wool_yellow.png diff --git a/android/assets/game_items.json b/android/assets/game_items.json new file mode 100644 index 0000000..0bc31cc --- /dev/null +++ b/android/assets/game_items.json @@ -0,0 +1,555 @@ +{ + "blocks": { + "none": { + "collision": false, + "transparent": true + }, + "stone": { + "hp": 450, + "drop": "cobblestone" + }, + "grass": { + "hp": 54, + "drop": "dirt" + }, + "dirt": { + "hp": 45 + }, + "cobblestone": { + "hp": 600 + }, + "planks": { + "hp": 180 + }, + "sapling": { + "hp": 0, + "collision": false, + "background": false, + "transparent": true, + "block_required": true + }, + "bedrock": { + "hp": -1 + }, + "water": { + "hp": -1, + "collision": false, + "background": false, + "transparent": true, + "fluid": true, + "meta": "water" + }, + "lava": { + "hp": -1, + "collision": false, + "background": false, + "fluid": true, + "meta": "lava" + }, + "sand": { + "hp": 45 + }, + "gravel": { + "hp": 54 + }, + "gold_ore": { + "hp": 900 + }, + "iron_ore": { + "hp": 900 + }, + "coal_ore":{ + "hp": 900, + "drop": "coal" + }, + "log": { + "hp": 180 + }, + "leaves": { + "hp": 21 + }, + "sponge": { + "hp": 54 + }, + "glass": { + "hp": 27, + "drop": "none", + "background": false, + "transparent": true + }, + "lapis_ore": { + "hp": 900, + "drop": "lapis" + }, + "lapis_block": { + "hp": 900 + }, + "sandstone": { + "hp": 240 + }, + "noteblock": { + "hp": 75 + }, + "bed_l": { + "hp": 21, + "drop": "none", + "collision": false, + "background": true, + "transparent": true + }, + "bed_r": { + "hp": 21, + "drop": "none", + "collision": false, + "background": true, + "transparent": true + }, + "web": { + "hp": 1200, + "collision": false, + "background": false, + "transparent": true + }, + "tallgrass": { + "hp": 0, + "collision": false, + "background": false, + "transparent": true, + "block_required": true + }, + "deadbush": { + "hp": 0, + "collision": false, + "background": false, + "transparent": true, + "block_required": true + }, + "bricks": { + "hp": 600 + }, + "dandelion": { + "hp": 0, + "collision": false, + "background": false, + "transparent": true, + "block_required": true + }, + "rose": { + "hp": 0, + "collision": false, + "background": false, + "transparent": true, + "block_required": true + }, + "mushroom_brown": { + "hp": 0, + "collision": false, + "background": false, + "transparent": true, + "block_required": true + }, + "mushroom_red": { + "hp": 0, + "collision": false, + "background": false, + "transparent": true, + "block_required": true + }, + "wool": { + "hp": 75 + }, + "wool_orange": { + "hp": 75 + }, + "wool_magenta": { + "hp": 75 + }, + "wool_lightblue": { + "hp": 75 + }, + "wool_yellow": { + "hp": 75 + }, + "wool_lime": { + "hp": 75 + }, + "wool_pink": { + "hp": 75 + }, + "wool_gray": { + "hp": 75 + }, + "wool_lightgray": { + "hp": 75 + }, + "wool_cyan": { + "hp": 75 + }, + "wool_purple": { + "hp": 75 + }, + "wool_blue": { + "hp": 75 + }, + "wool_brown": { + "hp": 75 + }, + "wool_green": { + "hp": 75 + }, + "wool_red": { + "hp": 75 + }, + "wool_black": { + "hp": 75 + }, + "gold_block": { + "hp": 900 + }, + "iron_block": { + "hp": 1500 + }, + "stone_slab": { + "top": 8, + "hp": 600, + "transparent": true + }, + "double_stone_slab": { + "hp": 600, + "drop": "stone_slab" + }, + "sandstone_slab": { + "top": 8, + "hp": 600, + "transparent": true + }, + "wooden_slab": { + "top": 8, + "hp": 180, + "transparent": true + }, + "cobblestone_slab": { + "top": 8, + "hp": 600, + "transparent": true + }, + "brick_slab": { + "top": 8, + "hp": 600, + "transparent": true + }, + "stonebrick": { + "hp": 450 + }, + "stonebrick_slab": { + "top": 8, + "hp": 450, + "transparent": true + }, + "cactus": { + "left": 1, + "right": 1, + "hp": 39, + "transparent": true, + "block_required": true + }, + "water_16": { + "hp": -1, + "collision": false, + "background": false, + "transparent": true, + "texture": "water", + "fluid": true, + "meta": "water" + }, + "water_12": { + "hp": -1, + "collision": false, + "background": false, + "transparent": true, + "fluid": true, + "meta": "water" + }, + "water_8": { + "hp": -1, + "collision": false, + "background": false, + "transparent": true, + "fluid": true, + "meta": "water" + }, + "water_4": { + "hp": -1, + "collision": false, + "background": false, + "transparent": true, + "fluid": true, + "meta": "water" + }, + "lava_16": { + "hp": -1, + "collision": false, + "background": false, + "texture": "lava", + "fluid": true, + "meta": "lava" + }, + "lava_12": { + "hp": -1, + "collision": false, + "background": false, + "fluid": true, + "meta": "lava" + }, + "lava_8": { + "hp": -1, + "collision": false, + "background": false, + "fluid": true, + "meta": "lava" + }, + "lava_4": { + "hp": -1, + "collision": false, + "background": false, + "fluid": true, + "meta": "lava" + }, + "obsidian": { + "hp": 1500 + } + }, + + "items": { + "none": { + "name": "", + "type": "block" + }, + "stone": { + "name": "Stone", + "type": "block" + }, + "grass": { + "name": "Grass", + "type": "block" + }, + "dirt": { + "name": "Dirt", + "type": "block" + }, + "cobblestone": { + "name": "Cobblestone", + "type": "block" + }, + "planks": { + "name": "Planks", + "type": "block" + }, + "sapling": { + "name": "Sapling", + "type": "block" + }, + "bedrock": { + "name": "Bedrock", + "type": "block" + }, + "water": { + "name": "Water", + "type": "block" + }, + "lava": { + "name": "Lava", + "type": "block" + }, + "sand": { + "name": "Sand", + "type": "block" + }, + "gravel": { + "name": "Gravel", + "type": "block" + }, + "gold_ore": { + "name": "Golden Ore", + "type": "block" + }, + "iron_ore": { + "name": "Iron Ore", + "type": "block" + }, + "coal_ore": { + "name": "Coal Ore", + "type": "block" + }, + "log": { + "name": "Wood", + "type": "block" + }, + "leaves": { + "name": "Leaves", + "type": "block" + }, + "glass": { + "name": "Glass", + "type": "block" + }, + "lapis_ore": { + "name": "Lapis Ore", + "type": "block" + }, + "lapis_block": { + "name": "Lapis Block", + "type": "block" + }, + "sandstone": { + "name": "Sandstone", + "type": "block" + }, + "web": { + "name": "Cobweb", + "type": "block" + }, + "tallgrass": { + "name": "Tall Grass", + "type": "block" + }, + "deadbush": { + "name": "Dead Bush", + "type": "block" + }, + "bricks": { + "name": "Bricks", + "type": "block" + }, + "dandelion": { + "name": "Dandelion", + "type": "block" + }, + "rose": { + "name": "Rose", + "type": "block" + }, + "mushroom_brown": { + "name": "Mushroom", + "type": "block" + }, + "mushroom_red": { + "name": "Mushroom", + "type": "block" + }, + "wool": { + "name": "Wool", + "type": "block" + }, + "wool_orange": { + "name": "Wool", + "type": "block" + }, + "wool_magenta": { + "name": "Wool", + "type": "block" + }, + "wool_lightblue": { + "name": "Wool", + "type": "block" + }, + "wool_yellow": { + "name": "Wool", + "type": "block" + }, + "wool_lime": { + "name": "Wool", + "type": "block" + }, + "wool_pink": { + "name": "Wool", + "type": "block" + }, + "wool_gray": { + "name": "Wool", + "type": "block" + }, + "wool_lightgray": { + "name": "Wool", + "type": "block" + }, + "wool_cyan": { + "name": "Wool", + "type": "block" + }, + "wool_purple": { + "name": "Wool", + "type": "block" + }, + "wool_blue": { + "name": "Wool", + "type": "block" + }, + "wool_brown": { + "name": "Wool", + "type": "block" + }, + "wool_green": { + "name": "Wool", + "type": "block" + }, + "wool_red": { + "name": "Wool", + "type": "block" + }, + "wool_black": { + "name": "Wool", + "type": "block" + }, + "gold_block": { + "name": "Gold Block", + "type": "block" + }, + "iron_block": { + "name": "Iron Block", + "type": "block" + }, + "stone_slab": { + "name": "Stone Slab", + "type": "block", + "meta": "slab" + }, + "sandstone_slab": { + "name": "Sandstone Slab", + "type": "block", + "meta": "slab" + }, + "wooden_slab": { + "name": "Wooden Slab", + "type": "block", + "meta": "slab" + }, + "cobblestone_slab": { + "name": "Cobblestone Slab", + "type": "block", + "meta": "slab" + }, + "brick_slab": { + "name": "Brick Slab", + "type": "block", + "meta": "slab" + }, + "stonebrick": { + "name": "Stone Brick", + "type": "block" + }, + "stonebrick_slab": { + "name": "Stone Brick Slab", + "type": "block", + "meta": "slab" + }, + "cactus": { + "name": "Cactus", + "type": "block" + }, + "obsidian": { + "name": "Obsidian", + "type": "block" + } + } +} \ No newline at end of file diff --git a/android/assets/textures/bed_l.png b/android/assets/textures/bed_l.png new file mode 100644 index 0000000000000000000000000000000000000000..005a87adbfd798f12df10fe885eb37aafc5d6a8d GIT binary patch literal 448 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=DkBK$x-p&dPkCAbW|YuPggwCJA;Xq4JflE(3*RGeaUuobz*YQ}arITm}Z`qSVBa z)D(sC%#sWRcTeAd6une-1_nkIPZ!4!i_>o>S@(%J3a~y-O|O5}%%JU1BQlpSU%gsOxSe~0n$jKh*3V4;KJzc&KW(XNwVGe1O1Y-#Mgi}aN;jh@ zmTQW#N&ZGVcgtmm(|dtlC4a~qb(-s$W6 zJluSfLlkFJ1WsOlTez$3*u>+tPs8H`leU~XDE=qNOfKL2U426XpGupD)JcWK!V#~| zKVsp%?y%zVd%Jzle_v<6wyk)U+Aq5YVr#ZGG^NhlkQWoJ8eKFey(n{q#rCkm_&IA$ z_tpO76k9S$L|{T*%(tdr2WG1>J}a+N&1uTV{kxvy85}Sb4q9e06K)PApigX literal 0 HcmV?d00001 diff --git a/android/assets/textures/bed_r.png b/android/assets/textures/bed_r.png new file mode 100644 index 0000000000000000000000000000000000000000..78f7285a452c419faad87f5a1485fcd7fb512ec3 GIT binary patch literal 490 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=DkBK$x-p&dPkCAbW|YuPggwCJA;XD<>HzO`wo$W=KSdbAE1aYF-JD%fR4Vl$uzQ znxasiS(2gP?&%wlqL<3fz`*F|>Eak-ar*5=->k`jA`K6}&#B%&yQVCG-RY>)(g5{K zO-;Km^zPtu=eye$e9%-R>c~t5vyGbnj+kir-hT3X=XaU!6Bho^doXj)hyC>mmBstZ zB1PZbxv^@>-Dc*xzT*{b@xI4T_sdu8_{`zoXFl^~jbo7V^Nvzm!_e;>w@&v%&Yxzn9z*D`f62dTC@@37_xBX~d zu}I_7x39(F=0R&1k0&YYO0W#RW1tF#%PL-74aEz1~lKyIiDiVXa7M##mtc# z%Zg3STy?z)`(m#A!{X~9<&Lv_W@UB83}8|6RqkoxpZOmj5{fI&u##0A$Ed6X1#0Hi bBT~ROrseuXuHE=G00000NkvXXu0mjfLQ-Os literal 0 HcmV?d00001 diff --git a/android/assets/textures/bookshelf.png b/android/assets/textures/bookshelf.png new file mode 100644 index 0000000000000000000000000000000000000000..1c9a1e8be0ca08b309fe6370e0a0e18ce6d19fa2 GIT binary patch literal 681 zcmV;a0#^NrP)7$R zAs__@QN)i;Fl`h`F-+sTu?;h-4uRA6s8@8PHH?=&q<#)C@)o4uj1l2AfOtdc9k|J1|xw z9DNDF2d+54&l^`MY6en&UwqpTK>6fjG@}kcC4U80?{Dkr?~5Z9@~R8y>wD*8CIA<2 zH7Mm;2iDtV7x#rb0Vw2EB!D^FMzpxy&FRH|Mco4efu(Iy`SSic9 zwG_T^Cy^5$00=G~Bfm2VnE<7nL(O!s(<=M3aX6U5lb9N5{!a!r=K$a@=T{e@Z2~J- P00000NkvXXu0mjfH>x}+ literal 0 HcmV?d00001 diff --git a/android/assets/textures/brick_slab.png b/android/assets/textures/brick_slab.png new file mode 100644 index 0000000000000000000000000000000000000000..560e8af6195df65149844e0f2682fe04370af02b GIT binary patch literal 406 zcmV;H0crk;P)h-Hlg6);^3Js=RfCM{-3XLdvOkcFJo3-pEK=K)Iz7_+m|uM@Ra`ivCO!1WvqtIH-_@$v3ges?_wV5cq$&x`3B0HKT-v=6GDbFHqgygs7t z3E=rNB#0D)+_T*>t9caq&_NUdwVQ(3a$OE7onUNbVm9~6L)*DDZmz~ZdIomR7*-e2 znLcElItO#VMny;!z`sC6Hx zk=-+|i5DFc$Pl->!H=06&N4l)fZP7}QU`n)(i@Ix<>VseRyv}d@C_zpcugm>_dltH z%d^wzx;-y4FZICbcd5zMdp^+qtoti^BFxp9%;~>zd-t@~iBLKs?-HdWwrz*EVL-W5 u%*`#^L9`E#a+zC+m-gWiknKV01K<~$9UG6XJ~1Ky00006#!0t#u@-+fU`|~|* z1h6^f{rZ?;3Il+v901*|q5b-1eax`?g!aK1_Z(g5)Cu>%+^#INbB0>EmU zAjyS`-6t~(*tawY_U%Y=36xF(1_DbCO=f2oMXqv~!h{Sqr#xuW*OY;DHv*2-!jigM zqYSj=(P}Kut{`wY(b|4U$LA#>!Vx2e5=1#MS%`8CK6sx_W kmWUgZ{EBOQxEKMP0lGR`z)0>t!2kdN07*qoM6N<$f|vY%V*mgE literal 0 HcmV?d00001 diff --git a/android/assets/textures/clay.png b/android/assets/textures/clay.png new file mode 100644 index 0000000000000000000000000000000000000000..1b673bb3dde17d7e9e3491cc9636513677a67b93 GIT binary patch literal 539 zcmV+$0_6RPP)l*25QV=oq9}-xV+%-u%tiijm+t*N9kXQVQrJLI*_K4XCo*gYnT%bH)E)2Ldmlf2 z{r3HDSwGU*ng{#LyW8Vr0>GLECleABrii33osYwaYBw#Nt#LB(>*tT$EJ1M^kGa_| z9%~u^oJ{z|({5VS{|6Eje(?ZAW$0`TfG#zs@rX4Ie(~s1V@*SGTWn2@gqdx-1K`0v zGxTp+_F>p_;z(2mh&Y)jbg8pUClj4*=-s^TEN@xOVc64d+N%o@2?`ZuT_G7{O~c{$ z9u)-%3JHpByF-^cH%m~A!g}8 zT~rbjFlF<`VWg@m6xW+jf^B zNq{+tcdGpOnv+m|@od{2QJEZ{1Vvdtvdm|kOjy%om?S84sp)KuU;L^dCDFSXfTz!2 zR-~^@r)ACFlp2T`WnF5D%jJ^cFva@w7M?y_nP9yvsoZogyt_R`!dFFM94^?WCY#l} zIh$)u1BU##I`(S{A0TPA?Jlp8D0A{5IZ?S>F7!ZWYm_w&o9^XqqA4P})ES^OHJ!Da d78Tdj{sG?LHD}9&54ZpT002ovPDHLkV1hz$^XmWr literal 0 HcmV?d00001 diff --git a/android/assets/textures/coal_block.png b/android/assets/textures/coal_block.png new file mode 100644 index 0000000000000000000000000000000000000000..6d29a6e11d10955f53204da73e210276f18bbbfc GIT binary patch literal 313 zcmV-90mlA`P)qen+mPiCfbGS!d)H)_I_P~n&f@n8Vi*DMc^*)bQV>#ywn_)pKsQ7*y zCveu9ashrJT7XLZ`~5!sP&1d-+7+TEtyX-+#@%kWJ}-!c`5)LH)_Vh_z^V@P00000 LNkvXXu0mjfZi$Bw literal 0 HcmV?d00001 diff --git a/android/assets/textures/coal_ore.png b/android/assets/textures/coal_ore.png new file mode 100644 index 0000000000000000000000000000000000000000..76d574108bf86f4a12bd7730817720f90ef3b54a GIT binary patch literal 460 zcmV;-0WK|mu z<2UcUdEWJX|IRtHEfJ~b5CYCQ0RHOx(u4ON?>#9cthM!lF$QZb)>^#x0Hl-<5pvG# zb&8_DUN4L>bxKN!Wmzh#aU20~&LJY~`o4ejQA&Fl26E1v&*xwCmHA%j0xZh{fH8&; z0&Uw?DJdn4F;xaYjFG)Q5|P^Ud_F0qa6BGy&JjXjo@YuawMXkqM5?}do*BoHQVIZ% z#{+9EP18_HA?IARt3P|C2k`yi*v29z1 zVE~}(x=LLo{~6_NY`1bg??q(I!M0LLbzM5`f51PV3i=YH<8_$;0000j8Zd)ovk|Y2KA&^qy`#wpM5QZUnp0j>klPxpiUd;K$ zxxs8r4#SYed_mlc$(9*ungWdM1jx*!(+-`NDkICu-dHeRE0Ni&?Fn zKQ9nM7@$-Nfc5Lz{6*t&FD5t&j2tN?t<%%f(NPev%5&`>_zkQfYxVXGDKIoN8rI1q6zv=_*n5VaE-QM1gS}mLDvy05ZJ6h}luGRw+SISlUuLO&3+xjzy8r+H07*qoM6N<$f?22n A#Q*>R literal 0 HcmV?d00001 diff --git a/android/assets/textures/cobblestone_mossy.png b/android/assets/textures/cobblestone_mossy.png new file mode 100644 index 0000000000000000000000000000000000000000..f1403ea82c8b9584ca9de238db4501c594357146 GIT binary patch literal 794 zcmV+#1LgdQP)9frK*%lmCB~CP^k-c&5QH_ zvZ<6!cHTHhiNSGzs!rp;fSCaXIzbmYV|PJKRH=7)bbpI;&gV!!{PfkO-4WdXvI4-f zqhArW06bOA^vV)O?V0Kx&oS=J|Rlf#oHJKGO1j4nQagM))r z*y0#~xNisHKrT{7;}#vehMH2inNOmo6b?_G(6MXyv)ODlu4x#(9_Fl$D_o*-p5bta zw`ODaJQj-u-+l8V{n2Xxf@?ugT=2>GDwPTyyGF9;a5JBz^6k&;?d=f`g$OtqCX)$U zxh)#?24iQ;ryt#C?2Hi(6!kLxQmIspUAw_i{W&Nuo*ia3n-LC2Sj^`vB4@mP_lmCB zqV(DKSf<5%7-VFhac}=2{@pKjs{mcIg_yc@%@)pB;`H>C=|!7#CQeKXgW}R?JV*LF zjIMu-GnVjN4}bbbx_WxP9Af@%ig5HAVy%x5Hfl=YZu)C}KR+ZEih<%XT@0{$9+Sxg zNdkYi5UeVyLOK(t^KOL85|QS+!+f;PdT^cVfldDC9V4%SGZ07-hmbB949<`q|MK{< z)ovjr{#@<+O5)W^shGMkANe1ns)U;C#T#7cU5h zBgkq>A+e#+A6VofWzeBx*Zy+@0O(7phbK<}K2YBMN&o-= literal 0 HcmV?d00001 diff --git a/android/assets/textures/cobblestone_slab.png b/android/assets/textures/cobblestone_slab.png new file mode 100644 index 0000000000000000000000000000000000000000..7d5cf2cdd6fd1a4034d8e7f804264bf09321a94f GIT binary patch literal 545 zcmV++0^a?JP)^^AM&qPB`Sj|GMYt=_i)eqR!uX{P75Y z5E;OcQR}vCBc-g82$5k71_Kt01@5_v5E&b#05BUSLS$H0tJ1?xNdI#mvtg3XQdX-K zMi2yCxGrM3q%2F~IL2`trVmrDK3!Z4u6I>P0WUg+A3<3$%OCs_w@RGJkL8? zWup{QN^ZW~0301phz#FvV~j>445QBUVT$88>~=c5uq+n{Ka* zd*QNPt*L9X-aqVwq_dPbj{kY5exXk2`|Z;?sO#8T&>XzK^m`6;^mLXYrNjt=V0MrFK9z&Asd literal 0 HcmV?d00001 diff --git a/android/assets/textures/crafting_table.png b/android/assets/textures/crafting_table.png new file mode 100644 index 0000000000000000000000000000000000000000..87c318fd44a6340e8e559cc750f8457467aad21c GIT binary patch literal 602 zcmV-g0;Tp$M}KL30EzxR24+VrK1_d6SSI;k4$ zzAcdq2QW@;0HRk^3QfWK+5(yy;_}=q0ILsPqX6{kEgWIt2n$UOvA(uIp(&*4aI+dz zafC&$-U4t98g_?TvjKn_REdN&HZv*OqEB1&+03Mfgf-NliruxTH5)YS4gh`tquK@F z_{$#v0)Z)x%XNO8{RJRjuDSKXS2%509XWCTZ8M8cXoP0<+nnIFLJ+NeR5hI8&_Ya$!GI>5_UALO@- z&wB%de7S}Y|0IV%U<#w!onWy2cnQ-q0l535Fv%caG+0gF#JgIfRAab4tcQ1!Y;1oV zFqlnbIQUdzHj$xMZ_%(jBMf@=7H_teCX5s>W2I67K-YD7$KwpX*U!*(9bj}1az`e{ zepWU_uTBGCwohGn`vqdx=K#pA#JT@$PwtE#kh#b8^V@F#9^Jc*BP{H$P437<*L9ZT zItPcQYv2e=u5u)-$&uTlFM)cB&CifsiL)Hn2NT#`8%+(3yoq6rGl|X53>YYiZ)6X^ oeG33TdICl9$+t3oMp1nH2Me7Z$17Jam;e9(07*qoM6N<$f`V)UmH+?% literal 0 HcmV?d00001 diff --git a/android/assets/textures/dandelion.png b/android/assets/textures/dandelion.png new file mode 100644 index 0000000000000000000000000000000000000000..873e3f5c4719e3a54bd06dd65c60ba4fc689bb63 GIT binary patch literal 145 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`5uPrNAr-fh6C_v{Gq76}&wTm+ z_p|a9``@BDk#esG(c)I$ztaD0e0su1*F-ZUb literal 0 HcmV?d00001 diff --git a/android/assets/textures/deadbush.png b/android/assets/textures/deadbush.png new file mode 100644 index 0000000000000000000000000000000000000000..f545cfc177315f7e07d8c7e57a04e2dca55ea629 GIT binary patch literal 334 zcmV-U0kQsxP)!azN^i8 z)zJn4K#VhSAyVmE_m~HPBrCgZDqOyQaQa%K(gT1?AEt!}&PR5cz!A%m4*dxdf-C< zB)v%P!7weveY%v90if?{W0%JkNu{G}oE*W*caJ}NQi0pq-#)>a@&829L|4gr)v&kk g#lsfBRgoIu7bz==OSiVoUjP6A07*qoM6N<$g4=(K@&Et; literal 0 HcmV?d00001 diff --git a/android/assets/textures/diamond_block.png b/android/assets/textures/diamond_block.png new file mode 100644 index 0000000000000000000000000000000000000000..1dd69f8151c7a136972ae63bddc95d1771fc8e18 GIT binary patch literal 445 zcmV;u0Yd(XP)1wZV#qZl(4kAgWGV)Qtm5zRHz{hc}pp|la&2m8ma8-^uL;^7H-=L^D4pIl+ z_ZtB2Ci?(fj>Z6708v$x93naYcmW`dGtQ#;8&WN+R`9;=fsi~4xQ@4+MKOR$U~3nC z)O$b+K%NBv%<_>-_4M4B2J`-nG|s3+$9>;9c(YxzY6Sq(M3crD0GsU^WP*^Auvsnu zs72?J{05)Mgj#g&`FyzrAgqdVAk4%z<4hCn;GaG~D>ZarVHfkO(W7RN$T|^H5?UdD z!T#EZr-?QrSO@=sEo5&(D`gVgsdjMK7q(lcW0Ta56WWCj`@-zORV&<{-#F4rxy4_$ zK`_fl1DVrABcwF9@V@SuJsEX1w$g_Zl*Ui`G`V;m+`$g8G;{gaJ nH@CeVLr6Ig=8xy^`M>`sQyb&z>T}^+00000NkvXXu0mjfUzE;s literal 0 HcmV?d00001 diff --git a/android/assets/textures/diamond_ore.png b/android/assets/textures/diamond_ore.png new file mode 100644 index 0000000000000000000000000000000000000000..757e05679832a44c524f6b5c8c8c4c4ab4a2c3d9 GIT binary patch literal 584 zcmV-O0=NB%P)6~f6oo&>_M;#{1SwJJgJw(SX6hIU{RRC2-ZB(2HH2)hflP%EO28@IN|$12@Yp?2 zGMIP^_zj^1)L0<_wMf`4G49|>JVP}J>FC~bKb=}p6w?p_)g^>TduuIPYXJVITZo%H z&&l%~?>$PX^gv39QVOM1y7%5Agdl`KBX$WP;Js&Y^N71%hp{nu?*TBzAcVkLORH$p zy`C`Xbr7bczOk|KMoLMRWk@Nh`61)7kN2Kd(dOHW=RCam$!K^*mSz09y5RTicgAI( zEX$}J9v)8POs3KmKuXDj)u*XoJgYKl7-JHUC^|kq=4?3SZZgwN8PzOS7)E!rBUNI1JsJ5m@1{X6U)?1iM2L4dHMP+?dB+nS5CT& z%YJg{oSWsK+HrC7h-R07+_@UNhhGKJ~cqZ((!Dc$P{kIA^)+F||Ehj|8r!GKoLrrjK|a?+)4 zNja literal 0 HcmV?d00001 diff --git a/android/assets/textures/dirt.png b/android/assets/textures/dirt.png new file mode 100644 index 0000000000000000000000000000000000000000..617d353e0d67a14a2952b2a98375eb8a50b97d79 GIT binary patch literal 266 zcmV+l0rmcgP)7w`V=NDEI+d2EruJ8Nt`?O29*Y((K z=DVK`tGLh7MTtz%ds&v@Ga&DZ$;xQ1!Z)iihj}Hm*4l8eo1~Im3;+ie&}VWdpbDk0 z+*Vd{tJH?~A!2frcub(;r0KIVImhR2X8sP4PM&T#KQlJngXEsPNu_c;# zj2A0tbfmyB_f1S^g6x^QT2YWaZ|9A0rZL;l$|NdG{#j@PkUL0z5S)WVgechg2)?`zlEPXGd%;2wl7(Q3`--spt=`=>uI}vL?D+EDzpv|pwyLVc zzphK(pSW$?VA!ea`W8$nA?FMLXxmo4AIAab8~|XNrc!{21gtv(fVCDO1XybU0M0qo zb&Zq~oO7iBSL6gD5+EBlc>2a#E5HzfaFBDp0reW%3=zqQJf=?MiBd`*F(QJgs!9@h zlAJU2WKV(_6JvxK$5F^3q7PtwQ@d=>n8iYmn&!$@>8qvIX?S+- ziG=@!r^NNiyRIt*zKKK=shjA+=Xw6?fGx&|VHf}a=Xu^@S|_Z9KjE{~(({FM1^@s6 M07*qoM6N<$f&ojWVE_OC literal 0 HcmV?d00001 diff --git a/android/assets/textures/furnace_off.png b/android/assets/textures/furnace_off.png new file mode 100644 index 0000000000000000000000000000000000000000..c417a41ab4099f1d583e30c9720558aebb95fb3f GIT binary patch literal 512 zcmV+b0{{JqP)lYY!P@11jNjkM^PKZtl2GJ1LI~7e$n!iyux%Tq6rSgylrqAq->)3FQqt;lux%Ty zHS;j!ZyeKvE2X%*zc-Fd1R(?fKc`dP7K=tQK$@lijDvt8&)FqO6#*cMq9d~7I7eTN zx5dIlH4#qn<@&nO{;4}xO3s4u_+uOdD5dE2dH`6K)fk~HO8_>T4RIVZ55uYk09tF} zI3~+7iaba4`{uvZ>6q%*W9{I=m6FM1!gjl*+wFc@z*9s~#P^4X%0U!GX3?@N%Ccm= zULO$#gMrzzEQ_Kj*d<9NP!t8NR*TJM!|#_D!slmmWi=efA-KKe>&=a+l`CZ>ptVM8 z&9BEto@TQ~%W0bOV>%_zbB3c4zV8EY4iN7=G`P))5i-M)y;~sTS#X}3q?%984|AgJcUc0AC?}hG3%F@_FUGY=} zi}aB0K+vEu31m;*L(EXceGtC+Ci7n2`!ai!VD7r)Omm}8kTXryCujBn4ut?f z*L98n&-2iA9nbSPIzEOsdxz^PUtaKipVZuS34I@3*AZ)>QmLc}*=!ae1f^05A%qeZ z#bWFrXPTrl8M4_dK@iZhEdEHzF1!dS@8@2f*?RjiRXEQzK5=O+r&`{4oW{$BmE1cqVo z^x>KBAHS(tznuM?hcwT`?{dq^H6B-u-Xam>rnQFC45CpNn+;tH`Af=?UD#xDd{icb>m_{&$8(E`vCj{I+yiEWmxj%00000NkvXX Hu0mjfgwYFU literal 0 HcmV?d00001 diff --git a/android/assets/textures/glass.png b/android/assets/textures/glass.png new file mode 100644 index 0000000000000000000000000000000000000000..fad9138b32a3773fec677f6361397ff62bac2cba GIT binary patch literal 243 zcmVhoW>%8OEsjiQ^G$==p79ZyzI z#uyU;%$Vl?e&Y}X@5Y-r%7ek;jc+ze9i&v%CTPJs%zB!p-cK#Sj_Zhs(n$9%DD2iPbYyyH<-ya3ilrJnyjwU7V+002ovPDHLkV1k(9X5|0? literal 0 HcmV?d00001 diff --git a/android/assets/textures/gold_block.png b/android/assets/textures/gold_block.png new file mode 100644 index 0000000000000000000000000000000000000000..61c5f15127b46e265ddfa840d520b5210f6a4000 GIT binary patch literal 249 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbL!T!2rAE0DfC&FH}L z`@i@9hp6voT>sy&{klU&(5+J)sDi5`$S;`TKMd4$ii8108$4YcLnNk}_B#q4P~c#8 zHBkBgzrZ=Sc*4n7I*++5E!z(%hh4FB2xUx}I*spSaDw+)?k)Q}PN)`qKO!Vh#_&6r z`Bu=>gKuN+eQ(}&>r~(C3Clj496z|0Uu35C59S9Oc&iR*1n8ewwm0;6{EEUSd;VS9 oqW{;acDMFI(U}jQSm)F;BrRm~)nn*z0=k94)78&qol`;+06*JkMgRZ+ literal 0 HcmV?d00001 diff --git a/android/assets/textures/gold_ore.png b/android/assets/textures/gold_ore.png new file mode 100644 index 0000000000000000000000000000000000000000..2f5f22ae5bd6e7ae1c4c63d9e6028ee6cc66e8ed GIT binary patch literal 590 zcmV-U0&o02odkb7?e@~{4efaxD-V} zQ4~1mkW$8kJkOC*BBhM~opT5w@ZOV#F5Y{bbG&=|jpNf5w4ULd13+ty5CUTiW!Yt3 zA8~xTLNyg6TU%TGJkQCpj6Bb|xKIp7O>$Xwd3p1m`oUAqzyBi3GDf36OeSrHqZwJ2 z(KK%q7nAh9fe4ZfXn+VuBM{93y?{;xKfTAeqw66g8a`poNr4&-i2sBO* zU^Qensiq0mTC7c$rWy>YxN49YAXQ2+7*urHO|mg2PEwX#exE)8V0RTx>K(M6;k~CQ z3aquXdc9s$!5DMrgH0~4A4XM_QapY%Us@-eWPN?TA36pfRMUjntkKzfkN2K){WJRF z>%~TFm@1{BEY3NM`R9Sa2VUQ)b42=ll>Sw_F0Wr;twlr+vk6G>bb1>YesgEE*;jLXa-H%6rdv>{we{1Hf7vzt$#8 c4h&xS3yxPe3&%*|=l}o!07*qoM6N<$f}#im4gdfE literal 0 HcmV?d00001 diff --git a/android/assets/textures/grass.png b/android/assets/textures/grass.png new file mode 100644 index 0000000000000000000000000000000000000000..a4975e53478ee3b1fad636c7cc99a2798a043b16 GIT binary patch literal 408 zcmV;J0cZY+P)(QU7!qQ_q-1>VjC+_FRu#+3W?#m!Xqt%$ZX+rX%fq{;GrjaQmn1qTcpTHLHTj35q zC%E9`&tv8?!VGj@$#t=&4z~+&9DXN}{Y|lNI9r3nSsmMs4(~l*NLHV_Lz{#;AWiL( z-i$}W7}@UF$Jij9-y7$E_;j)mNp1)rN#xXEx=@3OO+ti@4($wrpeRA&+SWwQChJag zH|6{cV4Ye^%eGj@oL!3DvK2du(~Ndz0T#a=MRw)N&7~RW>GTNtnfW7Grv<4b(pAw2 zB-jBF34r|rvZPAyF9iQ-5GtheB{zfs00008nu6oo$#9<)TtAk*~Vp@@`paGU^LgDyp%B5U6%FO)R}VtA7?1%aq54WTAYVh4q+ z&4~o=ATy1wG#;*#TA4M4TsA=aXep+4-%3ytfAywCt>V-Ra`y`X+PJTOiP zopS)>g+{C;RsIY-d=3Dl$}>nqsyx+phZ1W6;!vtQt``7SdWklMywGgQl2myzy{46p zuvFNr^pZ_kMi#AfWO_|_KpR6V9bzpjy=0sc#9EZ=g;aUQDdGNV_98F{V1W9tk1{g7 zCRHAQ#qc>qogaD5-%nMEO^z`Hb25A_l1Z@n1G-vu#<)d+@Q4Z3~CI&#z8VpL6kKiCx z8^hh*U7TCYgEJ6_TE$vg>8Q3l#wq!7e%43@~8%Zx>6Vdw(DXl;BsRi5wPN|86?jN6MPsNWoB&x@jcPaoiiD#OWHD$E7(8MsNZ1=J0(RM*od92T zrkUSAuLHcb-KrBzCUofp54p(SYtfM{!c(n0|40X4lS2xlNn(qNaYxirXZRX@2NBmYG;s7@@QY1 z$`^;7tg59Mj)qcFkd6}pFOaKhX-E^2^W_B6^cOJT1>0XYvCt%7{FnK%b03JpzCe5j zTy4MLUz6BG5M6>Fzug(uTioEoP3Z*&&sf-evMJl>7Bf*PU_?gM|ZI0!lv2 p{=v_*r#{p}>C?R_%Wl_P;XZk_szBnDb288m44$rjF6*2UngEtpV*&sG literal 0 HcmV?d00001 diff --git a/android/assets/textures/iron_ore.png b/android/assets/textures/iron_ore.png new file mode 100644 index 0000000000000000000000000000000000000000..1e555736640718979b753be1d50a47224cfc4ddd GIT binary patch literal 561 zcmV-10?z%3P)6#o6otR1k7dIh*(nw#WC~NcENPO)CRk__1UoHEt+iO&tUnSiqJF{!_!oX#?bMCq4+{t>q-c4DSEQW}r+&PCa27v$7-HC~{ z7Hcgb1hm%afl>;sHCk(|wE%<=5E068tnGxV~7ZOqzf<_)t!}6IOi6MOF{@JrP3Gx z-h1-+NJLW6n`aNXx^V359bk;XImf$~Ptu)IDuLvSipQdp<3j+p9<(^iY5`A<5BX94 z{L7IL0(ndTK75&5q_u{uh4&uk9Nrk9)uO6>)b)|#Rym`-CE<<#h7ZTO|#jgC<=08OrjOVjCKNS zueW)=QM)rdpK?!@SS=^?$G9OKKC7_yn>i@D(gJv6*}XpFr$(vu%iiFl6a27zSb)*W!h3 zD$^qPrOV|%mwP_Wfd`9mPul&aB!y&71DK84(rTDEN0(wHPhB@S`+~Y|#ER9Ob9Av9 zCiY~lL9hZcl^%5 gSG(}e!B2MK4pt$$-yRi~asU7T07*qoM6N<$f?!~HqW}N^ literal 0 HcmV?d00001 diff --git a/android/assets/textures/lapis_block.png b/android/assets/textures/lapis_block.png new file mode 100644 index 0000000000000000000000000000000000000000..7ecaee8651df2896d66b5eda0b5794427f12b861 GIT binary patch literal 506 zcmVVq30Bt)k>}DuCFg?@jh^`f)D!B9`0KR@l zRs|TvWp5C%bK4FKLknex|JVVLcP23swPJP}KQ#eJTZ%>_;>WO?uiX1<$1)UFMPLME zvP#7XI40dXy|##2;k6Awrbj$Jv;F3Re`*471ZdVWI848Ey?I_+n(}}eU5a^av8oCH zYIHPf`9Hm?K-3C%lpKD`6pJj1Mw7=Pb+thxmB2QiD~@Q~F$m}<5Vd7?I)Js0F93^Z zS9AbBHK@@6AUDCzP9v&<;z=wTq*zG9IQv+p}M9pNi2wFaD6WvQ+rrB<^#?Px2ebpQYW07*qoM6N<$g2!p#M*si- literal 0 HcmV?d00001 diff --git a/android/assets/textures/lapis_ore.png b/android/assets/textures/lapis_ore.png new file mode 100644 index 0000000000000000000000000000000000000000..04a4630a9c2544cfefdf6ede5e589055a3e8cf79 GIT binary patch literal 637 zcmV-@0)qXCP)1v7JYKra+?<6m)FGlGZa*NxEm4c;N7|PaNzo!)NbTF+UE52W2qJJ36eayA z2yTM@p%#@19n=!#E+!$*t#i~acuxyE<5l}$V1{|WZ{F|y-f@b>ViLzO^&y0?dt(e* zYXJU-bJI-}MRpluY=V>$r4&jjeBTEkiXwy%#Bq$5zA`+2ndU74mHAyH^V9UoF$*r2 z%a+xhXWeYxGshJ@i4X#(SS%*2i`#Ec(cd}Bz?UZCUj?ppz1%=QW$u(pC0n3eF5Al} zijY!nIHzp@gkgx6CZ#$^DY-v;hNYhioZbBhtu@9NhQ1vlyS;_(Xk<-cR|sMIdoq53 zd!LU3;4CYKW;#(ykSficEnJ%H2u#t~u~&;&t%loBBX z4TRi%(?;S{s4VZKS$<#9<7)>>&!NL`)ksPyj4?d@)Q#`^D5bd6`hw-fM!+GPDRXq| zB>8+EHv^lpRRFxys-@8;qNxH&!w-TWuwq^BnIH%P0JPSGVMwFrP)jmE6;EqT9LJnL zFo9@a>2L7WVS0|dMoP)e!FFWJHj<_#>rU6rQJDqR_D_R)bKH8|O5(Z<&2-Yce~iYO z%b(bg^Q!p1PZ)+=Ec~`&d#U2-h}4eS8mnGC_pZ*o%Hq;-dh0!Y(x0&3cYV}bJvGx` XSEB_|Wt>q`00000NkvXXu0mjfBXuMs literal 0 HcmV?d00001 diff --git a/android/assets/textures/lava.png b/android/assets/textures/lava.png new file mode 100644 index 0000000000000000000000000000000000000000..6585048ad95e518e6db8c3c9e19d3c7e79748d39 GIT binary patch literal 392 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP-69)&2Ug%B50-%s=W=KSdbAE1aYF-JD%fR4Vl$uzQ znxasiS(2gP?&%wlqL<1J6o2FC;uvCax^(hc-opw!t^3_>w%hJvX!kk3kX`JBn9L@A zAzPN?_9oMG6nVZ?pZ~V{phxTJeGaX{TUFX?jvhGva^}U~U(URUxp(37U$rCBJ-iM5 zYBsq~d$w=ySATFd(V`<#zS!q~dZidWOy`b?jDhswIweZzFpReWB#5abXz4&d%MM>lN}Xd e`=5O@KEUrf!M*$WlGVDP0P%G7b6Mw<&;$SxiC(w(c@G=A$P zP@DT=+{Zl({AWc{SvSxAzsW4R;bNi&k7(N}+vVZk{m-thJ?xNP)O%8VMdf_MtBr>h zLi{-;RgQ$P3pl(=y3l#GDlJ-4I_}7Ip|x97mWjVhwsYkXQ4K6Tbnk|dq{pg+-vzl3 z=WW}R#+J!c=VRWs?!T$qU*p#{oSqxQxp#LSt^Mqk_kORQ?18e1qtUNoWj3%EZvQkh ke2;}-zu5XpKeiuCao0`fPMiGn6DU|bUHx3vIVCg!03YR;%m4rY literal 0 HcmV?d00001 diff --git a/android/assets/textures/lava_16.png b/android/assets/textures/lava_16.png new file mode 100644 index 0000000000000000000000000000000000000000..6585048ad95e518e6db8c3c9e19d3c7e79748d39 GIT binary patch literal 392 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP-69)&2Ug%B50-%s=W=KSdbAE1aYF-JD%fR4Vl$uzQ znxasiS(2gP?&%wlqL<1J6o2FC;uvCax^(hc-opw!t^3_>w%hJvX!kk3kX`JBn9L@A zAzPN?_9oMG6nVZ?pZ~V{phxTJeGaX{TUFX?jvhGva^}U~U(URUxp(37U$rCBJ-iM5 zYBsq~d$w=ySATFd(V`<#zS!q~dZidWOy`b?jDhswIweZzFpReWB#5abXz4&d%MM>lN}Xd e`=5O@KEUrf!M*$WlGVDP0P%G7b6Mw<&;$SxiD{+g+Pw6cS6RC!<3e{z_2^re=&Feg{hWG9QF(D ze`yc+@jZVJ(C(Y*dhM$(g{dD|J2#j4(Y`~nhecl2KD)q}vs^2VseJO0SuV>y$wu3B hcBDrhx3OdU!PuC3^<7w9gBd7HJYD@<);T3K0RR$AotOXs literal 0 HcmV?d00001 diff --git a/android/assets/textures/lava_8.png b/android/assets/textures/lava_8.png new file mode 100644 index 0000000000000000000000000000000000000000..0b638e925562660e92589b65b7ba6a10f5414370 GIT binary patch literal 398 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP-69)&Y>}R1ub)b-JW=KSdbAE1aYF-JD%fR4Vl$uzQ znxasiS(2gP?&%wlqL<1J6#wMu;uvCaI(PDJ-opkwF7Zt77u#-X;PPLt)GBsDOluE6 zS`=}+dRA6=dE;S4qAAdeMP~;Y0tdh8Qypt!M3@P$Ibol{cyhy^9P&)Q35kNkFcHrwPSCmu#7BtH*V=}yv8 zG&Hn6{E0id`>vQpLv`nmqKiSiNvjIxH!eK5cLM9H&Hr*rbnNf2|Jwh0AAdIY`3+N5 z%L3*c{q*CS-jvd3)84&i_2IfP@4^q`zN3QY6vg(>p8lvJe}4(X@ugkY4XURdigL+& mYP_yONO1kG_|Fv*54dkm{&qI%Tmlm)SUg?*T-G@yGywoK5uV2Y literal 0 HcmV?d00001 diff --git a/android/assets/textures/leaves.png b/android/assets/textures/leaves.png new file mode 100644 index 0000000000000000000000000000000000000000..58c21044558b32e565356090b3b460479341016c GIT binary patch literal 753 zcmVWFU8GbZ8()Nlj2>E@cM*00LD>L_t(I%UzSbYujKD zhaY{|mMtPTp&^7+5GaP45>F{~Dy0+}=#Xyx6EbD zz|=7zQCnhJkt|u(D|JvLC%r`<@4dgfd+tu!{IHl>9gkMK&UBRU`)kOkHzT*T*Htb) z2i!HIq2gLG%^d?da#H{lO(uy_M!gwELoJ+d1~YV10ie~c(`wfdVRq-@%LH|B-~%u| zi|BWKbW>q{TW5BYa{AF_^+gp~m9W2s00g$cABs$9nj+_s`rS;(9|{1b*V$86CE`iK z)XBc{=m3$EWCG0{gXWG=9EfSk-yc%|;z@!CQ~aUecyCvw&YHp*BXk2pw?%(vBa<++B{@z6~LMU&=)%W$&q0q_0Nb_yAHtd-nbA1P%09E zEeaOixxngp7!4J3tA?C|%6pqT-WAM;Cvp;$GWP~b&1)Nen(**hr4YL-oR^co=VN@b z@1i=V+2-XNxcH=mcP_|x1faGuU#`5o$Vo67D)NJ7sW=?%Ep}d(_Mqrml}#D j72v!BjU5XXNN)o>&d_(h>b7HJ@eL=-w`3S?})L%&|v&Rx4^RiTR$Odv6?p~O}}wz)w= zJ1FlgIkY#v_wILh|NFmJm+#;HDf5&M7jO9d^*d#rB9V}fW4?U5r7TkJ9-cTqJx15c zY_(xoH(Zrx=voN?W~&W8W~&XlRsd9$d>pgY7J&R+Z14P=AaOCvxMYA@L!hx Y3)^1GM~7E+{Qv*}07*qoM6N<$f~#}d%K!iX literal 0 HcmV?d00001 diff --git a/android/assets/textures/mushroom_brown.png b/android/assets/textures/mushroom_brown.png new file mode 100644 index 0000000000000000000000000000000000000000..61b81d1c178469aedb58cbc2f6ff9c6b24344b17 GIT binary patch literal 190 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`t)4E9Ar`&K2@%hT zXfAKpto`rfV|Hc`U}p!@bNo#_c)$L7pPb!u^`$|BDNlmJfqOF?gPdg6t5)y|r2joD hkdW`QkMRft!_PqVYet&8Hvt{Q;OXk;vd$@?2>>H1KrjFR literal 0 HcmV?d00001 diff --git a/android/assets/textures/mushroom_red.png b/android/assets/textures/mushroom_red.png new file mode 100644 index 0000000000000000000000000000000000000000..6b983990e3c8cad105838821b666dea4855ae6db GIT binary patch literal 197 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`J)SO(Ar`&K2@S^(o5}tE ze`e-EL%q_T8!YmioPVcJoY3%j{+^112Y^7~`#agTDz%(h6Mq_mdKI;Vst036^ZAD(2Yw1i!3fQ`zJ&r`a`*e`FZ$Yo%23A?}G l3Er8?cEd}oZ1)xcz&8R~*q{7sWB~vG002ovPDHLkV1hBCmofkV literal 0 HcmV?d00001 diff --git a/android/assets/textures/obsidian.png b/android/assets/textures/obsidian.png new file mode 100644 index 0000000000000000000000000000000000000000..74db2481c47570cdcb5b800d47f2575466bebd74 GIT binary patch literal 563 zcmV-30?hr1P)}YHW1=(3UdRk_ z=PF<4ec$t(lU5ve>-78zfH;yw$pwYpuv))jt)bI7qb&D?p+JZLcanCG&)u5V`T1on zL_pH+`Iq{zr7ZV!I%gPDc_H_WK5Q|j0w8dz`mhCH{rBA$_vMXub;WTcN!mUCymftb zUjuyZ*4}BDO#t}4`T>A36+#5`KWMqR^WogH9J+Dy%h#K+vjdlzK-vmpGCXdc%@A1DW$vf2Yu! zlb)?LC&2Y#iy!Q+P(HGY-z;_~423UF+C75iY@LX6ZXV~}9BUj&L>$S}J^1tM#Gx5I z3kF+l+zlTAczSqdwwM7BILgk^#kJO8OvT;skt`kg)&??X zwwN)#9!i8 z>CdlIKE<+|>x%}XecC7<7>)dd5OmvM%+!*#4nMttcgp57CtSlz?zN3B*a}USY%^djr#CUdcj8uLh ziieJ7Dj@cXF>f%Y@~b+zUVUTsoKvzac8xipw*kPpk=Fg~)&3Bp{VopiQ_Mdf7U`sfT@Eo$GoBT^3`{_w$DS^ZAr`0K zPBhFrWFXRJ@4jwzhhpZE1FQnt(#GD^oqdwl3aO7-?(Sd|Pdv+Mq#!XvQeu^n%S4%1 z*A-s{IP!>Q-%s27zV_R1-v6cLn(>?KdNl5M*4>!C%qqEQ-NUQS{`Y2iT|38Q5a8z} zJg@NArGiW+#^Yf!)r}51(h1LIz1E(hma?RWLFC<$XRB)uhGd&=`}+3b6tyWT?vHpr z7VcVYxNYmJg&0x%98!o-I_o@JEP6Mj77VvqbO zw>#R?J~5d`H!%(!d6uEoI!*T>(4U{NwjsI+t=3rUX-|9dEK5vgho7G=+>X*k()Yi1 zYdzItbpvV=%Y_(cOwB|2mS+DY6^*HJu}A5Ga(e}~wgJFe4+a*|O|+*MlrFHhW?>_A z@9#bY%IyxN3jk*R&-Y7zeijwUb&)a-9oBlv?L+z_Al5d_{di6$Nin)9nRk_vqjZ5W zb&}Vf_5jR9Q+wK{HC-vcTsKlZk!KmvO}N;zTx}AF(gky+i=;<_ay2!_hd_J$iZL}x z7mP#4ICQ*z^8sUO#-Y0gN%YFv?oWGq!I(Tvl+4J`#W-|~bSWHSpzKBg-~6tHYqIkA6)EHqd0G^Pi*G^#?-e$!>j6Dx{FQ$&9m$_ f=m8%BTCMpDI;~Df!9pd|00000NkvXXu0mjf-M#fW literal 0 HcmV?d00001 diff --git a/android/assets/textures/sandstone.png b/android/assets/textures/sandstone.png new file mode 100644 index 0000000000000000000000000000000000000000..f40d0ceeb96a5d28b0a49cdabfeaeddc1d152ba9 GIT binary patch literal 453 zcmV;$0XqJPP)j+l5QV>3ARCa)8Ox%vWL-sfjhp=P{Dw4Xu5)GOWGRQpE?y&c4}p{vWL8GLF4M3x zJ2U&{&ErA6J$>*E3oiQfoqB@uT(Vqm0BCB(a=r0iv8Gl4lRWVs)Z5cX=QIHGC+xlR2=J(8>RtJu!0qjoeQ}_3n$C@lnp*iH+YU6fqWJYl(Az7P6}DCM_WDKU%Cqd8 zLA@&$^YE^?bDEiuC$EZc+rcA~JIPzjLu7QXM1d^l*W(K$*<=I4iSUwcvr&opF6Wla zaD+${H vFus8h2@o{3B2My2@b(q?xnLBM%{PyXYs3Rg^2E;{{<-Z_+!RqDwavil z@b_@%O{Z;crtT41ZdoK;#r0h0?n31`^Z!@%KAAR?=fUUX{R&Jrp$l$TRsECkIX}Po dWqk1m?pI&mOez=6okKxpnxd$2I8}l;=)N$BrFjZG!&7}B}(U9Vab)7v=ILYYSX8WbyT3+jD#^Y;`f`^{C?rhx6lqkQFJAPSWz7n$mbTR`>s}RlrWsb zFc#0AZ!(CLosYeo#eT4*0lxOWvEi-px^rT=M%)fUk!i5Lx2ngNS2To6zrM^MR&<+@ zkh@anAKv5Qpl@|4gSzi(XGPjxP28d@`S9*D)lq?DsF?it$=i=Zkus>X%689&=&VTc zxkZknFKl>gR($&OE?&u@+l<755d(N7hl_*0NQTNzdOVo|q$+zQ$EMDlL9OHKL9FPV zCsaoTK5Yw%uB07=sl+zHEKJ`|j;{eQ>%9r{Mlub$%}BI^P~?{G12BDcM$wg7)Z0H3 f{Ouh`#lML^k(0)lH^6Wn00000NkvXXu0mjf_;c_| literal 0 HcmV?d00001 diff --git a/android/assets/textures/sponge.png b/android/assets/textures/sponge.png new file mode 100644 index 0000000000000000000000000000000000000000..043b9625139785c271c6f09018c548e48b21c376 GIT binary patch literal 491 zcmV$_5S?*@#5gS>@VD|9sqGN5G`Fl&g~ulcJ(;7clu6oI<^3;bx7YS7ueK>wGL;E`cBbz z3f0txbh`rJ<8uWJR0XbMmTRWxcJ)ZN4**OVpnzF7+vSeDZ*~jL?VWQgvgVWd-+z8{ zngOcf>F$y&fTu9mIwZ?Az66|(tqYh!GG##DsV{kUY~dCs!{~x&HD%zE0MhNl72WI> zG_{$@^{3UuE(sFSBO41^AXdc_UwoB-rZzM3Vyy*vckfcz7bsQnBwD_BdrzH(o87`` zKkP45}*mTPWTkN-rQ{px!%t$zRj002ovPDHLkV1gjE!;1_1qG<$?aYYlx<=VEOVtu?gPY{2@a zMw`UwA}jxQXp_K^S%?S0uQCCGS4{JZotRj9F}nCi>-8~bhSDf_MO8kK;?F|SUFHIk zr!aIjkEk?r=xpx#$qI@oXp=T>3mdr?<4PI9E2{rcKV6q7rz6Z&nY7mA0_hl6@CNvzsoXiyRMY17RT>o2MYg$r?+sP#557_M10K&{m!Cy=^wr z&i{v7&cTyqRoW!v6YT<6nh9hnrMXr4V01Arls3y63)toM+HC94Sz2rO1qbT;iAlil QEdT%j07*qoM6N<$f~a7?bN~PV literal 0 HcmV?d00001 diff --git a/android/assets/textures/stone.png b/android/assets/textures/stone.png new file mode 100644 index 0000000000000000000000000000000000000000..5f123611cd6904d7d8ffb93852ba461ea8d605f0 GIT binary patch literal 331 zcmV-R0kr;!P)S`F z5qStW;l6LQ))p?4BY~N1|B2#>2vl{W5Rq5)-5s^oN5pf=`6^tY*1BS5wkQ+dJgQ7# zMPxl+T#Jo*??|e;T_L~m8Y6!6RrOinzaxpq#HOSpMT&Umk#LPTBsLb2?;X(QoM^56 d*_(xD<6q!j(cXW;y*~f|002ovPDHLkV1mcZk~07R literal 0 HcmV?d00001 diff --git a/android/assets/textures/stone_slab.png b/android/assets/textures/stone_slab.png new file mode 100644 index 0000000000000000000000000000000000000000..e970ecdb41121eeeb2961fd523226941b9b45cb0 GIT binary patch literal 419 zcmV;U0bKrxP)^No@Wx(=Ul9RGL%CQpyaYv|7WUe`5U zVV>vL{dGc4>ar}Uz}vpgIZQ?! zC0Uqq!m>b486gE|=mm+wS_=S74k=*ww3`IVN0CZ`1j{KTXsu;3^~L4=!ob`8R{ejZ zWv@JoJWfh!OaK7Ys6}4Z)}a~&adO0($NA5uv+l_;-TJC{D;m^VE8V1xPbf&cUXe)qyR&FtxDGOum>00000NkvXX Hu0mjfbkv__ literal 0 HcmV?d00001 diff --git a/android/assets/textures/stonebrick_slab.png b/android/assets/textures/stonebrick_slab.png new file mode 100644 index 0000000000000000000000000000000000000000..cda6747541e9f5c247c5b7317199a5770b5fe3bb GIT binary patch literal 299 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP-lLWgE&+(L_4}n5EJY5_^EKa`-a^yN>ARwbCAmo(U zQs?+*)tADr?6x6$rfd~*a`LOvkQTb#Tt4^myEkWabgEzI+va3{)SdQx((8v-4mYkP z?eaIcb%33J@!4Zfn(r5^5x%pb(mzJ3gCpqV8sR;PM?*MgPWF11@Gf#TbC6HL#f6T+ zGbLPD7;e5<WFU8GbZ8()Nlj2>E@cM*00F*9L_t(I%Z-!4Zqq;z zhQHl)o2;A^A_52{NDW1iIQJQHFZ9F(!G-7GSx}`OIPd_x2r6lWL=X}!D2Z+2#OqxS z>o{?1B<3_)&HvBLKmS5a3}3Y!{~5CGvHc{dEq?m4^>5?P_5R-?g6bDCpC19hvP|)nE zosqU8AD;Lo0l<1@$rcuqI>LUys&JvrAidf;ay_#k{0Rf?+2r6fbo(7ys+#`HF-r#y ovV{j^3yazpsD=jxTKF2^FL^n|Q9=?y!2kdN07*qoM6N<$f{I@KBme*a literal 0 HcmV?d00001 diff --git a/android/assets/textures/water.png b/android/assets/textures/water.png new file mode 100644 index 0000000000000000000000000000000000000000..9fff324141e687b16415a08a03e1d309e404357b GIT binary patch literal 365 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP-69)$~dxVz$ZJ>~BW=KSdbAE1aYF-JD%fR4Vl$uzQ znxasiS(2gP?&%wlqL<1J6u;={;uvCax;EHSsM$auIIZj$tElM8Pm^sl=bsc_xnNPz zLoLmY9ygsr=IYZ?Kfl$~-h17~#jtka{GbW*GLI}MJHwr&`P`xG8t>J1R$ev>*W70| z?|x6Hv`k`@Vaz{NFP5RWUP313UR-|mx^0zBsbcDfJJaJ1E=>DW z>N@Y9lbcNB`FkF_SpDaSU(x2x_;+7-#rcKC-&p5G%_+}1*}4qmYfo1{mvv4FO#mHo Bh*JOn literal 0 HcmV?d00001 diff --git a/android/assets/textures/water_12.png b/android/assets/textures/water_12.png new file mode 100644 index 0000000000000000000000000000000000000000..24f91874ff2643b0ebd9161bfd10de57b9f9436f GIT binary patch literal 376 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP-69)&gYOhzGJy1wCGbEzKIX^cyHLnE7WngeFN=+agOLxw5_OZReH1BEC{G>*9rZtPwkG+Zh z-|s2Hpq}8F;d8-do5VNX{FOnu4+0a;Elt+izty?1sjT94ljSmDb;a7olc!#>Mt!P1 z%)_v7E8m5MT|ZJE?fN32D>WrF`r@jP)M!aAn*h;?ceEs~SLj??%IX{NDJG!QFL|O( z<+bPA5|&!Mj(+QQYx@JfzToTEbY4Cc%SrHA@xRRBaelsIZJ5~BW=KSdbAE1aYF-JD%fR4Vl$uzQ znxasiS(2gP?&%wlqL<1J6u;={;uvCax;EHSsM$auIIZj$tElM8Pm^sl=bsc_xnNPz zLoLmY9ygsr=IYZ?Kfl$~-h17~#jtka{GbW*GLI}MJHwr&`P`xG8t>J1R$ev>*W70| z?|x6Hv`k`@Vaz{NFP5RWUP313UR-|mx^0zBsbcDfJJaJ1E=>DW z>N@Y9lbcNB`FkF_SpDaSU(x2x_;+7-#rcKC-&p5G%_+}1*}4qmYfo1{mvv4FO#mHo Bh*JOn literal 0 HcmV?d00001 diff --git a/android/assets/textures/water_4.png b/android/assets/textures/water_4.png new file mode 100644 index 0000000000000000000000000000000000000000..e6a94321b656362c33ed7abe2fc8783a5160fc17 GIT binary patch literal 372 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP-69)&2G;`L|V4#p}W=KSdbAE1aYF-JD%fR4Vl$uzQ znxasiS(2gP?&%wlqL<1J6u;r=;uvCadTFqsP_qG#aQV*U6GvEtYdz;*O#fnBs}wwA zhEd8Q<_<2?nD#2hTR25` zLAavEew`(Hw@frvX`g?joy*4-e&{EkMRRh`K93lQd73}=%qh*v>lghWA;G?i9nAJxsQ~2Zfinta&h%wcD;WC%B{P*%irZ=0)4f)vW$a%>{Yh)78&q Iol`;+0QaSep8x;= literal 0 HcmV?d00001 diff --git a/android/assets/textures/water_8.png b/android/assets/textures/water_8.png new file mode 100644 index 0000000000000000000000000000000000000000..4dc9f388f2b4b4159e3f12c75b4ec45df051183c GIT binary patch literal 374 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP-69)$iQ#zwBNS$nENJNQqer|4RUI~!Pz~Eeznpl#W zqEMb$lA+-4=^K!um&y(lzvb!T7-Dg{HP~9nNl_p=y{xV2Rp|Lsvny22KeUZk6%}Qj zDkjiVD4QuV>1>+)`;xu3YeS5UH{Z*hJ4MIl_qWRLj}1?7xhxO)?e%O2gM-+<=3>kK z|HqqUX6$7YJ?O~5zR1Ph;C7Od&<2Z&z5eVxS)ae@iXEAq9b6&g6H;jL{T};)r4Azd zIb7l`RxVHZE;-$M>$1h(FU#|%HFKJ+G(OF@rB*tB&WVYv3LG*A9xaV}Y`4}mh<)Pf zj>lQ15%-r#ue|ScW5>;}XO^ziShnFr*7T#ztf%XjAIQ&=y}{j{-G0PWXOTL{`<||T JF6*2UngD;JiG2V7 literal 0 HcmV?d00001 diff --git a/android/assets/textures/web.png b/android/assets/textures/web.png new file mode 100644 index 0000000000000000000000000000000000000000..d72a13cca77514635885f8639f8196ce458b936b GIT binary patch literal 240 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`+dW+zLo9k*gEtBuQQ+BJ-(j-< zzuL;+lqQiS1=B8sKWZ_oG*?uJv}(+?_q*ZE7%{IrkM&l+ur3qB1*HkCYJ83iY#W$% z#_h@yoa_~LZpO)Nt0wpe?O)0qx~d_vvgi=6SyII<56{>Mnc0t`LiJK7b1gWlvFN%r z%Nl#GU+Mu-tDVl|H_YH?eE06opS;;KXWl(;yn~scyxe&6YrffC*Ggk;mlV})x;v+C oUazX9a9G#e%~H>|8-`7k7raq(L$XHI9q0uHPgg&ebxsLQ0A0Xbj{pDw literal 0 HcmV?d00001 diff --git a/android/assets/textures/wooden_slab.png b/android/assets/textures/wooden_slab.png new file mode 100644 index 0000000000000000000000000000000000000000..51d4452f3dbffdcf61a218ee795499957ff75f1e GIT binary patch literal 353 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP-lLWi4eAL0MbwHtao-U3d7N_4%I_P!SL7>e(QF!-D zrIuy)xb}W~B3<$6$<_7`TWh59h3uh(7-dc5nW3|D&Ssm|d u*Y;#L{R(Cfdn*?c?^pNl`GfQ459+IZWn-FPCRY#iIfJLGpUXO@geCx!xR9Ly literal 0 HcmV?d00001 diff --git a/android/assets/textures/wool.png b/android/assets/textures/wool.png new file mode 100644 index 0000000000000000000000000000000000000000..fa2c56e80163cb9082ed015d36dadeb785e3ba9a GIT binary patch literal 446 zcmV;v0YUzWP)1@@ ziEhF`3`J4@|JQY8FOU+J6vUDOfds0aFcN449xu<=9%3+=PV>Aw`s$A-tM&R+Rl{jE z{+{j2^7nXp?+!@pHf5*_++YRVBMT9vyyyJfzzWN>Ar=D$DXYFg7r)7(OXS4ed~*kua|TRN{W^ z_Q2rw4W{*1l^KM>{jJv@Wf>)9QqvletvS4p$1tYK=8H(Em#@FNHW_}1k#r0L#s=w`fnR^w*65&MhYWcMMmLWN z)Rm-4@=qAq<_UKI>G2idk%UA|LI-KlYzF3#db{1gnUyOM+oqTqAUW1g7Yoktm&8h& ow|&ceu8ay*sG192H0 z*-isN3`Eg>gUr6~3?WjG`2Qc|jEsV01-IKS-|8V1RaZA-UbIEo^~17lXIb@CJ*u8DIPR(rU-zec zoHj?3@?|;1lk9soa z9e}x3atDTlBN)GUthL9t;wLFx58sX$K(pmI&AYMJ_W?;XC{ir4M<_W;0*r(u{Ft=F zD|yM}4>6J={CGinJgD2R+h&16{%1O1$otqp9Z8xb|ANtd{VzEKh>ssUnvj?YbVZ4f zU``~@^8t=mr6Bg2?s$MCJU?B)IFl_{uhwaER+U>wQXcNZk9k+Wj~_#chs{H*00000 LNkvXXu0mjf!*09Z literal 0 HcmV?d00001 diff --git a/android/assets/textures/wool_blue.png b/android/assets/textures/wool_blue.png new file mode 100644 index 0000000000000000000000000000000000000000..14c5d7103f49322be12e6f81f406fc996dccbe0b GIT binary patch literal 463 zcmV;=0WkiFP)1@@ z*-`>Q429u-AYot@24MuZTc1r3WdOBs-!6SZzn-?JN?o=U-t($ zbc@k0NSdC0h?b*WbMeg|jUOFV^2gI>)?EIO6CoWtC`FRW^0EcS2c{K=rJRUx`Vkaq zxq&F0Fk zfTbKW7%$LZhmZ`du*N>cnu?(S3*EUuA8P;r002ovPDHLk FV1g}B)Gq)4 literal 0 HcmV?d00001 diff --git a/android/assets/textures/wool_brown.png b/android/assets/textures/wool_brown.png new file mode 100644 index 0000000000000000000000000000000000000000..ffaa7509d5deb2fcac2de430b90241ad58cd81bc GIT binary patch literal 456 zcmV;(0XP1MP)1@@ zX-+~>42I#e6PX=w{wp|uID#5=0gAI|&=?6((%1TT4}IT9k!>t_1xu3;c07Ug z4vQK+{G`bs&$1TKiTkvcyKR(=f&@mM*}+p1cWb%pwPL6$jWdwo8*WZ4W2?JnIsLD@ zH%l7~Gmy63Jh_#IsIh~5qQOQf6~RppPwXa%{Nrz*q|Y6IfmZ4bjMas-_24m!Ycyd0nH4QDZ;0XCclo6E1;eSxC02?W?tqO3tyf%hk4x?HbFy zb%QNS`>d@x%Wzgzva++bUp)V0!%aztY~NY+t4fvlZ%12K!u>fVk{07#(cjZzn&j7K zJ-b2vX}}iK6F6bDy?3DWa-GYH7Gm-tcE~vLJx3JAd!mR&`d#_}7`)$0+qdEkCCEga z8J10O}Q;ciFC=67>Xjq*!8*#LPSmZE6eNMs%ei6$3%o{vV zV>ZfA@}_uF5>h~H-_HLa!{~b_Lk)ari`MLF%^vu{qsUqUq?w0jb5YrAKPWD7-A^KL zyQ@#QVFQMYN*JUrvB zfPaxurEclu1bq23pUO{znxIY)p*bAjGz0hZcxcUj2s2~Uj9c6}t6F`;Wm6}q7HcM| lT}oUU3KgopmY65b^dB5cFk{hwQ#}9x002ovPDHLkV1iif%rF1| literal 0 HcmV?d00001 diff --git a/android/assets/textures/wool_gray.png b/android/assets/textures/wool_gray.png new file mode 100644 index 0000000000000000000000000000000000000000..1d12e2d4694651e8b37744bb8bbf8f8a19d7daf7 GIT binary patch literal 427 zcmV;c0aX5pP)1@@ z3v$9R3T}6O_HH(<$P;~xf%0(yyVmM zs~Ha6G%hD0*|%dF%5mDx$LFtDt`9@qyms>fuMH{R9eTOFeO{BH_4ZWl^R_*H>WdM@yT{E;}rkkXFH>wLBv=VWC znjyzlqj3f+Ua&&m*UOB0H!Ugbmdo94Vgy3FdDC($!eWL8_7Vf)Q!;_dw0-o1H$}>$ zp5WZ!b+v3xj~Lc@AO?mWw0OJ~KNvJt;!HCmeA)-*Z!o*KrIEki0gq6^TRH!QA>juS zi7UBe@)OHctDmX3pncT?ZDUq{Gf#^=z2ufCQRPtybxXWaPhZZ{POVg^S>RT1e7F$_Dt`&YHT7R6K V%8Hk7a<>2g002ovPDHLkV1mWrzCr*1 literal 0 HcmV?d00001 diff --git a/android/assets/textures/wool_green.png b/android/assets/textures/wool_green.png new file mode 100644 index 0000000000000000000000000000000000000000..f8bc1ef41ff9b6043f7e0d9d6740c11add2677dc GIT binary patch literal 454 zcmV;%0XhDOP)1@@ z=Td?}429vn3O=xaf;Xdx*icl84SUCe<+s=EvxZ@2XUJxAPTu4rwN95dFRJUu%dL~; zo!j|?w_@XLseNACf39@L<+Xl8zH>k42%3X>+P$0Kd#a3n^Evt`6m4BCI`K>?UOifA z4(oikuNRV{-lQbEeY4R2E{Qu2bFP%)?n~Jj{FKD-F)*dT$OKN*WQ0j6 z5ozRE)&P{a*Lo}MQ4Kew^7_d-ew7 zXvo`ap6rSsYRq7~#KW1TRA_~jAJ>>o5_#`4=M$Yh00Zsr4Garc-ZXf$75i4^N$~&< z18DPj+k4Ei+4r$=ra_Uo>XrM9a|(|jg8}#`h|NQ(2}qkvezMtP#ff=rkYD8WSN*@} z1`6?X=z!79#|G-kl9K%lMzwj8JAnB31b7r7p$T-57A+QFPAvOh`Qs~+3S!&zW(HeA wW&L~s<4pdsX5cOBE=#5%SFz@vVjg-=fAD?X;8j>wnE(I)07*qoM6N<$f?Oll*Z=?k literal 0 HcmV?d00001 diff --git a/android/assets/textures/wool_lightblue.png b/android/assets/textures/wool_lightblue.png new file mode 100644 index 0000000000000000000000000000000000000000..529c92a3b91a6f80ef001b054af2c4c08e2964a0 GIT binary patch literal 491 zcmV1@@ zhf17L5QgD%FSb}vV=tJX5xZWP4MY)9Fc?q~i6|l}_J+M+#g6?pe3kwb84COPozZM?b zcD`8s`kSKS$?KwtEB(?s`6=zYKY9=8mi)g7iW)cHMN6k{TDCv=m2>x=I{DR0&#ZMj zAtypQF+uB}m6zC7Fm?%y56mbIi#2*0Hr|6KgQP_*pc8j$$6o%wbKHf7zTxmPdJc5js&M==#C7Y|UTK422GX{hlv@FdHFmIGpuv(M6-HsD zM>Xyyh`ed@Be8=%cK`<3TMmrXJ;CU~W2`y8m3@MQ2RIC=oqN{uteSt&mi#_0PBc;k zs%DwPgz#|85hP)VeRLY)N-i1v5F^Pf1I7jE*+JZV)y~LJ@Pi6<5ymth8>oYl)JZ-G zquM^f8$kT{8t^DWLL#DrbZ9;Yb0FEg^$E_dLXp@tXf9(NFl}5s2yxeC`s;c+(IxEYU$K{wfd;* z`F7jx_upAIE6dluUptIEe@e_;m}7~(`3Ndz_emG5hI74Bx&R~F99-fFBXq= zy}%8rC|>v-8vIJ&d{(QEs46tZ5H>^GJb#i&Rnz1tvcbB5M&O(K*v8Yq`QKVgGXC^?24Y`hYL6ipy_cPhK;oU{g}9- zVJB7f(#MIx1sJCin$ROt6H_wDJq>z>VqBaEaRH;er2=)0 zccuJ4jA(k2JAhbz@CZU8C(t!lP6hCYv!GH jnFW}tP-88jC!Xma)PADeOT|#w00000NkvXXu0mjf|76Hk literal 0 HcmV?d00001 diff --git a/android/assets/textures/wool_lime.png b/android/assets/textures/wool_lime.png new file mode 100644 index 0000000000000000000000000000000000000000..e10678004abe6a9f6d2827c92eb7a27e31f1bfd9 GIT binary patch literal 448 zcmV;x0YCnUP)8vAVgdDojimDuI&vJB{?d*q~wq1$)7Q}Y%NjtX&p8WL4$jv-?K+BCxz{*rcg-}_(_VO zmNh)ES74;ROsPOcD?F&_O_K6fufKXwWDbNmws%Gh>Kv#qJ!tW`D}IWUjS3ow=ErvJ zskZ&!kBI|K6$L6TJeEBHf5LkGAdv8*6NxFAWbp$A(qaac3Buzc--zlQw4-`)e(F*T zHkV4MZN4k;|6)|vw`9*~UcLr;6j7olr4wn;VnOww^x$iNxO@ny*fjGkl4KdbPFm1@? z$xcE+5QX7>B^|!r;Q^@w@4Sq?21+U3Ka|bwg?5 z@+p-ojGo<%U(^>%pBwf2$*YH{>*nfnD^tx4ofOB;UzZ;oL4G6~8cX-hbouYF=d`z8 z6jkO5&$D^`o^^_^2afV1r*y0H#h|FO)0C|(6npy}@$1T?t4?uit>XM1bjit(P9|vm zT(8Bpaw-Q*49qBj6KnK*Z@&di26>icKqu~-!Q;p28{ClCOY$3a9y|qbJ{qE`(zpg0 zvElG;hZ8egm1k~4wEMN$pbf?`kT!3g>*Qjyp;z42g6sH~qZ7M%Wc7AtMpgmGG2&+zseZ5h>0R@h$u4Ncp-wn&@Jv8E^+RB>a+|robEbR zU%mBpr}OFN>$$dnlONBfn;#ZCUN`zKWM(*AHPolZ2-y<7N_B-N@F(fft=+TO7J<8rs7O8b}f zuU2h;gq#TJ=%Dm<<9jZ%%F}Bz(70u2gc}*VASBzRv&j|o)kak%iu78Hjm@eN{_Po{ct?Y zEx;00z4Qs=g{qbC8yJACeof4yQWGw5GWifAX%+L7I7rV7;`+-DqsJRi#Kp;wmtmsY z-Y`(d{I1B?VPwZ!at?sv@)d-4OI=9RyrWkujE;xHy_muK*&PCxA3`P$H;cE(rMU9t xZn{`-CS9=77IhX4rTr1AP@{QqCy`S;(>G>&dQKsr#>4;s002ovPDHLkV1g~5_xAt* literal 0 HcmV?d00001 diff --git a/android/assets/textures/wool_pink.png b/android/assets/textures/wool_pink.png new file mode 100644 index 0000000000000000000000000000000000000000..17ef62bbf569e2d4dc2cd30cd5b859acaec7f1a6 GIT binary patch literal 516 zcmV+f0{i`mP) zi%J4P6o%(%v!V+HLQzCfP(;WkYl)emB^#lnVuU2JK^Q$j8Qq936h*grfWCic3kLS= znREI6bH+R-H{NE7cVp`h$=uKKo-MSVCh{*+1)FKu+`;8w`hGlXQxy)z^{{V#R`#r4 zw~aHMQk$U9h4RPz4*6V@iGAMZ-Hc?Y`?VMt1qC7A@1!+-s|)h+#ubKuE}3$p@Ay{ zTyG%#Jh|zr66(g_Yz*374M_~D-siSWEVp<>ZD2Sw)L77lKhqGHi$Q}|HPndtoQr9~ zUG7j%!;Q4b$s~7=BMk&)n}7+r+~E!wr1J|5Iq=YyKI{rTh6{dxgW)2viYzgtYoz_} zM-ykbk!@6!Ui9JM0>FXcEVZ=|^!Rm}FeN5w_^4RA#z71)8e+DI2K?gm>x{A2zbXnA zM+9*WM&0(ifHF|`u2lXHhG_H{{R7~ZPXaut3M7<>(Swjd%Z64Oct4dB;Npi65o?;! zTVzV2@~ULQ0;l0gN&~gMs&| zJe)fn&7IBH-)^*4#`5PAg^ShZr}dVXfz0tp?rgE~-eC-8Ptroe-AdErLC=q~+5RSJ zrgS}Bx>E02CA+uoa4361ceZqsByD$mh|bmD>~(#yml_|qD%oo-&(41LH#rf~)ecHG zT3@4VvRDSj2BsCmi5xXs?e9sEMy^E-pb~dq=4hgDi5n7_TD)QgSBc-BIU3JjgsRk7 zL)Z*$2eQX1O*K_4r@wLA-e`kyG^A}dS9S#~a?D`7L?iejBtt8#^r*&cg2;Dj@g&I} zfPv<_17mb97&Umb)yG>&OD;IzFn~4|ce&|N+5h|4IMJX;RQ1xw;R6UTK@ysnN2MmV zWRuB<7)hr(PtluH=$WDRk6g;OMh8Xp;bh1Q7~MQJP;UHJ00000NkvXXu0mjf#6{aN literal 0 HcmV?d00001 diff --git a/android/assets/textures/wool_red.png b/android/assets/textures/wool_red.png new file mode 100644 index 0000000000000000000000000000000000000000..f11cbccbc317a16aae5209b4c8a16d1294435334 GIT binary patch literal 430 zcmV;f0a5;mP)1@@ zS5gBp3}j>or%$&7}`lKvts>9m&1R*q|y+)c{+qC4x# zc~_oi^>yAImV8q4{j>_nQOU{B)2#mNEyd^14BhnQx)peBNcn!wtCI2F_9YowFPo~z zW~Y}wOsglP{AFInW_N;41@))^`nDL`=Hx1J#z;v-%)qRNmVj_;t6Bh(?}MB#y23Y0 ztD4n?9kdd2egJ~iXq-VsPLOOYqkh#&igiDRk(-Dhh}&*jZpB#4*ui=UhuD@(jJ}74 zkDu60k@K&=dV+HY#+Wvz#|#QjW?=XsOUJjePtx#Ujt8dgSz)|r$D3C{`T_f8*oPzuMcsb>dQ;>!8)GR$Y9!Ygi7Z&fgYDCNYpVjp;| YU)F5u?~M!@K>z>%07*qoM6N<$g4nFiCIA2c literal 0 HcmV?d00001 diff --git a/android/assets/textures/wool_yellow.png b/android/assets/textures/wool_yellow.png new file mode 100644 index 0000000000000000000000000000000000000000..fba27874217839e4224296754a4c9b4c25f341f4 GIT binary patch literal 509 zcmVrTQz5QX<86h&+WL853hiX_SpUs*-GV!a0fK~adr*PyiAiQnlOlTA9i-8u7}nKi*p zBD{C|m+|0wW%!z&w)TSCM0n>+8o9~)j$exPui~TX28+PISTdux%(%Wa|2bjJz7DuF zcuEc)ljQT8Oyb_@f?r-nclew#T$*(bIUT;N&%4LOqgs|NnZ%RkHf!E3BF72RszB=W zW7npIo(mW;V3Z<|M07_8?Ytq0Lj2|w17yP8J6jAZ4%{I1%gZ`%?a4zaW`Oh0W5MmJ zRpqK}gN+F&Yt7(l@UUjA-Rb8(+Q4W%r_jcmxEndZ>>WH{&!A!X>=8G_-Oi(js`bVp zt*%uZ_WaWvJeRF{aOc27S?Vw={22Y9@egY-0F5oSyp?>lN70DoWwBq)L(b@DZ>k-udOpGa(zB|n}^2hqcW*eVXUX(I~?4NkcCu7#l* z!v>VCeOJi;!zh!tq~SMmcK9+)@2VSmKjcK{K+9J_JilH|<-bOB#7C zOC~IE8mhpGHmB;n=SrztL={xIk7lAf(KG!8VpryH#rCIm00000NkvXXu0mjfGVbzZ literal 0 HcmV?d00001 diff --git a/android/build.gradle b/android/build.gradle index 70bf455..ef956e0 100644 --- a/android/build.gradle +++ b/android/build.gradle @@ -33,6 +33,7 @@ android { applicationIdSuffix ".debug" } } + } diff --git a/core/src/ru/deadsoftware/cavedroid/GameScreen.java b/core/src/ru/deadsoftware/cavedroid/GameScreen.java index 6b5382e..d30adba 100644 --- a/core/src/ru/deadsoftware/cavedroid/GameScreen.java +++ b/core/src/ru/deadsoftware/cavedroid/GameScreen.java @@ -11,7 +11,7 @@ import ru.deadsoftware.cavedroid.misc.*; public class GameScreen implements Screen { public static int FPS; - public static boolean SHOW_DEBUG = false; + public static boolean SHOW_DEBUG = true; public static int NEW_GAME_MODE = 0; public static GameProc GP; @@ -92,8 +92,8 @@ public class GameScreen implements Screen { public void resize(int width, int height) { switch (CaveGame.STATE) { case MENU_MAIN: - menuRenderer = new MenuRenderer(CaveGame.TOUCH ? 320 : 480); + Gdx.input.setInputProcessor(new InputHandlerMenu(menuRenderer)); renderer = menuRenderer; break; case GAME_PLAY: diff --git a/core/src/ru/deadsoftware/cavedroid/game/GameItems.java b/core/src/ru/deadsoftware/cavedroid/game/GameItems.java index 6c511a4..1bbb03c 100644 --- a/core/src/ru/deadsoftware/cavedroid/game/GameItems.java +++ b/core/src/ru/deadsoftware/cavedroid/game/GameItems.java @@ -1,42 +1,74 @@ package ru.deadsoftware.cavedroid.game; +import com.badlogic.gdx.Gdx; +import com.badlogic.gdx.graphics.Texture; +import com.badlogic.gdx.graphics.g2d.Sprite; import com.badlogic.gdx.utils.ArrayMap; +import com.badlogic.gdx.utils.JsonReader; +import com.badlogic.gdx.utils.JsonValue; import ru.deadsoftware.cavedroid.game.objects.Block; import ru.deadsoftware.cavedroid.game.objects.Item; -import java.util.ArrayList; +import java.util.HashMap; public class GameItems { + private static HashMap blocksIds = new HashMap(); + private static HashMap itemsIds = new HashMap(); + private static ArrayMap blocks = new ArrayMap(); - private static ArrayList items = new ArrayList(); + private static ArrayMap items = new ArrayMap(); + + public static boolean isFluid(int id) { + return getBlock(id).isFluid(); + } + + public static boolean isWater(int id) { + return getBlock(id).getMeta().equals("water"); + } + + public static boolean isLava(int id) { + return getBlock(id).getMeta().equals("lava"); + } + + public static boolean isSlab(int id) { + return getBlock(id).getMeta().equals("slab"); + } + + public static Block getBlock(int id) { + return blocks.getValueAt(id); + } + + public static Item getItem(int id) { + return items.getValueAt(id); + } - public static boolean isFluid(int bl) { - return isWater(bl) || isLava(bl); + public static Block getBlock(String key) { + return blocks.getValueAt(blocksIds.get(key)); } - public static boolean isWater(int bl) { - return (bl == 8 || bl == 60 || bl == 61 || bl == 62 || bl == 63); + public static Item getItem(String key) { + return items.getValueAt(itemsIds.get(key)); } - public static boolean isLava(int bl) { - return (bl == 9 || bl == 64 || bl == 65 || bl == 66 || bl == 67); + public static int getBlockId(String key) { + return blocksIds.get(key); } - public static boolean isSlab(int bl) { - return (bl == 51 || bl == 53 || bl == 54 || bl == 55 || bl == 56 || bl == 58); + public static int getItemId(String key) { + return itemsIds.get(key); } public static String getBlockKey(int id) { return blocks.getKeyAt(id); } - public static Block getBlock(int id) { - return blocks.getValueAt(id); + public static String getItemKey(int id) { + return items.getKeyAt(id); } - public static Item getItem(int id) { - return items.get(id); + public static int getBlockIdByItemId(int id) { + return getBlockId(items.getKeyAt(id)); } public static int getBlocksSize() { @@ -44,291 +76,54 @@ public class GameItems { } public static int getItemsSize() { - return items.size(); + return items.size; } - public static void loadItems() { - //0 - items.add(null); - //1 - items.add(new Item("Stone", 0, 0, 1)); - //2 - items.add(new Item("Grass", 1, 0, 2)); - //3 - items.add(new Item("Dirt", 2, 0, 3)); - //4 - items.add(new Item("Cobblestone", 3, 0, 4)); - //5 - items.add(new Item("Planks", 4, 0, 5)); - //6 - items.add(new Item("Sapling", 5, 0, 6)); - //7 - items.add(new Item("Bedrock", 6, 0, 7)); - //8 - items.add(new Item("Sand", 9, 0, 10)); - //9 - items.add(new Item("Gravel", 10, 0, 11)); - //10 - items.add(new Item("Golden Ore", 11, 0, 12)); - //11 - items.add(new Item("Iron Ore", 12, 0, 13)); - //12 - items.add(new Item("Coal Ore", 13, 0, 14)); - //13 - items.add(new Item("Wood", 14, 0, 15)); - //14 - items.add(new Item("Leaves", 15, 0, 16)); - //15 - items.add(new Item("Glass", 17, 0, 18)); - //16 - items.add(new Item("Lapis Ore", 18, 0, 19)); - //17 - items.add(new Item("Lapis Block", 19, 0, 20)); - //18 - items.add(new Item("Sandstone", 20, 0, 21)); - //19 - items.add(new Item("Cobweb", 24, 0, 25)); - //20 - items.add(new Item("Tall Grass", 25, 0, 26)); - //21 - items.add(new Item("Dead Bush", 26, 0, 27)); - //22 - items.add(new Item("Bricks", 27, 0, 28)); - //23 - items.add(new Item("Dandelion", 28, 0, 29)); - //24 - items.add(new Item("Rose", 29, 0, 30)); - //25 - items.add(new Item("Mushroom", 30, 0, 31)); - //26 - items.add(new Item("Mushroom", 31, 0, 32)); - //27 - items.add(new Item("White Wool", 32, 0, 33)); - //28 - items.add(new Item("Orange Wool", 33, 0, 34)); - //29 - items.add(new Item("Magenta Wool", 34, 0, 35)); - //30 - items.add(new Item("Light Blue Wool", 35, 0, 36)); - //31 - items.add(new Item("Yellow Wool", 36, 0, 37)); - //32 - items.add(new Item("Lime Wool", 37, 0, 38)); - //33 - items.add(new Item("Pink Wool", 38, 0, 39)); - //34 - items.add(new Item("Gray Wool", 39, 0, 40)); - //35 - items.add(new Item("Light Gray Wool", 40, 0, 41)); - //36 - items.add(new Item("Cyan Wool", 41, 0, 42)); - //37 - items.add(new Item("Purple Wool", 42, 0, 43)); - //38 - items.add(new Item("Blue Wool", 43, 0, 44)); - //39 - items.add(new Item("Brown Wool", 44, 0, 45)); - //40 - items.add(new Item("Green Wool", 45, 0, 46)); - //41 - items.add(new Item("Red Wool", 46, 0, 47)); - //42 - items.add(new Item("Black Wool", 47, 0, 48)); - //43 - items.add(new Item("Golden Block", 48, 0, 49)); - //44 - items.add(new Item("Iron Block", 49, 0, 50)); - //45 - items.add(new Item("Stone Slab", 50, 0, 51)); - //46 - items.add(new Item("Sandstone Slab", 52, 0, 53)); - //47 - items.add(new Item("Wooden Slab", 53, 0, 54)); - //48 - items.add(new Item("Cobblestone Slab", 54, 0, 55)); - //49 - items.add(new Item("Brick Slab", 55, 0, 56)); - //50 - items.add(new Item("Stone Brick", 64, 0, 57)); - //51 - items.add(new Item("Stone Brick Slab", 56, 0, 58)); - //52 - items.add(new Item("Cactus", 57, 0, 59)); - //53 - items.add(new Item("Obsidian", 65, 0, 68)); - //54 - items.add(new Item("Wooden Sword", 0, 1)); - //55 - items.add(new Item("Stone Sword", 1, 1)); - //56 - items.add(new Item("Iron Sword", 2, 1)); - //57 - items.add(new Item("Diamond Sword", 3, 1)); - //58 - items.add(new Item("Golden Sword", 4, 1)); - //59 - items.add(new Item("Wooden Shovel", 5, 1)); - //60 - items.add(new Item("Stone Shovel", 6, 1)); - //61 - items.add(new Item("Iron Shovel", 7, 1)); - //62 - items.add(new Item("Diamond Shovel", 8, 1)); - //63 - items.add(new Item("Golden Shovel", 9, 1)); - //64 - items.add(new Item("Empty Bucket", 10, 2)); - //65 - items.add(new Item("Water Bucket", 11, 2)); - //66 - items.add(new Item("Lava Bucket", 12, 2)); - + public static Sprite getBlockTex(int id) { + return getBlock(id).getTex(); } - public static void loadBlocks() { - //0 - blocks.put("none", null); - //1 - blocks.put("stone", new Block(0, 450, 4)); - //2 - blocks.put("grass", new Block(1, 54, 3)); - //3 - blocks.put("dirt", new Block(2, 45, 3)); - //4 - blocks.put("cobblestone", new Block(3, 600, 4)); - //5 - blocks.put("planks", new Block(4, 180, 5)); - //6 - blocks.put("sapling", new Block(5, 0, 6, false, false, true, true)); - //7 - blocks.put("bedrock", new Block(6, -1, 7)); - //8 - blocks.put("water", new Block(7, -1, 0, false, false, true)); - //9 - blocks.put("lava", new Block(8, -1, 0, false, false, false)); - //10 - blocks.put("sand", new Block(9, 45, 8)); - //11 - blocks.put("gravel", new Block(10, 54, 9)); - //12 - blocks.put("gold_ore", new Block(11, 900, 10)); - //13 - blocks.put("iron_ore", new Block(12, 900, 11)); - //14 - blocks.put("coal_ore", new Block(13, 900, 0)); - //15 - blocks.put("log", new Block(14, 180, 13)); - //16 - blocks.put("leaves", new Block(15, 21, 0)); - //17 - blocks.put("sponge", new Block(16, 54, 0)); - //18 - blocks.put("glass", new Block(17, 27, 0, true, false, true)); - //19 - blocks.put("lapis_ore", new Block(18, 900, 0)); - //20 - blocks.put("lapis_block", new Block(19, 900, 17)); - //21 - blocks.put("sandstone", new Block(20, 240, 18)); - //22 - blocks.put("noteblock", new Block(21, 75, 0)); - //23 - blocks.put("bed_l", new Block(22, 21, 0, false, true, true)); - //24 - blocks.put("bed_r", new Block(23, 21, 0, false, true, true)); - //25 - blocks.put("cobweb", new Block(24, 1200, 0, false, false, true)); - //26 - blocks.put("tallgrass", new Block(25, 0, 0, false, false, true, true)); - //27 - blocks.put("deadbush", new Block(26, 0, 0, false, false, true, true)); - //28 - blocks.put("brick_block", new Block(27, 600, 22)); - //29 - blocks.put("dandelion", new Block(28, 0, 23, false, false, true, true)); - //30 - blocks.put("rose", new Block(29, 0, 24, false, false, true, true)); - //31 - blocks.put("brown_mushroom", new Block(30, 0, 25, false, false, true, true)); - //32 - blocks.put("red_mushroom", new Block(31, 0, 26, false, false, true, true)); - //33 - blocks.put("wool_while", new Block(32, 75, 27, true, false, false)); - //34 - blocks.put("wool_orange", new Block(33, 75, 28, true, false, false)); - //35 - blocks.put("wool_magenta", new Block(34, 75, 29, true, false, false)); - //36 - blocks.put("wool_lightblue", new Block(35, 75, 30, true, false, false)); - //37 - blocks.put("wool_yellow", new Block(36, 75, 31, true, false, false)); - //38 - blocks.put("wool_lime", new Block(37, 75, 32, true, false, false)); - //39 - blocks.put("wool_pink", new Block(38, 75, 33, true, false, false)); - //40 - blocks.put("wool_gray", new Block(39, 75, 34, true, false, false)); - //41 - blocks.put("wool_lightgray", new Block(40, 75, 35, true, false, false)); - //42 - blocks.put("wool_cyan", new Block(41, 75, 36, true, false, false)); - //43 - blocks.put("wool_purple", new Block(42, 75, 37, true, false, false)); - //44 - blocks.put("wool_blue", new Block(43, 75, 38, true, false, false)); - //45 - blocks.put("wool_brown", new Block(44, 75, 39, true, false, false)); - //46 - blocks.put("wool_green", new Block(45, 75, 40, true, false, false)); - //47 - blocks.put("wool_red", new Block(46, 75, 41, true, false, false)); - //48 - blocks.put("wool_black", new Block(47, 75, 42, true, false, false)); - //49 - blocks.put("gold_block", new Block(48, 900, 43)); - //50 - blocks.put("iron_block", new Block(49, 1500, 44)); - //51 - blocks.put("stone_slab", new Block(0, 8, 16, 8, 50, 600, 45, true, false, true)); - //52 - blocks.put("double_stone_slab", new Block(51, 600, 45)); - //53 - blocks.put("sandstone_slab", new Block(0, 8, 16, 8, 52, 600, 46, true, false, true)); - //54 - blocks.put("wooden_slab", new Block(0, 8, 16, 8, 53, 180, 47, true, false, true)); - //55 - blocks.put("cobblestone_slab", new Block(0, 8, 16, 8, 54, 600, 48, true, false, true)); - //56 - blocks.put("brick_slab", new Block(0, 8, 16, 8, 55, 600, 49, true, false, true)); - //57 - blocks.put("stonebrick", new Block(64, 450, 50)); - //58 - blocks.put("stone_brick_slab", new Block(0, 8, 16, 8, 56, 450, 51, true, false, true)); - //59 - blocks.put("cactus", new Block(1, 0, 14, 16, 57, 39, 52, true, false, true, true)); - //60 - blocks.put("water_16", new Block(7, -1, 0, false, false, true)); - //61 - blocks.put("water_12", new Block(58, -1, 0, false, false, true)); - //62 - blocks.put("water_8", new Block(59, -1, 0, false, false, true)); - //63 - blocks.put("water_4", new Block(60, -1, 0, false, false, true)); - //64 - blocks.put("lava_16", new Block(8, -1, 0, false, false, true)); - //65 - blocks.put("lava_12", new Block(61, -1, 0, false, false, true)); - //66 - blocks.put("lava_8", new Block(62, -1, 0, false, false, true)); - //67 - blocks.put("lava_4", new Block(63, -1, 0, false, false, true)); - //68 - blocks.put("obsidian", new Block(65, 1500, 53)); + public static Sprite getItemTex(int id) { + if (items.getValueAt(id).getType().equals("block")) return getBlockTex(id); + else return getItem(id).getTex(); } public static void load() { - loadBlocks(); - loadItems(); + JsonValue json = new JsonReader().parse(Gdx.files.internal("game_items.json")); + JsonValue block = json.child.child; + JsonValue item = json.child.next.child; + while (block != null) { + String key = block.name; + int left = (block.has("left") ? block.getInt("left") : 0); + int right = (block.has("right") ? block.getInt("right") : 0); + int top = (block.has("top") ? block.getInt("top") : 0); + int bottom = (block.has("bottom") ? block.getInt("bottom") : 0); + int hp = (block.has("hp") ? block.getInt("hp") : -1); + String drop = (block.has("drop") ? block.getString("drop") : key); + boolean collision = (!block.has("collision") || block.getBoolean("collision")); + boolean background = (block.has("background") && block.getBoolean("background")); + boolean transparent = !(!block.has("collision") || block.getBoolean("collision")); + boolean blockRequired = (block.has("block_required") && block.getBoolean("block_required")); + boolean fluid = (block.has("fluid") && block.getBoolean("fluid")); + String meta = (block.has("meta") ? block.getString("meta") : ""); + String texture = (block.has("texture") ? block.getString("texture") : key); + blocksIds.put(key, blocks.size); + blocks.put(key, new Block(left, top, right, bottom, hp, drop, collision, + background, transparent, blockRequired, fluid, meta, + key.equals("none") ? null : + new Sprite(new Texture(Gdx.files.internal("textures/" + texture + ".png"))))); + block = block.next(); + } + while (item != null) { + String key = item.name; + String name = (item.has("name") ? item.getString("name") : key); + String type = (item.has("type") ? item.getString("type") : "item"); + String texture = (item.has("texture") ? item.getString("texture") : key); + itemsIds.put(key, items.size); + items.put(key, new Item(name, type, type.equals("block") ? null : + new Sprite(new Texture(Gdx.files.internal("textures/" + texture + ".png"))))); + item = item.next(); + } } -} +} \ No newline at end of file diff --git a/core/src/ru/deadsoftware/cavedroid/game/GamePhysics.java b/core/src/ru/deadsoftware/cavedroid/game/GamePhysics.java index fb0d6ed..8678404 100644 --- a/core/src/ru/deadsoftware/cavedroid/game/GamePhysics.java +++ b/core/src/ru/deadsoftware/cavedroid/game/GamePhysics.java @@ -135,7 +135,7 @@ class GamePhysics { if (!pl.flyMode && pl.mov.y < 18) pl.mov.add(gravity); } - pl.pos.x += pl.mov.x; + pl.pos.x += pl.mov.x * (pl.flyMode ? 1.5f : 1) * (GameItems.isFluid(getBlock(pl.getRect())) && !pl.flyMode ? .8f : 1); mobXColl(pl); if (CaveGame.TOUCH && checkJump(pl.getRect(), pl.getDir()) && !pl.flyMode && pl.canJump && pl.mov.x != 0) { diff --git a/core/src/ru/deadsoftware/cavedroid/game/GameProc.java b/core/src/ru/deadsoftware/cavedroid/game/GameProc.java index aa11931..cd957a0 100644 --- a/core/src/ru/deadsoftware/cavedroid/game/GameProc.java +++ b/core/src/ru/deadsoftware/cavedroid/game/GameProc.java @@ -58,6 +58,14 @@ public class GameProc implements Serializable { 480 * ((float) GameScreen.getHeight() / GameScreen.getWidth())); } maxCreativeScroll = GameItems.getItemsSize() / 8; + + new Thread(new Runnable() { + @Override + public void run() { + while (true) fluidUpdater(); + } + }).start(); + GameSaver.save(this); } @@ -362,7 +370,7 @@ public class GameProc implements Serializable { if (world.getForeMap(x, y) > 0 && GameItems.getBlock(world.getForeMap(x, y)).requiresBlock()) { if (world.getForeMap(x, y + 1) == 0 || !GameItems.getBlock(world.getForeMap(x, y + 1)).hasCollision()) { - world.destroyForeMap(x, y, this); + world.destroyForeMap(x, y); updateBlock(x, y - 1); } } @@ -375,14 +383,20 @@ public class GameProc implements Serializable { } } + private void fluidUpdater() { + for (int y = 0; y < world.getHeight(); y++) { + for (int x = (int) renderer.getCamX() / 16 - 1; x < (int) (renderer.getCamX() + renderer.getWidth()) / 16 + 1; x++) { + updateFluids(x, y); + } + } + } + void useItem(int x, int y, int id, boolean bg) { if (id > 0) { - switch (GameItems.getItem(id).getType()) { - case 0: - if (!bg) world.placeToForeground(x, y, GameItems.getItem(id).getBlock()); - else world.placeToBackground(x, y, GameItems.getItem(id).getBlock()); - break; - case 2: + if (GameItems.getItem(id).isBlock()) { + if (!bg) world.placeToForeground(x, y, GameItems.getBlockIdByItemId(id)); + else world.placeToBackground(x, y, GameItems.getBlockIdByItemId(id)); + } else { switch (id) { case 65: world.placeToForeground(x, y, 8); @@ -393,7 +407,6 @@ public class GameProc implements Serializable { player.inv[player.invSlot] = 64; break; } - break; } } } @@ -407,12 +420,6 @@ public class GameProc implements Serializable { DO_UPD = false; } - for (int y = 0; y < world.getHeight(); y++) { - for (int x = (int) renderer.getCamX() / 16 - 1; x < (int) (renderer.getCamX() + renderer.getWidth()) / 16 + 1; x++) { - updateFluids(x, y); - } - } - physics.update(delta); moveCursor(); checkCursorBounds(); @@ -426,12 +433,12 @@ public class GameProc implements Serializable { blockDmg++; if (world.getForeMap(curX, curY) > 0) { if (blockDmg >= GameItems.getBlock(world.getForeMap(curX, curY)).getHp()) { - world.destroyForeMap(curX, curY, this); + world.destroyForeMap(curX, curY); blockDmg = 0; } } else if (world.getBackMap(curX, curY) > 0) { if (blockDmg >= GameItems.getBlock(world.getBackMap(curX, curY)).getHp()) { - world.destroyBackMap(curX, curY, this); + world.destroyBackMap(curX, curY); blockDmg = 0; } } diff --git a/core/src/ru/deadsoftware/cavedroid/game/GameRenderer.java b/core/src/ru/deadsoftware/cavedroid/game/GameRenderer.java index 1229fcb..a34f0c8 100644 --- a/core/src/ru/deadsoftware/cavedroid/game/GameRenderer.java +++ b/core/src/ru/deadsoftware/cavedroid/game/GameRenderer.java @@ -41,17 +41,13 @@ public class GameRenderer extends Renderer { if (drawBG) { if ((GP.world.getForeMap(x, y) == 0 || GameItems.getBlock(GP.world.getForeMap(x, y)).isTransparent()) && GP.world.getBackMap(x, y) > 0) { - spriter.draw( - Assets.blockTex[GameItems.getBlock(GP.world.getBackMap(x, y)).getTex()], - drawX(x), drawY(y)); + spriter.draw(GameItems.getBlock(GP.world.getBackMap(x, y)).getTex(), drawX(x), drawY(y)); if (GP.world.getForeMap(x, y) == 0 && x == GP.curX && y == GP.curY) drawWreck(GP.world.getBackMap(GP.curX, GP.curY)); } } if (GP.world.getForeMap(x, y) > 0 && GameItems.getBlock(GP.world.getForeMap(x, y)).isBackground() == drawBG) { - spriter.draw( - Assets.blockTex[GameItems.getBlock(GP.world.getForeMap(x, y)).getTex()], - drawX(x), drawY(y)); + spriter.draw(GameItems.getBlock(GP.world.getForeMap(x, y)).getTex(), drawX(x), drawY(y)); if (x == GP.curX && y == GP.curY) drawWreck(GP.world.getForeMap(GP.curX, GP.curY)); } @@ -102,21 +98,6 @@ public class GameRenderer extends Renderer { } private void drawDrop(Drop drop) { - switch (GameItems.getItem(drop.getId()).getType()) { - case 0: - Assets.blockTex[GameItems.getItem(drop.getId()).getTex()].setPosition( - drop.pos.x - getCamX() - GP.world.getWidthPx(), - drop.pos.y - getCamY()); - Assets.blockTex[GameItems.getItem(drop.getId()).getTex()].draw(spriter); - Assets.blockTex[GameItems.getItem(drop.getId()).getTex()].setPosition( - drop.pos.x - getCamX(), - drop.pos.y - getCamY()); - Assets.blockTex[GameItems.getItem(drop.getId()).getTex()].draw(spriter); - Assets.blockTex[GameItems.getItem(drop.getId()).getTex()].setPosition( - drop.pos.x - getCamX() + GP.world.getWidthPx(), - drop.pos.y - getCamY()); - Assets.blockTex[GameItems.getItem(drop.getId()).getTex()].draw(spriter); - } } @SuppressWarnings("IntegerDivisionInFloatingPointContext") @@ -128,34 +109,27 @@ public class GameRenderer extends Renderer { y + 18 + (GP.creativeScroll * (72f / GP.maxCreativeScroll))); for (int i = GP.creativeScroll * 8; i < GP.creativeScroll * 8 + 40; i++) { if (i > 0 && i < GameItems.getItemsSize()) - switch (GameItems.getItem(i).getType()) { - case 0: - spriter.draw(Assets.blockTex[GameItems.getItem(i).getTex()], - x + 8 + ((i - GP.creativeScroll * 8) % 8) * 18, - y + 18 + ((i - GP.creativeScroll * 8) / 8) * 18); - break; - case 1: - case 2: - spriter.draw(Assets.itemTex[GameItems.getItem(i).getTex()], - x + 8 + ((i - GP.creativeScroll * 8) % 8) * 18, - y + 18 + ((i - GP.creativeScroll * 8) / 8) * 18); - break; + if (GameItems.getItem(i).isBlock()) { + spriter.draw(GameItems.getBlock(GameItems.getBlockIdByItemId(i)).getTex(), + x + 8 + ((i - GP.creativeScroll * 8) % 8) * 18, + y + 18 + ((i - GP.creativeScroll * 8) / 8) * 18); + } else { + spriter.draw(GameItems.getItem(i).getTex(), + x + 8 + ((i - GP.creativeScroll * 8) % 8) * 18, + y + 18 + ((i - GP.creativeScroll * 8) / 8) * 18); } } for (int i = 0; i < 9; i++) { if (GP.player.inv[i] > 0) - switch (GameItems.getItem(GP.player.inv[i]).getType()) { - case 0: - spriter.draw(Assets.blockTex[GameItems.getItem(GP.player.inv[i]).getTex()], - x + 8 + i * 18, y + Assets.creativeInv.getRegionHeight() - 24); - break; - case 1: - case 2: - spriter.draw(Assets.itemTex[GameItems.getItem(GP.player.inv[i]).getTex()], - x + 8 + i * 18, y + Assets.creativeInv.getRegionHeight() - 24); - break; + if (GameItems.getItem(GP.player.inv[i]).isBlock()) { + spriter.draw(GameItems.getBlock(GameItems.getBlockIdByItemId(GP.player.inv[i])).getTex(), + x + 8 + i * 18, y + Assets.creativeInv.getRegionHeight() - 24); + } else { + spriter.draw(GameItems.getItem(GP.player.inv[i]).getTex(), + x + 8 + i * 18, y + Assets.creativeInv.getRegionHeight() - 24); } } + } private void drawGUI() { @@ -169,18 +143,14 @@ public class GameRenderer extends Renderer { spriter.draw(Assets.invBar, getWidth() / 2 - (float) Assets.invBar.getRegionWidth() / 2, 0); for (int i = 0; i < 9; i++) { if (GP.player.inv[i] > 0) { - switch (GameItems.getItem(GP.player.inv[i]).getType()) { - case 0: - spriter.draw(Assets.blockTex[GameItems.getItem(GP.player.inv[i]).getTex()], - getWidth() / 2 - (float) Assets.invBar.getRegionWidth() / 2 + 3 + i * 20, - 3); - break; - case 1: - case 2: - spriter.draw(Assets.itemTex[GameItems.getItem(GP.player.inv[i]).getTex()], - getWidth() / 2 - (float) Assets.invBar.getRegionWidth() / 2 + 3 + i * 20, - 3); - break; + if (GameItems.getItem(GP.player.inv[i]).isBlock()) { + spriter.draw(GameItems.getBlock(GameItems.getBlockIdByItemId(GP.player.inv[i])).getTex(), + getWidth() / 2 - (float) Assets.invBar.getRegionWidth() / 2 + 3 + i * 20, + 3); + } else { + spriter.draw(GameItems.getItem(GP.player.inv[i]).getTex(), + getWidth() / 2 - (float) Assets.invBar.getRegionWidth() / 2 + 3 + i * 20, + 3); } } } @@ -198,8 +168,7 @@ public class GameRenderer extends Renderer { spriter.draw(Assets.touchRMB, getWidth() - 26, getHeight() - 26); spriter.draw(Assets.touchMode, 78, getHeight() - 26); if (GP.ctrlMode == 1) { - Assets.shade.setPosition(83, getHeight() - 21); - Assets.shade.draw(spriter); + spriter.draw(Assets.shade, 83, getHeight() - 21); } } diff --git a/core/src/ru/deadsoftware/cavedroid/game/GameWorld.java b/core/src/ru/deadsoftware/cavedroid/game/GameWorld.java index 6aefd89..89c4585 100644 --- a/core/src/ru/deadsoftware/cavedroid/game/GameWorld.java +++ b/core/src/ru/deadsoftware/cavedroid/game/GameWorld.java @@ -1,7 +1,10 @@ package ru.deadsoftware.cavedroid.game; +import ru.deadsoftware.cavedroid.game.objects.Block; import ru.deadsoftware.cavedroid.game.objects.Drop; +import static ru.deadsoftware.cavedroid.GameScreen.GP; + public class GameWorld { private int WIDTH, HEIGHT; @@ -43,7 +46,7 @@ public class GameWorld { try { x = transformX(x); map = (layer == 0) ? foreMap[x][y] : backMap[x][y]; - } catch (ArrayIndexOutOfBoundsException e) { + } catch (ArrayIndexOutOfBoundsException ignored) { } return map; } @@ -53,24 +56,36 @@ public class GameWorld { x = transformX(x); if (layer == 0) foreMap[x][y] = value; else backMap[x][y] = value; - } catch (ArrayIndexOutOfBoundsException e) { + } catch (ArrayIndexOutOfBoundsException ignored) { } } + public boolean hasBlockAt(int x, int y) { + return getMap(x, y, 0) != 0; + } + public int getForeMap(int x, int y) { return getMap(x, y, 0); } - public void setForeMap(int x, int y, int value) { - setMap(x, y, 0, value); + public Block getForeMapBlock(int x, int y) { + return GameItems.getBlock(getMap(x, y, 0)); + } + + public void setForeMap(int x, int y, int id) { + setMap(x, y, 0, id); } public int getBackMap(int x, int y) { return getMap(x, y, 1); } - public void setBackMap(int x, int y, int value) { - setMap(x, y, 1, value); + public Block getBackMapBlock(int x, int y) { + return GameItems.getBlock(getMap(x, y, 1)); + } + + public void setBackMap(int x, int y, int id) { + setMap(x, y, 1, id); } private void placeSlab(int x, int y, int value) { @@ -97,7 +112,7 @@ public class GameWorld { } public void placeToForeground(int x, int y, int value) { - if (getForeMap(x, y) == 0 || value == 0 || !GameItems.getBlock(getForeMap(x, y)).hasCollision()) { + if (!hasBlockAt(x, y) || value == 0 || !GameItems.getBlock(getForeMap(x, y)).hasCollision()) { setForeMap(x, y, value); } else if (GameItems.isSlab(value) && getForeMap(x, y) == value) { placeSlab(x, y, value); @@ -114,15 +129,17 @@ public class GameWorld { } } - public void destroyForeMap(int x, int y, GameProc gp) { - if (GameItems.getBlock(getForeMap(x, y)).getDrop() > 0) - gp.drops.add(new Drop(transformX(x) * 16 + 4, y * 16 + 4, GameItems.getBlock(getForeMap(x, y)).getDrop())); + public void destroyForeMap(int x, int y) { + if (GameItems.getBlock(getForeMap(x, y)).hasDrop()) + GP.drops.add(new Drop(transformX(x) * 16 + 4, y * 16 + 4, + GameItems.getItemId(GameItems.getBlock(getForeMap(x, y)).getDrop()))); placeToForeground(x, y, 0); } - public void destroyBackMap(int x, int y, GameProc gp) { - if (GameItems.getBlock(getBackMap(x, y)).getDrop() > 0) - gp.drops.add(new Drop(transformX(x) * 16 + 4, y * 16 + 4, GameItems.getBlock(getBackMap(x, y)).getDrop())); + public void destroyBackMap(int x, int y) { + if (GameItems.getBlock(getBackMap(x, y)).hasDrop()) + GP.drops.add(new Drop(transformX(x) * 16 + 4, y * 16 + 4, + GameItems.getItemId(GameItems.getBlock(getBackMap(x, y)).getDrop()))); placeToBackground(x, y, 0); } @@ -135,11 +152,11 @@ public class GameWorld { WorldGen.clear(); } - public void setMaps(int[][] foreMap, int[][] backMap) { + void setMaps(int[][] foreMap, int[][] backMap) { this.foreMap = foreMap.clone(); this.backMap = backMap.clone(); WIDTH = foreMap.length; HEIGHT = foreMap[0].length; } -} +} \ No newline at end of file diff --git a/core/src/ru/deadsoftware/cavedroid/game/mobs/FallingGravel.java b/core/src/ru/deadsoftware/cavedroid/game/mobs/FallingGravel.java index f30faef..93d0b6f 100644 --- a/core/src/ru/deadsoftware/cavedroid/game/mobs/FallingGravel.java +++ b/core/src/ru/deadsoftware/cavedroid/game/mobs/FallingGravel.java @@ -22,7 +22,7 @@ public class FallingGravel extends Mob { @Override public void draw(SpriteBatch spriteBatch, float x, float y) { - spriteBatch.draw(Assets.blockTex[GameItems.getBlock(11).getTex()], x, y); + spriteBatch.draw(GameItems.getBlock("gravel").getTex(), x, y); } @Override diff --git a/core/src/ru/deadsoftware/cavedroid/game/mobs/FallingSand.java b/core/src/ru/deadsoftware/cavedroid/game/mobs/FallingSand.java index 6194e4e..cfd5f9b 100644 --- a/core/src/ru/deadsoftware/cavedroid/game/mobs/FallingSand.java +++ b/core/src/ru/deadsoftware/cavedroid/game/mobs/FallingSand.java @@ -22,7 +22,7 @@ public class FallingSand extends Mob { @Override public void draw(SpriteBatch spriteBatch, float x, float y) { - spriteBatch.draw(Assets.blockTex[GameItems.getBlock(10).getTex()], x, y); + spriteBatch.draw(GameItems.getBlock("sand").getTex(), x, y); } @Override diff --git a/core/src/ru/deadsoftware/cavedroid/game/objects/Block.java b/core/src/ru/deadsoftware/cavedroid/game/objects/Block.java index defbd3b..2a44916 100644 --- a/core/src/ru/deadsoftware/cavedroid/game/objects/Block.java +++ b/core/src/ru/deadsoftware/cavedroid/game/objects/Block.java @@ -1,44 +1,34 @@ package ru.deadsoftware.cavedroid.game.objects; +import com.badlogic.gdx.graphics.g2d.Sprite; import com.badlogic.gdx.math.Rectangle; public class Block { private int x, y, w, h; - private int tex; - private int hp, drop; + private int hp; + private String drop, meta; + private Sprite tex; //coll - collision, bg - background, tp - transparent, rb - requires block under it - private boolean coll, bg, tp, rb; - - public Block(int tex, int hp, int drop) { - this(0, 0, 16, 16, tex, hp, drop, true, false, false, false); - } - - public Block(int tex, int hp, int drop, boolean coll, boolean bg, boolean tp) { - this(0, 0, 16, 16, tex, hp, drop, coll, bg, tp, false); - } - - public Block(int tex, int hp, int drop, boolean coll, boolean bg, boolean tp, boolean rb) { - this(0, 0, 16, 16, tex, hp, drop, coll, bg, tp, rb); - } - - public Block(int x, int y, int w, int h, int tex, int hp, int drop, boolean coll, boolean bg, boolean tp) { - this(x, y, w, h, tex, hp, drop, coll, bg, tp, false); - } - - public Block(int x, int y, int w, int h, int tex, int hp, int drop, boolean coll, boolean bg, boolean tp, boolean rb) { - this.x = x; - this.y = y; - this.w = w; - this.h = h; - this.tex = tex; + private boolean coll, bg, tp, rb, fluid; + + public Block(int left, int top, int right, int bottom, int hp, + String drop, boolean coll, boolean bg, boolean tp, boolean rb, boolean fluid, String meta, Sprite tex) { + this.x = left; + this.y = top; + this.w = 16 - right - left; + this.h = 16 - top - bottom; this.hp = hp; this.drop = drop; this.coll = coll; this.bg = bg; this.tp = tp; this.rb = rb; + this.fluid = fluid; + this.meta = meta; + this.tex = tex; + if (this.tex != null) this.tex.flip(false, true); } public boolean hasCollision() { @@ -57,26 +47,38 @@ public class Block { return rb; } - public int getTex() { - return tex; - } - public int getHp() { return hp; } - public int getDrop() { + public String getDrop() { return drop; } + public boolean hasDrop() { + return !drop.equals("none"); + } + + public Sprite getTex() { + return tex; + } + public Rectangle getRect(int x, int y) { x *= 16; y *= 16; return new Rectangle(x + this.x, y + this.y, w, h); } + public boolean isFluid() { + return fluid; + } + + public String getMeta() { + return meta; + } + public boolean toJump() { return (y < 8 && coll); } -} +} \ No newline at end of file diff --git a/core/src/ru/deadsoftware/cavedroid/game/objects/Item.java b/core/src/ru/deadsoftware/cavedroid/game/objects/Item.java index 3d082bf..a619a1b 100644 --- a/core/src/ru/deadsoftware/cavedroid/game/objects/Item.java +++ b/core/src/ru/deadsoftware/cavedroid/game/objects/Item.java @@ -1,37 +1,33 @@ package ru.deadsoftware.cavedroid.game.objects; -public class Item { +import com.badlogic.gdx.graphics.g2d.Sprite; - private int tex; - private int type; // 0 - block, 1 - tool, 2 - other - private int block; - private String name; +public class Item { - public Item(String name, int tex, int type) { - this(name, tex, type, -1); - } + private String name, type; + private Sprite tex; - public Item(String name, int tex, int type, int block) { + public Item(String name, String type, Sprite tex) { this.name = name; - this.tex = tex; this.type = type; - this.block = block; + this.tex = tex; + if (this.tex != null) this.tex.flip(false, true); } - public int getTex() { + public Sprite getTex() { return tex; } - public int getType() { + public String getType() { return type; } - public int getBlock() { - return block; + public boolean isBlock() { + return type.equals("block"); } public String getName() { return name; } -} +} \ No newline at end of file diff --git a/core/src/ru/deadsoftware/cavedroid/game/objects/Player.java b/core/src/ru/deadsoftware/cavedroid/game/objects/Player.java index 5fd04f9..1459506 100644 --- a/core/src/ru/deadsoftware/cavedroid/game/objects/Player.java +++ b/core/src/ru/deadsoftware/cavedroid/game/objects/Player.java @@ -86,28 +86,6 @@ public class Player extends Mob implements Serializable { spriteBatch.draw(Assets.plSprite[getDir()][0], x - 2, y - 2); //body spriteBatch.draw(Assets.plSprite[getDir()][1], x - 2, y + 8); - //item in hand - if (inv[invSlot] > 0) { - float handRotation = MathUtils.degRad * Assets.plSprite[0][2].getRotation(); - switch (GameItems.getItem(inv[invSlot]).getType()) { - case 0: - Assets.blockTex[GameItems.getItem(inv[invSlot]).getTex()].setPosition( - x - 8 * MathUtils.sin(handRotation), - y + 6 + 8 * MathUtils.cos(handRotation)); - Assets.blockTex[GameItems.getItem(inv[invSlot]).getTex()].draw(spriteBatch); - break; - default: - Assets.itemTex[GameItems.getItem(inv[invSlot]).getTex()].flip((getDir() == 0), false); - Assets.itemTex[GameItems.getItem(inv[invSlot]).getTex()].setRotation( - -45 + getDir() * 90 + Assets.plSprite[0][2].getRotation()); - Assets.itemTex[GameItems.getItem(inv[invSlot]).getTex()].setPosition( - x - 10 + (12 * getDir()) - 8 * MathUtils.sin(handRotation), - y + 2 + 8 * MathUtils.cos(handRotation)); - Assets.itemTex[GameItems.getItem(inv[invSlot]).getTex()].draw(spriteBatch); - Assets.itemTex[GameItems.getItem(inv[invSlot]).getTex()].flip((getDir() == 0), false); - break; - } - } //front hand Assets.plSprite[0][2].setPosition(x - 6, y); Assets.plSprite[0][2].draw(spriteBatch); diff --git a/core/src/ru/deadsoftware/cavedroid/menu/MenuRenderer.java b/core/src/ru/deadsoftware/cavedroid/menu/MenuRenderer.java index 212003e..28da58e 100644 --- a/core/src/ru/deadsoftware/cavedroid/menu/MenuRenderer.java +++ b/core/src/ru/deadsoftware/cavedroid/menu/MenuRenderer.java @@ -79,11 +79,11 @@ public class MenuRenderer extends Renderer { spriter.begin(); for (int x = 0; x <= getWidth() / 16; x++) { for (int y = 0; y <= getHeight() / 16; y++) { - spriter.draw(Assets.blockTex[GameItems.getBlock(3).getTex()], x * 16, y * 16); + spriter.draw(GameItems.getBlock(3).getTex(), x * 16, y * 16); spriter.draw(Assets.shade, x * 16, y * 16); } } - spriter.draw(Assets.gameLogo, getWidth() / 2 - Assets.gameLogo.getWidth() / 2, 8); + spriter.draw(Assets.gameLogo, getWidth() / 2 - (float) Assets.gameLogo.getWidth() / 2, 8); switch (CaveGame.STATE) { case MENU_MAIN: diff --git a/core/src/ru/deadsoftware/cavedroid/misc/Assets.java b/core/src/ru/deadsoftware/cavedroid/misc/Assets.java index 6eb0e60..109b0a1 100644 --- a/core/src/ru/deadsoftware/cavedroid/misc/Assets.java +++ b/core/src/ru/deadsoftware/cavedroid/misc/Assets.java @@ -10,14 +10,11 @@ import ru.deadsoftware.cavedroid.CaveGame; public class Assets { - public static final int BLOCK_TEXTURES = 66; - public static final int ITEM_TEXTURES = 13; - private static GlyphLayout layout; public static BitmapFont mcFont; - public static Sprite gameLogo; + public static Texture gameLogo; public static Texture menuBtnTex; public static TextureRegion[] menuBtn = new TextureRegion[3]; @@ -28,13 +25,7 @@ public class Assets { public static Texture pigTex; public static Sprite[][] pigSprite = new Sprite[2][2]; - public static Sprite shade; - - public static Texture terrain; - public static Sprite[] blockTex = new Sprite[BLOCK_TEXTURES]; - - public static Texture items; - public static Sprite[] itemTex = new Sprite[ITEM_TEXTURES]; + public static Texture shade; public static Texture gui; public static TextureRegion invBar; @@ -102,8 +93,7 @@ public class Assets { layout = new GlyphLayout(); - gameLogo = new Sprite(new Texture(Gdx.files.internal("gamelogo.png"))); - gameLogo.flip(false, true); + gameLogo = new Texture(Gdx.files.internal("gamelogo.png")); menuBtnTex = new Texture(Gdx.files.internal("buttons.png")); for (int i = 0; i < 3; i++) { @@ -114,7 +104,7 @@ public class Assets { loadPlayer(); loadPig(); - shade = new Sprite(new Texture(Gdx.files.internal("shade.png"))); + shade = new Texture(Gdx.files.internal("shade.png")); gui = new Texture(Gdx.files.internal("gui.png")); guiCur = new TextureRegion(gui, 0, 0, 16, 16); @@ -148,22 +138,6 @@ public class Assets { touchSpace.flip(false, true); } - terrain = new Texture(Gdx.files.internal("terrain.png")); - for (int i = 0; i < BLOCK_TEXTURES; i++) { - blockTex[i] = new Sprite(terrain, - (i % 16) * 16, (i / 16) * 16, 16, 16); - blockTex[i].flip(false, true); - blockTex[i].setSize(8, 8); - } - terrain = null; - - items = new Texture(Gdx.files.internal("items.png")); - for (int i = 0; i < ITEM_TEXTURES; i++) { - itemTex[i] = new Sprite(items, - (i % 16) * 16, (i / 16) * 16, 16, 16); - itemTex[i].flip(false, true); - } - items = null; } public static int getStringWidth(String s) { diff --git a/desktop/src/ru/deadsoftware/cavedroid/desktop/DesktopLauncher.java b/desktop/src/ru/deadsoftware/cavedroid/desktop/DesktopLauncher.java index bdfdd77..b3f09bf 100644 --- a/desktop/src/ru/deadsoftware/cavedroid/desktop/DesktopLauncher.java +++ b/desktop/src/ru/deadsoftware/cavedroid/desktop/DesktopLauncher.java @@ -10,7 +10,7 @@ public class DesktopLauncher { LwjglApplicationConfiguration config = new LwjglApplicationConfiguration(); config.addIcon("icons/icon256.png", Files.FileType.Internal); config.addIcon("icons/icon128.png", Files.FileType.Internal); - config.foregroundFPS = 60; + config.foregroundFPS = 144; config.title = "CaveDroid"; config.width = 960; config.height = 540; -- 2.29.2