RuneHive-Tarnish
Neural OSRS Enhancement Framework
Loading...
Searching...
No Matches
LMSLoadoutManager.java
1package com.osroyale.content.lms.loadouts;
2
3import com.osroyale.content.lms.lobby.LMSLobby;
4import com.osroyale.util.Utility;
5import io.github.classgraph.*;
6import org.apache.logging.log4j.LogManager;
7import org.apache.logging.log4j.Logger;
8
9import java.lang.reflect.Constructor;
10import java.util.ArrayList;
11import java.util.List;
12
13
33
34public class LMSLoadoutManager {
35 private static final Logger logger = LogManager.getLogger(LMSLoadoutManager.class);
36
37 private static List<LMSLoadout> lmsLoadouts = new ArrayList<LMSLoadout>();
38
39 public static List<LMSLoadout> getLmsLoadouts() {
40 return lmsLoadouts;
41 }
42
43 public static void load() {
44 try (final ScanResult scanResult = new ClassGraph().enableClassInfo().enableMethodInfo().scan()) {
45 for (final ClassInfo classInfo : scanResult.getSubclasses(LMSLoadout.class)) {
46 try {
47 if (!classInfo.isAbstract()) {
48 final MethodInfoList constructorInfos = classInfo.getDeclaredConstructorInfo();
49 final MethodInfo constructorInfo = constructorInfos.get(0);
50 final Constructor<?> constructor = constructorInfo.loadClassAndGetConstructor();
51
52 final Object instance = constructor.newInstance();
53 final LMSLoadout loadout = (LMSLoadout) instance;
54
55 loadout.setup();
56 lmsLoadouts.add(loadout);
57 }
58 } catch (Exception ex) {
59 logger.error(String.format("Error loading lms loadout=%s", classInfo.getSimpleName()), ex);
60 }
61 }
62 }
63 logger.info(String.format("Loaded: %d lms loadouts.", lmsLoadouts.size()));
64
65 LMSLobby.currentGameType = LMSLoadoutManager.getLmsLoadouts().get(Utility.random(LMSLoadoutManager.getLmsLoadouts().size()));
66 }
67
68}