aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/GoodGenerator/CrossMod/Thaumcraft/LargeEssentiaEnergyData.java
blob: 60ef46e8ba3310aa77f4834c965217ca93fb6c8c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
package GoodGenerator.CrossMod.Thaumcraft;

import com.google.gson.JsonArray;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;
import thaumcraft.api.aspects.Aspect;

import java.io.*;
import java.net.URL;
import java.nio.charset.StandardCharsets;
import java.util.HashMap;

public class LargeEssentiaEnergyData {

    public static final HashMap<Aspect, FuelData> ASPECT_FUEL_DATA = new HashMap<>();

    public static String readJsonFile() {
        try {
            URL url = Thread.currentThread().getContextClassLoader().getResource("assets/goodgenerator/data/essentia.json");
            assert url != null;
            BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream(), StandardCharsets.UTF_8));
            String s;
            StringBuilder sb = new StringBuilder();
            while ((s = in.readLine()) != null) {
                sb.append(s);
            }
            in.close();
            return sb.toString();
        } catch (IOException e) {
            e.printStackTrace();
            return null;
        }
    }

    public static void processEssentiaData() {
        String data = readJsonFile();
        if (data == null) {
            return;
        }
        JsonParser jsonParser = new JsonParser();
        JsonObject jsonObject = (JsonObject)jsonParser.parse(data);
        JsonArray jsonArray = jsonObject.get("Essentia").getAsJsonArray();
        for (JsonElement elm : jsonArray) {
            JsonObject essData = elm.getAsJsonObject();
            String aspectName = essData.get("name").getAsString();
            Aspect aspect = Aspect.getAspect(aspectName.toLowerCase());
            if (aspect != null) {
                int fuel = essData.get("fuelValue").getAsInt();
                String cate = essData.get("category").getAsString();
                float ceo = essData.get("consumeCeo").getAsFloat();
                ASPECT_FUEL_DATA.put(aspect, new FuelData(fuel, cate, ceo));
            }
        }
    }

    public static int getAspectTypeIndex(Aspect aspect) {
        if (ASPECT_FUEL_DATA.containsKey(aspect)) {
            return ASPECT_FUEL_DATA.get(aspect).getCategoryIndex();
        }
        else return -1;
    }

    public static String getAspectType(Aspect aspect) {
        if (ASPECT_FUEL_DATA.containsKey(aspect)) {
            return ASPECT_FUEL_DATA.get(aspect).getCategory();
        }
        else return null;
    }

    public static int getAspectFuelValue(Aspect aspect) {
        if (ASPECT_FUEL_DATA.containsKey(aspect)) {
            return ASPECT_FUEL_DATA.get(aspect).getFuelValue();
        }
        else return 0;
    }

    public static float getAspectCeo(Aspect aspect) {
        if (ASPECT_FUEL_DATA.containsKey(aspect)) {
            return ASPECT_FUEL_DATA.get(aspect).getConsumeSpeed();
        }
        else return 0;
    }
}

class FuelData {
    private final int fuelValue;
    private final String category;
    private final float consumeSpeed;

    FuelData(int basicValue, String cate, float ceo) {
        fuelValue = basicValue;
        category = cate;
        consumeSpeed = ceo;
    }

    public int getFuelValue() {
        return fuelValue;
    }

    public float getConsumeSpeed() {
        return consumeSpeed;
    }

    public String getCategory() {
        return category;
    }

    public int getCategoryIndex() {
        switch (category) {
            case "NORMAL": return 0;
            case "AIR": return 1;
            case "THERMAL": return 2;
            case "UNSTABLE": return 3;
            case "VICTUS": return 4;
            case "TAINTED": return 5;
            case "MECHANICS": return 6;
            case "SPRITE": return 7;
            case "RADIATION": return 8;
            case "ELECTRIC": return 9;
            default: return -1;
        }
    }
}