3D spaceshooter with online scoreboard, online demos, ship building. Now entirely defunct, but might be resurrected
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
sector/src/net/sector/gui/panels/PanelMenu.java

134 lines
3.5 KiB

package net.sector.gui.panels;
import java.io.IOException;
import net.sector.App;
import net.sector.Constants;
import net.sector.GameConfig;
import net.sector.gui.panels.dialogs.EDialogColor;
import net.sector.gui.panels.dialogs.PanelDialogModal;
import net.sector.gui.panels.dialogs.PanelDialogModal.IDialogListener;
import net.sector.gui.panels.profiles.PanelProfiles;
import net.sector.gui.screens.Screen;
import net.sector.gui.screens.ScreenDesigner;
import net.sector.gui.screens.ScreenLevels;
import net.sector.gui.widgets.GuiRoot;
import net.sector.gui.widgets.Widget;
import net.sector.gui.widgets.layout.Gap;
import net.sector.gui.widgets.layout.LayoutV;
import net.sector.gui.widgets.menu.MenuButton;
import net.sector.gui.widgets.menu.MenuLoginDisplay;
import net.sector.gui.widgets.menu.MenuTitle;
import net.sector.level.SuperContext;
import net.sector.util.Align;
import net.sector.util.Log;
/**
* Main menu panel
*
* @author Ondřej Hruška (MightyPork)
*/
public class PanelMenu extends PanelGui {
private static final int EXIT = 0;
private static final int PLAY = 1;
private static final int CONFIG = 3;
private static final int USERS = 4;
private static final int LEVELS = 5;
public PanelMenu(Screen screen) {
super(screen);
}
@Override
public void initGui(GuiRoot root) {
LayoutV v = new LayoutV(Align.CENTER);
v.add(new MenuTitle("SECTOR"));
v.add(new Gap(0, 20));
//v.add(new MenuButton(PLAY, "Start game"));
v.add(new MenuButton(LEVELS, "Challenges"));
//v.add(new MenuButton(HISCORE, "Highscore"));
v.add(new Gap(0, 15));
v.add(new MenuLoginDisplay(USERS));
v.add(new Gap(0, 15));
v.add(new MenuButton(CONFIG, "Settings"));
v.add(new MenuButton(EXIT, "Quit game"));
root.setRootWidget(v);
}
@Override
public void onPostInit() {
if (!App.offlineMode && !SuperContext.updateAlertShown && GameConfig.enableUpdateAlerts) {
if (SuperContext.latestVersionNumber > Constants.VERSION_NUMBER) {
SuperContext.updateAlertShown = true;
String message = "Update your SECTOR!\n";
message += "New version " + SuperContext.latestVersionName + " is available.\n";
IDialogListener listener = new IDialogListener() {
@Override
public void onDialogButton(int dialogId, int button) {
if (button == 0) {
try {
java.awt.Desktop.getDesktop().browse(java.net.URI.create(Constants.WEB_URL));
} catch (IOException e) {
Log.e("Error openning website.", e);
}
}
}
};
openPanel(new PanelDialogModal(screen, listener, -1, true, message, "Open website", "Close").setEnterButton(1).setColorTheme(
EDialogColor.GREEN));
}
}
}
@Override
public boolean hasBackgroundLayer() {
return false;
}
@Override
public void actionPerformed(Widget widget) {
if (!widget.isEnabled()) return;
switch (widget.id) {
case EXIT:
PanelDialogModal p;
IDialogListener listener = new IDialogListener() {
@Override
public void onDialogButton(int dialogId, int button) {
if (button == 1) App.inst.exit();
}
};
p = new PanelDialogModal(screen, listener, -1, true, "Do you really want to quit?", "No", "Yes").setEnterButton(1);
p.setColorTheme(EDialogColor.BLUE);
openPanel(p);
break;
case PLAY:
app.replaceScreen(new ScreenDesigner());
break;
case LEVELS:
app.replaceScreen(new ScreenLevels());
break;
case CONFIG:
openPanel(new PanelConfig(screen, 0));
break;
case USERS:
openPanel(new PanelProfiles(screen));
break;
}
}
}