55 lines
2.1 KiB
Java
55 lines
2.1 KiB
Java
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()));
|
|
}
|
|
}
|
|
}
|
|
}
|