RuneHive-Game
Loading...
Searching...
No Matches
LMSLoadoutManager.java
Go to the documentation of this file.
1package com.runehive.content.lms.loadouts;
2
3import com.runehive.content.lms.lobby.LMSLobby;
4import com.runehive.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
14public class LMSLoadoutManager {
15 private static final Logger logger = LogManager.getLogger(LMSLoadoutManager.class);
16
17 private static List<LMSLoadout> lmsLoadouts = new ArrayList<LMSLoadout>();
18
19 public static List<LMSLoadout> getLmsLoadouts() {
20 return lmsLoadouts;
21 }
22
23 public static void load() {
24 try (final ScanResult scanResult = new ClassGraph().enableClassInfo().enableMethodInfo().scan()) {
25 for (final ClassInfo classInfo : scanResult.getSubclasses(LMSLoadout.class)) {
26 try {
27 if (!classInfo.isAbstract()) {
28 final MethodInfoList constructorInfos = classInfo.getDeclaredConstructorInfo();
29 final MethodInfo constructorInfo = constructorInfos.get(0);
30 final Constructor<?> constructor = constructorInfo.loadClassAndGetConstructor();
31
32 final Object instance = constructor.newInstance();
33 final LMSLoadout loadout = (LMSLoadout) instance;
34
35 loadout.setup();
36 lmsLoadouts.add(loadout);
37 }
38 } catch (Exception ex) {
39 logger.error(String.format("Error loading lms loadout=%s", classInfo.getSimpleName()), ex);
40 }
41 }
42 }
43 logger.info(String.format("Loaded: %d lms loadouts.", lmsLoadouts.size()));
44
46 }
47
48}
static LMSLoadout currentGameType
The current game type.
Definition LMSLobby.java:43
Handles miscellaneous methods.
Definition Utility.java:27
static int random(int bound)
Definition Utility.java:239