blob: fbb34ee5b73d86b4124e77b0916e93efaeeb4c18 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
|
package gtPlusPlus.core.gui.beta;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import gtPlusPlus.core.interfaces.IGuiManagerMiscUtils;
public class GUIIDRegistry {
private static final Map<Class<? extends IGuiManagerMiscUtils>, MUGuild> classMap = new HashMap<>();
private static final Map<Integer, MUGuild> idMap = new HashMap<>();
private static int nextId = 0;
private static void registerGuiHandlers(final GUITypes MU_GuiType,
final List<Class<? extends IGuiManagerMiscUtils>> guiHandlerClasses) {
for (final Class<? extends IGuiManagerMiscUtils> tileGuiHandlerClass : guiHandlerClasses) {
final MUGuild guiId = new MUGuild(nextId++, MU_GuiType, tileGuiHandlerClass);
classMap.put(tileGuiHandlerClass, guiId);
idMap.put(guiId.getId(), guiId);
}
}
public static MUGuild getGuiIdForGuiHandler(final IGuiManagerMiscUtils guiHandler) {
final Class<? extends IGuiManagerMiscUtils> guiHandlerClass = guiHandler.getClass();
MUGuild guiId = classMap.get(guiHandlerClass);
if (guiId == null) {
for (final Map.Entry<Class<? extends IGuiManagerMiscUtils>, MUGuild> classGuiIdEntry : classMap
.entrySet()) {
if (classGuiIdEntry.getKey()
.isAssignableFrom(guiHandlerClass)) {
guiId = classGuiIdEntry.getValue();
break;
}
}
}
if (guiId == null) {
throw new IllegalStateException("No gui ID for gui handler: " + guiHandler);
}
return guiId;
}
public static MUGuild getGuiId(final int id) {
return idMap.get(id);
}
}
|