aboutsummaryrefslogtreecommitdiff
path: root/goodgen/src/main/java/goodgenerator/crossmod/thaumcraft/LargeEssentiaEnergyData.java
blob: 6d3249501e8555f2ee1ed77c20794081ee31d9cb (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
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
package goodgenerator.crossmod.thaumcraft;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.URL;
import java.nio.charset.StandardCharsets;
import java.util.HashMap;

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;

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;
        }
    }
}