📄 dynamenu.java
字号:
/**
* Dynamically constructed menu class.
*/
import javax.microedition.lcdui.*;
import java.util.Vector;
public class DynaMenu extends List implements CommandListener
{
private static final int MAIN_MENU = 100;
private static final int SETTINGS_MENU = 110;
private static final int AUTOFIRE_TOGGLE_MENU = 111;
private static final int VIBRATE_TOGGLE_MENU = 112;
private static final int STARFIELD_TOGGLE_MENU = 113;
private static final int KEYSETUP_MENU = 120;
private static final int LEFTKEY_MENU = 121;
private static final int RIGHTKEY_MENU = 122;
private static final int FIREKEY_MENU = 123;
private static final int CONFIRM_NEW_GAME_MENU = 130;
private Command back;
private int currentMenu;
public DynaMenu()
{
super("", IMPLICIT);
goMainMenu();
setCommandListener(this);
}
public void goMainMenu()
{
int savedLevel = World.getSavedLevel();
Vector items = new Vector();
items.addElement(Locale.getString("Main Menu.New Game"));
if (StarAssault.getApp().hasAGameRunning() || savedLevel > 0)
items.addElement(Locale.getString("Main Menu.Resume Game"));
items.addElement(Locale.getString("Main Menu.Settings"));
items.addElement(Locale.getString("Main Menu.Change Keys"));
items.addElement(Locale.getString("Main Menu.Help"));
items.addElement(Locale.getString("Main Menu.About"));
String[] s = new String[items.size()];
for (int i = 0; i < items.size(); i++)
s[i] = (String) items.elementAt(i);
setupMenu(Locale.getString("Main Menu.Title"), s,
Locale.getString("General.Exit"));
currentMenu = MAIN_MENU;
}
public void goSettingsMenu()
{
setupMenu(Locale.getString("Settings Menu.Title"),
new String[]
{
Locale.getString("Settings Menu.Auto fire"),
Locale.getString("Settings Menu.Shake"),
Locale.getString("Settings Menu.Star field")
},
Locale.getString("General.Back"));
currentMenu = SETTINGS_MENU;
}
public void goKeySetupMenu()
{
setupMenu(Locale.getString("Key Setup Menu.Title"),
new String[]
{
Locale.getString("Key Setup Menu.Left"),
Locale.getString("Key Setup Menu.Right"),
Locale.getString("Key Setup Menu.Fire")
},
Locale.getString("General.Back"));
currentMenu = KEYSETUP_MENU;
}
public void goToggleMenu(String title, int menuId, boolean on)
{
setupMenu(title,
new String[]
{
Locale.getString("General.On"),
Locale.getString("General.Off")
}, null);
if (on)
setSelectedIndex(0, true);
else
setSelectedIndex(1, true);
currentMenu = menuId;
}
public void goYesNoMenu(String title, int menuId, boolean on)
{
setupMenu(title,
new String[]
{
Locale.getString("General.Yes"),
Locale.getString("General.No")
}, null);
if (on)
setSelectedIndex(0, true);
else
setSelectedIndex(1, true);
currentMenu = menuId;
}
public void goKeyNumMenu(String title, int menuId, int currentNum)
{
setupMenu(title,
new String[]
{
Locale.getString("Key Num Menu.Num-0"),
Locale.getString("Key Num Menu.Num-1"),
Locale.getString("Key Num Menu.Num-2"),
Locale.getString("Key Num Menu.Num-3"),
Locale.getString("Key Num Menu.Num-4"),
Locale.getString("Key Num Menu.Num-5"),
Locale.getString("Key Num Menu.Num-6"),
Locale.getString("Key Num Menu.Num-7"),
Locale.getString("Key Num Menu.Num-8"),
Locale.getString("Key Num Menu.Num-9")
}, null);
setSelectedIndex(currentNum, true);
currentMenu = menuId;
}
public void setupMenu(String title, String[] choices, String backCommandName)
{
setTitle(title);
// clear the current list & command
int s = size();
for (int i = 0; i < s; i++)
delete(0);
removeCommand(back);
// add the new choices
for (int i = 0; i < choices.length; i++)
append(choices[i], null);
// add the back command, if they wanted one
if (backCommandName != null)
{
back = new Command(backCommandName, Command.BACK, 1);
addCommand(back);
}
}
public void commandAction(Command command, Displayable displayable)
{
if (command == back)
{
if (currentMenu == SETTINGS_MENU) goMainMenu();
if (currentMenu == KEYSETUP_MENU) goSettingsMenu();
}
if (command == List.SELECT_COMMAND)
{
String selected = getString(getSelectedIndex());
switch (currentMenu)
{
case MAIN_MENU:
if (selected.equals(Locale.getString("Main Menu.New game")))
{
// if they already have a game running the confirm that
// they want to create a new game
if (StarAssault.getApp().hasAGameRunning())
{
goYesNoMenu(Locale.getString("General.Are you sure"), CONFIRM_NEW_GAME_MENU, false);
}
else
StarAssault.getApp().createNewGame();
}
if (selected.equals(Locale.getString("Main Menu.Resume game")))
{
if (StarAssault.getApp().hasAGameRunning())
StarAssault.getApp().activateGameScreen();
else
StarAssault.getApp().loadGame();
}
if (selected.equals(Locale.getString("Main Menu.Settings")))
goSettingsMenu();
if (selected.equals(Locale.getString("Main Menu.Change keys")))
goKeySetupMenu();
if (selected.equals(Locale.getString("Main Menu.Help")))
{
StarAssault.activateDisplayable(
new TextForm(this, Locale.getString("General.Help")));
}
if (selected.equals("About"))
{
StarAssault.activateDisplayable(
new TextForm(this,
Locale.getString("General.About")));
}
break;
case CONFIRM_NEW_GAME_MENU:
if (getBool(selected))
StarAssault.getApp().createNewGame();
break;
// SETTINGS...
case SETTINGS_MENU:
if (selected.equals(Locale.getString("Settings Menu.Auto fire")))
goToggleMenu(Locale.getString("Settings Menu.Auto fire"), AUTOFIRE_TOGGLE_MENU, StarAssault.getApp().isOptionAutoFire());
if (selected.equals(Locale.getString("Settings Menu.Shake")))
goToggleMenu(Locale.getString("Settings Menu.Shake"), VIBRATE_TOGGLE_MENU, StarAssault.getApp().isOptionVibrate());
if (selected.equals(Locale.getString("Settings Menu.Star field")))
goToggleMenu(Locale.getString("Settings Menu.Star field"), STARFIELD_TOGGLE_MENU, StarAssault.getApp().isOptionStarField());
break;
case AUTOFIRE_TOGGLE_MENU:
StarAssault.getApp().setOptionAutoFire(getBool(selected));
StarAssault.getApp().saveSettings();
goSettingsMenu();
break;
case STARFIELD_TOGGLE_MENU:
StarAssault.getApp().setOptionStarField(getBool(selected));
StarAssault.getApp().saveSettings();
goSettingsMenu();
break;
case VIBRATE_TOGGLE_MENU:
StarAssault.getApp().setOptionVibrate(getBool(selected));
StarAssault.getApp().saveSettings();
goSettingsMenu();
break;
// KEYS...
case KEYSETUP_MENU:
if (selected.equals(Locale.getString("Key Setup Menu.Left")))
goKeyNumMenu(Locale.getString("Key Setup Menu.Left"), LEFTKEY_MENU, StarAssault.getApp().getLeftKeyNum());
if (selected.equals(Locale.getString("Key Setup Menu.Right")))
goKeyNumMenu(Locale.getString("Key Setup Menu.Right"), RIGHTKEY_MENU, StarAssault.getApp().getRightKeyNum());
if (selected.equals(Locale.getString("Settings Menu.Fire")))
goKeyNumMenu(Locale.getString("Settings Menu.Fire Key"), FIREKEY_MENU, StarAssault.getApp().getFireKeyNum());
break;
case LEFTKEY_MENU:
StarAssault.getApp().setLeftKeyNum(getKeyNum(selected));
StarAssault.getApp().saveSettings();
goKeySetupMenu();
break;
case RIGHTKEY_MENU:
StarAssault.getApp().setRightKeyNum(getKeyNum(selected));
StarAssault.getApp().saveSettings();
goKeySetupMenu();
break;
case FIREKEY_MENU:
StarAssault.getApp().setFireKeyNum(getKeyNum(selected));
StarAssault.getApp().saveSettings();
goKeySetupMenu();
break;
}
}
}
public static final boolean getBool(String s)
{
if (s.equals(Locale.getString("General.On"))) return true;
if (s.equals(Locale.getString("General.Enable"))) return true;
if (s.equals(Locale.getString("General.Yes"))) return true;
return false;
}
public static final int getKeyNum(String s)
{
String n = s.substring(4, 5);
return Integer.parseInt(n);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -