package magic.ui.screen.menu.main;
import java.awt.KeyEventDispatcher;
import java.awt.KeyboardFocusManager;
import java.awt.event.KeyEvent;
import magic.data.GeneralConfig;
import magic.ui.ScreenController;
import magic.ui.WikiPage;
import magic.ui.screen.MScreen;
import magic.utility.MagicSystem;
@SuppressWarnings("serial")
public class MainMenuScreen extends MScreen {
private static final KeyboardFocusManager KBM = KeyboardFocusManager.getCurrentKeyboardFocusManager();
private final MainMenuContentPanel contentPanel;
static boolean isCtrlKeyPressed = false;
private final KeyEventDispatcher keyEventDispatcher = (KeyEvent ev) -> {
if (!ScreenController.isActive(this)) {
return false;
}
synchronized (MainMenuScreen.class) {
switch (ev.getID()) {
case KeyEvent.KEY_PRESSED:
if (ev.isControlDown() && !isCtrlKeyPressed) {
isCtrlKeyPressed = true;
showDevModeMenuItem();
return true;
}
break;
case KeyEvent.KEY_RELEASED:
if (isCtrlKeyPressed) {
isCtrlKeyPressed = false;
hideDevModeMenuItem();
return true;
}
break;
}
return false;
}
};
public MainMenuScreen() {
MagicSystem.setIsTestGame(false);
contentPanel = new MainMenuContentPanel();
setMainContent(contentPanel);
setWikiPage(WikiPage.MAIN_MENU);
if (!MagicSystem.isDevMode()) {
KBM.addKeyEventDispatcher(keyEventDispatcher);
}
}
private void showDevModeMenuItem() {
contentPanel.showDevModeMenuItem();
}
private void hideDevModeMenuItem() {
contentPanel.hideDevModeMenuItem();
}
public void updateMissingImagesNotification() {
if (GeneralConfig.getInstance().isMissingFiles()) {
GeneralConfig.getInstance().setIsMissingFiles(false);
contentPanel.refreshAlerts();
}
}
@Override
public boolean isScreenReadyToClose(MScreen aScreen) {
if (!MagicSystem.isDevMode()) {
KBM.removeKeyEventDispatcher(keyEventDispatcher);
}
return super.isScreenReadyToClose(aScreen);
}
}