Refactor resource loader

This commit is contained in:
Melledy
2024-03-16 04:01:53 -07:00
parent 0d5ad9de04
commit bb4342560a
3 changed files with 23 additions and 19 deletions

View File

@@ -84,24 +84,7 @@ public class GameData {
// Configs (Bin) // Configs (Bin)
@Getter private static Object2ObjectMap<String, FloorInfo> floorInfos = new Object2ObjectOpenHashMap<>(); @Getter private static Object2ObjectMap<String, FloorInfo> floorInfos = new Object2ObjectOpenHashMap<>();
public static Int2ObjectMap<?> getMapForExcel(Class<?> resourceDefinition) {
Int2ObjectMap<?> map = null;
try {
Field field = GameData.class.getDeclaredField(Utils.lowerCaseFirstChar(resourceDefinition.getSimpleName()) + "Map");
field.setAccessible(true);
map = (Int2ObjectMap<?>) field.get(null);
field.setAccessible(false);
} catch (Exception e) {
}
return map;
}
public static List<Integer> getAllRelicIds() { public static List<Integer> getAllRelicIds() {
return relicExcelMap.values().stream().map(RelicExcel::getId).toList(); return relicExcelMap.values().stream().map(RelicExcel::getId).toList();
} }

View File

@@ -1,6 +1,7 @@
package emu.lunarcore.data; package emu.lunarcore.data;
import java.io.*; import java.io.*;
import java.lang.reflect.Field;
import java.nio.charset.StandardCharsets; import java.nio.charset.StandardCharsets;
import java.util.*; import java.util.*;
import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.atomic.AtomicInteger;
@@ -21,6 +22,7 @@ import emu.lunarcore.data.ResourceDeserializers.LunarCoreDoubleDeserializer;
import emu.lunarcore.data.ResourceDeserializers.LunarCoreHashDeserializer; import emu.lunarcore.data.ResourceDeserializers.LunarCoreHashDeserializer;
import emu.lunarcore.data.config.FloorInfo.FloorGroupSimpleInfo; import emu.lunarcore.data.config.FloorInfo.FloorGroupSimpleInfo;
import emu.lunarcore.data.custom.ActivityScheduleData; import emu.lunarcore.data.custom.ActivityScheduleData;
import emu.lunarcore.util.Utils;
import it.unimi.dsi.fastutil.ints.Int2ObjectMap; import it.unimi.dsi.fastutil.ints.Int2ObjectMap;
public class ResourceLoader { public class ResourceLoader {
@@ -63,6 +65,23 @@ public class ResourceLoader {
dir.mkdir(); dir.mkdir();
} }
} }
private static Int2ObjectMap<?> getMapForExcel(Class<?> dataClass, Class<?> resourceDefinition) {
Int2ObjectMap<?> map = null;
try {
Field field = dataClass.getDeclaredField(Utils.lowerCaseFirstChar(resourceDefinition.getSimpleName()) + "Map");
field.setAccessible(true);
map = (Int2ObjectMap<?>) field.get(null);
field.setAccessible(false);
} catch (Exception e) {
}
return map;
}
private static List<Class<?>> getResourceDefClasses() { private static List<Class<?>> getResourceDefClasses() {
Reflections reflections = new Reflections(ResourceLoader.class.getPackage().getName()); Reflections reflections = new Reflections(ResourceLoader.class.getPackage().getName());
@@ -90,7 +109,7 @@ public class ResourceLoader {
} }
@SuppressWarnings("rawtypes") @SuppressWarnings("rawtypes")
Int2ObjectMap map = GameData.getMapForExcel(resourceDefinition); Int2ObjectMap map = ResourceLoader.getMapForExcel(type.gameDataClass(), resourceDefinition);
try { try {
loadFromResource(resourceDefinition, type, map); loadFromResource(resourceDefinition, type, map);

View File

@@ -8,6 +8,8 @@ public @interface ResourceType {
/** Names of the file that this Resource loads from */ /** Names of the file that this Resource loads from */
String[] name(); String[] name();
Class<?> gameDataClass() default GameData.class;
/** Load priority - dictates which order to load this resource, with "highest" being loaded first */ /** Load priority - dictates which order to load this resource, with "highest" being loaded first */
LoadPriority loadPriority() default LoadPriority.NORMAL; LoadPriority loadPriority() default LoadPriority.NORMAL;