package net.scapeemulator.game.util;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public final class LandscapeKeyTable {
private static final Logger logger = LoggerFactory.getLogger(LandscapeKeyTable.class);
public static final int[] EMPTY_KEY_ARRAY = new int[4];
public static LandscapeKeyTable open(String dir) throws IOException {
return open(new File(dir));
}
public static LandscapeKeyTable open(File dir) throws IOException {
LandscapeKeyTable table = new LandscapeKeyTable();
for (File f : dir.listFiles()) {
String name = f.getName();
if (name.matches("^[0-9]+\\.txt$")) {
int region = Integer.parseInt(name.substring(0, name.length() - 4));
table.keys.put(region, readKeys(f));
}
}
logger.info("Loaded " + table.keys.size() + " landscape keys.");
return table;
}
private static int[] readKeys(File f) throws IOException {
try (BufferedReader reader = new BufferedReader(new FileReader(f))) {
int[] keys = new int[4];
for (int i = 0; i < keys.length; i++) {
keys[i] = Integer.parseInt(reader.readLine());
}
return keys;
}
}
private final Map<Integer, int[]> keys = new HashMap<>();
public int[] getKeys(int x, int y) {
int[] k = keys.get((x << 8) | y);
if (k == null)
k = EMPTY_KEY_ARRAY;
return k;
}
}