package net.halfheart.ventricleengine; import net.halfheart.ventricleengine.objects.AidModifier; import net.halfheart.ventricleengine.objects.Player; import org.json.JSONArray; import org.json.JSONObject; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.nio.charset.StandardCharsets; import java.util.Objects; import java.util.stream.Collectors; public class AidModifierHandler { // Creates AidModifier object by parsing JSON public static AidModifier constructAidModifier(String aidModifierName) { String filename = "/aid_modifiers.json"; try (InputStream inputStream = WeaponsHandler.class.getResourceAsStream(filename)) { String jsonText = new BufferedReader( new InputStreamReader(Objects.requireNonNull(inputStream), StandardCharsets.UTF_8)) .lines() .collect(Collectors.joining("\n")); JSONArray jsonArray = new JSONArray(jsonText); JSONObject wantedItem = null; for (int i = 0; i < jsonArray.length(); i++) { JSONObject item = jsonArray.getJSONObject(i); if (item.opt("name").toString().equals(aidModifierName)) { wantedItem = item; } } assert wantedItem != null; String name = wantedItem.opt("name").toString(); String stat = wantedItem.opt("stat").toString(); String mod = wantedItem.opt("mod").toString(); short value = (short) wantedItem.opt("value"); return new AidModifier(name, stat, mod, value); } catch (IOException e) { throw new RuntimeException(e); } } public static void applyAid(AidModifier modifier) { Player player = GameSpace.getInstance().getPlayer(); if (modifier.getStat().equals("hp")) { char action = modifier.getMod().charAt(0); switch (action) { case '+' -> player.setHp((short) (player.getHp() + modifier.getValue())); } } } }