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, MUGuild> classMap = new HashMap<>(); private static final Map idMap = new HashMap<>(); private static int nextId = 0; private static void registerGuiHandlers(final GUITypes MU_GuiType, final List> guiHandlerClasses) { for (final Class 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 guiHandlerClass = guiHandler.getClass(); MUGuild guiId = classMap.get(guiHandlerClass); if (guiId == null) { for (final Map.Entry, 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); } }