nageyqma·git
HTTPS https://git.nageyqma.icu/nageyqma/blade-addons-next.git SSH git@git.nageyqma.icu:nageyqma/blade-addons-next.git

HTTPS 链接可直接 git clone;推送代码请使用 SSH。

2.1 KB · 68 行raw
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
package blade.addon.utils;

import blade.addon.Bladeaddons;
import blade.addon.utils.debug.Debug;
import blade.addon.utils.dungeon.Split;
import com.google.gson.JsonArray;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;
import org.jetbrains.annotations.NotNull;

import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.Reader;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;

public class JsonUtility {

    public static @NotNull HashMap<String, ArrayList<Split>> readSplits(String path) {

        try (InputStream stream = Bladeaddons.class.getResourceAsStream(path)) {

            if (stream == null) return new HashMap<>();

            try (Reader reader = new InputStreamReader(stream)) {

                JsonElement element = JsonParser.parseReader(reader);
                return parseSplits(element);
            }
        } catch (IOException e) {
            Debug.LOGGER.error("Failed to parse a split");
        }

        return new HashMap<>();
    }

    private static HashMap<String, ArrayList<Split>> parseSplits(JsonElement jsonElement) {
        HashMap<String, ArrayList<Split>> floors = new HashMap<>();
        JsonObject object = jsonElement.getAsJsonObject();

        for (Map.Entry<String, JsonElement> floorEntry : object.entrySet()) {

            ArrayList<Split> splits = new ArrayList<>();

            String floorName = floorEntry.getKey();
            JsonArray dialoguesArray = floorEntry.getValue().getAsJsonArray();

            for (JsonElement dialogueElement : dialoguesArray) {
                JsonObject dialogueObj = dialogueElement.getAsJsonObject();

                int color = dialogueObj.get("color").getAsInt();
                String name = dialogueObj.get("name").getAsString();
                String start = dialogueObj.get("start").getAsString();
                String end = dialogueObj.get("end").getAsString();


                splits.add(new Split(name, start, end, color));
            }

            floors.put(floorName, splits);
        }
        return floors;
    }
}