diff --git a/core/src/ru/deadsoftware/cavedroid/game/GameItems.java b/core/src/ru/deadsoftware/cavedroid/game/GameItems.java
index 8392efdb786602ca0e874d11ce185895ca74c494..7cf525263a52dec4c252f87d6e91129b45ada223 100644 (file)
import com.badlogic.gdx.utils.GdxRuntimeException;
import com.badlogic.gdx.utils.JsonValue;
import ru.deadsoftware.cavedroid.game.model.block.*;
-import ru.deadsoftware.cavedroid.game.objects.Item;
+import ru.deadsoftware.cavedroid.game.model.item.CommonItemParams;
+import ru.deadsoftware.cavedroid.game.model.item.Item;
import ru.deadsoftware.cavedroid.misc.Assets;
import ru.deadsoftware.cavedroid.misc.utils.AssetLoader;
import ru.deadsoftware.cavedroid.misc.utils.SpriteOrigin;
return getBlock(id).getTexture();
}
- public static Sprite getItemTex(int id) {
- return items.getValueAt(id).getType().equals("block") ? getBlockTex(id) : getItem(id).getTexture();
- }
-
public static void load(AssetLoader assetLoader) {
JsonValue json = Assets.jsonReader.parse(assetLoader.getAssetHandle("json/game_items.json"));
TreeSet<Block> blocksSet = new TreeSet<>(Comparator.comparingInt(a -> a.getParams().getId()));
- TreeSet<Item> itemsSet = new TreeSet<>(Comparator.comparingInt(Item::getId));
+ TreeSet<Item> itemsSet = new TreeSet<>(Comparator.comparingInt(a -> a.getParams().getId()));
int count = 0;
}
}
+ blocksSet.forEach((block -> blocks.put(block.getParams().getKey(), block)));
+
count = 0;
for (JsonValue item = json.get("items").child(); item != null; item = item.next()) {
try {
Sprite sprite = type.equals("block") ? null :
new Sprite(new Texture(assetLoader.getAssetHandle("textures/items/" + texture + ".png")));
+ if (sprite != null) {
+ sprite.flip(false, true);
+ }
+
float originX = Assets.getFloatFromJson(item, "origin_x", 0f);
float originY = Assets.getFloatFromJson(item, "origin_y", 1f);
originX = MathUtils.clamp(originX, 0f, 1f);
String actionKey = Assets.getStringFromJson(item, "action_key", null);
+ float mobDamage = Assets.getFloatFromJson(item, "mob_damage_multiplier", 1f);
+ float blockDamage = Assets.getFloatFromJson(item, "block_damage_multiplier", 1f);
+
if (count >= id) {
count++;
}
+ CommonItemParams params = new CommonItemParams(id, key, name, origin);
+
+ Item newItem = switch (type) {
+ case "bucket" -> new Item.Bucket(params, sprite, actionKey);
+ case "shovel" -> new Item.Shovel(params, sprite, mobDamage, blockDamage);
+ case "sword" -> new Item.Sword(params, sprite, mobDamage, blockDamage);
+ case "block" -> new Item.Placeable(params, blocks.get(key));
+ default -> throw new RuntimeException("Unknown item type: " + type);
+ };
+
itemsIds.put(key, id);
- itemsSet.add(new Item(id, key, name, type, sprite, origin, actionKey));
+ itemsSet.add(newItem);
} catch (GdxRuntimeException e) {
Gdx.app.error(TAG, e.getMessage());
}
}
- blocksSet.forEach((block -> blocks.put(block.getParams().getKey(), block)));
- itemsSet.forEach((item -> items.put(item.getKey(), item)));
+ itemsSet.forEach((item -> items.put(item.getParams().getKey(), item)));
}
}
\ No newline at end of file