// • ▌ ▄ ·.  ▄▄▄·  ▄▄ • ▪   ▄▄· ▄▄▄▄·  ▄▄▄·  ▐▄▄▄  ▄▄▄ .
// ·██ ▐███▪▐█ ▀█ ▐█ ▀ ▪██ ▐█ ▌▪▐█ ▀█▪▐█ ▀█ •█▌ ▐█▐▌·
// ▐█ ▌▐▌▐█·▄█▀▀█ ▄█ ▀█▄▐█·██ ▄▄▐█▀▀█▄▄█▀▀█ ▐█▐ ▐▌▐▀▀▀
// ██ ██▌▐█▌▐█ ▪▐▌▐█▄▪▐█▐█▌▐███▌██▄▪▐█▐█ ▪▐▌██▐ █▌▐█▄▄▌
// ▀▀  █▪▀▀▀ ▀  ▀ ·▀▀▀▀ ▀▀▀·▀▀▀ ·▀▀▀▀  ▀  ▀ ▀▀  █▪ ▀▀▀
//      Magicbane Emulator Project © 2013 - 2024
//                www.magicbane.com

package engine.wpak;

import engine.gameManager.ConfigManager;

import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.ArrayList;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class PowersParser {

    public static String powersPath = ConfigManager.DEFAULT_DATA_DIR + "wpak/Effects.cfg";
    private static final Pattern POWER_REGEX = Pattern.compile("(?<=POWERBEGIN)(.+?)(?=POWEREND)", Pattern.DOTALL);
    private static final Pattern STRSPLIT_REGEX = Pattern.compile("([^\"]\\S*|\"[^\"]*\")\\s*");

    public static void parseWpakFile() throws IOException {

        // Read .wpak file from disk

        byte[] fileData = Files.readAllBytes(Paths.get(powersPath));
        String fileContents = new String(fileData);

        // Iterate over effect entries from .wpak data

        Matcher matcher = POWER_REGEX.matcher(fileContents);

        while (matcher.find()) {

            PowerEntry powerEntry = parsePowerEntry(matcher.group(1).trim());

        }
    }

    private static PowerEntry parsePowerEntry(String powerData) {

        PowerEntry powerEntry = new PowerEntry();
        ArrayList<String> powerValues = new ArrayList<>();
        String[] powerEntries = powerData.trim().split("\n");

        for (String powerString : powerEntries) {

            Matcher matcher = STRSPLIT_REGEX.matcher(powerString.trim());

            while (matcher.find())
                powerValues.add(matcher.group(1).trim());

        }
        return powerEntry;
    }

}