DEADSOFTWARE

Fix script
[cavedroid.git] / core / src / ru / deadsoftware / cavedroid / game / GameItems.java
index 64fba5add7c89326fb65c70a63df094cc894eb85..7a619b30748da834cdd003dcf4a7da2362b94979 100644 (file)
@@ -9,6 +9,7 @@ import com.badlogic.gdx.utils.JsonValue;
 import ru.deadsoftware.cavedroid.game.objects.Block;
 import ru.deadsoftware.cavedroid.game.objects.Item;
 import ru.deadsoftware.cavedroid.misc.Assets;
+import ru.deadsoftware.cavedroid.misc.utils.AssetLoader;
 
 import java.util.HashMap;
 
@@ -27,11 +28,19 @@ public class GameItems {
     }
 
     public static boolean isWater(int id) {
-        return getBlock(id).getMeta().equals("water");
+        return isWater(getBlock(id));
+    }
+
+    public static boolean isWater(Block block) {
+        return block.getMeta().equals("water");
     }
 
     public static boolean isLava(int id) {
-        return getBlock(id).getMeta().equals("lava");
+        return isLava(getBlock(id));
+    }
+
+    public static boolean isLava(Block block) {
+        return block.getMeta().equals("lava");
     }
 
     public static boolean isSlab(int id) {
@@ -96,8 +105,8 @@ public class GameItems {
         return items.getValueAt(id).getType().equals("block") ? getBlockTex(id) : getItem(id).getTexture();
     }
 
-    public static void load() {
-        JsonValue json = Assets.jsonReader.parse(Gdx.files.internal("json/game_items.json"));
+    public static void load(AssetLoader assetLoader) {
+        JsonValue json = Assets.jsonReader.parse(assetLoader.getAssetHandle("json/game_items.json"));
         for (JsonValue block = json.get("blocks").child(); block != null; block = block.next()) {
             try {
                 String key = block.name();
@@ -105,19 +114,46 @@ public class GameItems {
                 int right = Assets.getIntFromJson(block, "right", 0);
                 int top = Assets.getIntFromJson(block, "top", 0);
                 int bottom = Assets.getIntFromJson(block, "bottom", 0);
+                int clipX = Assets.getIntFromJson(block, "sprite_left", 0);
+                int clipY = Assets.getIntFromJson(block, "sprite_top", 0);
+                int clipWidth = Assets.getIntFromJson(block, "sprite_right", 0);
+                int clipHeight = Assets.getIntFromJson(block, "sprite_bottom", 0);
                 int hp = Assets.getIntFromJson(block, "hp", -1);
-                boolean coll = Assets.getBooleanFromJson(block, "collision", true);
-                boolean bg = Assets.getBooleanFromJson(block, "background", false);
-                boolean tp = Assets.getBooleanFromJson(block, "transparent", false);
-                boolean br = Assets.getBooleanFromJson(block, "block_required", false);
+                boolean collision = Assets.getBooleanFromJson(block, "collision", true);
+                boolean background = Assets.getBooleanFromJson(block, "background", false);
+                boolean transparent = Assets.getBooleanFromJson(block, "transparent", false);
+                boolean requiresBlock = Assets.getBooleanFromJson(block, "block_required", false);
                 boolean fluid = Assets.getBooleanFromJson(block, "fluid", false);
                 String drop = Assets.getStringFromJson(block, "drop", key);
                 String meta = Assets.getStringFromJson(block, "meta", "");
                 String tex = Assets.getStringFromJson(block, "texture", key);
-                Sprite sprite = tex.equals("none") ? null :
-                        new Sprite(new Texture(Gdx.files.internal("textures/blocks/" + tex + ".png")));
+                Texture texture = tex.equals("none") ? null :
+                        new Texture(assetLoader.getAssetHandle("textures/blocks/" + tex + ".png"));
+                boolean animated = Assets.getBooleanFromJson(block, "animated", false);
+                int frames = Assets.getIntFromJson(block, "frames", 0);
+
+                Block newBlock = new Block(
+                        left,
+                        top,
+                        right,
+                        bottom,
+                        hp,
+                        drop,
+                        collision,
+                        background,
+                        transparent,
+                        requiresBlock,
+                        fluid,
+                        meta,
+                        texture,
+                        animated,
+                        frames,
+                        clipX,
+                        clipY,
+                        clipWidth,
+                        clipHeight
+                );
 
-                Block newBlock = new Block(left, top, right, bottom, hp, drop, coll, bg, tp, br, fluid, meta, sprite);
                 blocksIds.put(key, blocks.size);
                 blocks.put(key, newBlock);
             } catch (GdxRuntimeException e) {
@@ -131,7 +167,7 @@ public class GameItems {
                 String type = Assets.getStringFromJson(item, "type", "item");
                 String texture = Assets.getStringFromJson(item, "texture", key);
                 Sprite sprite = type.equals("block") ? null :
-                        new Sprite(new Texture(Gdx.files.internal("textures/items/" + texture + ".png")));
+                        new Sprite(new Texture(assetLoader.getAssetHandle("textures/items/" + texture + ".png")));
                 itemsIds.put(key, items.size);
                 items.put(key, new Item(name, type, sprite));
             } catch (GdxRuntimeException e) {