📄 menuscreen.java
字号:
package com.centerscore.game;
import javax.microedition.lcdui.*;
class MenuScreen extends Canvas {
final static byte MENU_RESUME = 0;
final static byte MENU_PLAY = 1;
final static byte MENU_MENU = 2;
final static byte MENU_QUIT = 3;
final static byte MENU_HIGHSCORES = 4;
final static byte MENU_AUDIO = 5;
// SD final static byte MENU_LANGUAGE = 6;
// final static byte MENU_CREDITS = 7;
// final static byte MENU_HELP = 8;
// final static byte MENU_MAIN = 9;
// final static byte MENU_AUDIOON = 10;
// final static byte MENU_AUDIOOFF = 11;
final static byte MENU_CREDITS = 6;
final static byte MENU_HELP = 7;
final static byte MENU_MAIN = 8;
final static byte MENU_AUDIOON = 9;
final static byte MENU_AUDIOOFF = 10;
int level1Index;
int level2Index;
int level3Index;
boolean level2Active;
boolean level3Active;
boolean preSplashScreenDone;
Image m_pImgPreSplash;
private final int QBERT_TEXT_OFFSET_X = 14;
/* Start Modified 23-04-2003 for chinese support */
private final int QBERT_TEXT_OFFSET_Y = 5;
//private final int QBERT_TEXT_OFFSET_Y = -1;
/* End Modified 23-04-2003 */
private final int LEVEL_1_X = 66;
private final int[] LEVEL_1_Y = { 62, 76, 90, 104 };
private final int LEVEL_2_X = 15; // selection gets drawn here
// SD private final int[] LEVEL_2_Y = { 14, 24, 34, 44, 54, 64 }; // selection gets drawn here
/* Start Modified 23-04-2003 for chinese support */
private final int[] LEVEL_2_Y = { 14, 31, 48, 65, 82 }; // selection gets drawn here
// private final int[] LEVEL_2_Y = { 14, 24, 34, 44, 54 }; // selection gets drawn here
/* End Modified 23-04-2003 */
private final int LEVEL2_MENU_OFFSET = 4;
private final int LEVEL_2_WINDOW_X = 10;
private final int LEVEL_2_WINDOW_Y = 8;
private final int LEVEL_2_WINDOW_W = 100;
/* Start Modified 23-04-2003 for chinese support */
private final int LEVEL_2_WINDOW_H = 94;
//private final int LEVEL_2_WINDOW_H = 58;
/* End Modified 23-04-2003 */
// SD private String[] LEVEL2_STRINGS = { "hiscores", "audio", "language", "credits", "help", "main screen" };
/* Start Commented 23-04-2003 for chinese support */
//private String[] LEVEL2_STRINGS = { "hiscores", "audio", "credits", "help", "main screen" };
/* End Commented 23-04-2003 */
private final int LEVEL_3_X = 45;
/* Start Modified 23-04-2003 for chinese support */
private final int[] LEVEL_3_Y = { 35, 50 };
//private final int[] LEVEL_3_Y = { 35, 45 };
/* End Modified 23-04-2003 */
// SD private final int LEVEL3_MENU_OFFSET = 10;
private final int LEVEL3_MENU_OFFSET = 9;
private final int LEVEL_3_WINDOW_X = 40;
private final int LEVEL_3_WINDOW_Y = 30;
/* Start Modified 23-04-2003 for chinese support */
private final int LEVEL_3_WINDOW_W = 44;
//private final int LEVEL_3_WINDOW_W = 40;
private final int LEVEL_3_WINDOW_H = 40;
//private final int LEVEL_3_WINDOW_H = 30;
/* End Modified 23-04-2003 */
private String[] LEVEL3_STRINGS = { "on", "off" };
private boolean level2SelectionChanged;
private boolean level3SelectionChanged;
private GameMidlet m_pMidlet;
private int[] m_arrKeyInputs = new int[6];
MenuScreen(GameMidlet midlet) {
m_pMidlet = midlet;
setCommandListener(m_pMidlet);
try {
m_pImgPreSplash = Image.createImage("/presplash.png");
} catch (Exception ex) {}
}
int getMenuAction() {
if (level3Active) {
return (level3Index + LEVEL3_MENU_OFFSET);
} else if (level2Active) {
return (level2Index + LEVEL2_MENU_OFFSET);
} else {
return (level1Index);
}
}
protected void paint(Graphics g) {
if (preSplashScreenDone) {
if (!level2SelectionChanged & !level3SelectionChanged) {
drawLevel1(g);
}
if (level2Active & !level3SelectionChanged) {
drawLevel2(g);
}
if (level3Active) {
drawLevel3(g);
}
} else {
g.drawImage(m_pImgPreSplash, 0, 0, Globals.GFX_TOPLEFT);
}
}
private void drawLevel1(Graphics g) {
g.drawImage(Sprite.IMG_SPLASH, 0, 0, Globals.GFX_TOPLEFT);
if (m_pMidlet.m_bSavedGame) {
/* Start Modified 08-05-2003 for chinese support */
//VALLI MR2 y 57 - 56
g.drawImage(Sprite.IMG_RESUME, 74, 56, Globals.GFX_TOPLEFT);
//g.drawImage(Sprite.IMG_RESUME, 75, 60, Globals.GFX_TOPLEFT);
/* End Modified 08-05-2003 */
}
/* Start Modified 18-03-2003 transparency */
//VALLI MR2
g.drawImage(Sprite.IMG_SELECT, LEVEL_1_X, LEVEL_1_Y[level1Index], Globals.GFX_TOPLEFT);
//Sprite.drawClipped(g, Sprite.IMG_ALL, LEVEL_1_X, LEVEL_1_Y[level1Index], Sprite.g_arr2ClipInfoStuff, 9, 1);
//g.drawImage(Sprite.selector, LEVEL_1_X, LEVEL_1_Y[level1Index], Globals.GFX_TOPLEFT);
/* End Modified 18-03-2003 */
}
private void drawLevel2(Graphics g) {
if (level2SelectionChanged) {
// just clear Q*Bert selector space
g.setColor(0x000000);
g.fillRect(LEVEL_2_WINDOW_X, LEVEL_2_WINDOW_Y, QBERT_TEXT_OFFSET_X, LEVEL_2_WINDOW_H);
level2SelectionChanged = false;
} else {
// draw menu texts
g.setColor(0x0000ff);
g.drawRect(LEVEL_2_WINDOW_X - 2, LEVEL_2_WINDOW_Y - 2, LEVEL_2_WINDOW_W + 3, LEVEL_2_WINDOW_H + 3);
g.setColor(0xff0000);
g.drawRect(LEVEL_2_WINDOW_X - 1, LEVEL_2_WINDOW_Y - 1, LEVEL_2_WINDOW_W + 1, LEVEL_2_WINDOW_H + 1);
g.setColor(0x000000);
g.fillRect(LEVEL_2_WINDOW_X, LEVEL_2_WINDOW_Y, LEVEL_2_WINDOW_W, LEVEL_2_WINDOW_H);
/* Start Modified 23-04-2003 for chineese support */
g.setColor(250,250,4);
g.setFont( Globals.font);
for (int i = 0; i < 5; i++) {
g.drawString(Globals.chineseString[Globals.MENU_TXT_OFFSET+i],
LEVEL_2_WINDOW_X + QBERT_TEXT_OFFSET_X, LEVEL_2_Y[i],
g.TOP | g.LEFT );
}
/* End Modified 23-04-2003 */
}
// in any case: draw Q*Bert selector
/* Start Modified 18-03-2003 transparency */
Sprite.drawClipped(g, Sprite.IMG_ALL, LEVEL_2_X, LEVEL_2_Y[level2Index]+ QBERT_TEXT_OFFSET_Y, Sprite.g_arr2ClipInfoStuff, 9, 1);
//g.drawImage(Sprite.selector, LEVEL_2_X, LEVEL_2_Y[level2Index] + QBERT_TEXT_OFFSET_Y, Globals.GFX_TOPLEFT);
/* End Modified 18-03-2003 */
}
private void drawLevel3(Graphics g) {
if (level3SelectionChanged) {
// just clear Q*Bert selector space
g.setColor(0x000000);
g.fillRect(LEVEL_3_WINDOW_X, LEVEL_3_WINDOW_Y, QBERT_TEXT_OFFSET_X, LEVEL_3_WINDOW_H);
level3SelectionChanged = false;
} else {
// draw menu texts
g.setColor(0x0000ff);
g.drawRect(LEVEL_3_WINDOW_X - 2, LEVEL_3_WINDOW_Y - 2, LEVEL_3_WINDOW_W + 3, LEVEL_3_WINDOW_H + 3);
g.setColor(0xff0000);
g.drawRect(LEVEL_3_WINDOW_X - 1, LEVEL_3_WINDOW_Y - 1, LEVEL_3_WINDOW_W + 1, LEVEL_3_WINDOW_H + 1);
g.setColor(0x000000);
g.fillRect(LEVEL_3_WINDOW_X, LEVEL_3_WINDOW_Y, LEVEL_3_WINDOW_W, LEVEL_3_WINDOW_H);
/* Start Modified 23-04-2003 for chineese support */
g.setColor(250,250,4);
g.setFont( Globals.font);
for (int i = 0; i < 2; i++) {
g.drawString(Globals.chineseString[Globals.MENU_TXT_OFFSET+i+5],
LEVEL_3_WINDOW_X + QBERT_TEXT_OFFSET_X,
LEVEL_3_Y[i], g.TOP | g.LEFT);
}
/* End Modified 23-04-2003 */
}
// in any case: draw Q*Bert selector
/* Start Modified 18-03-2003 transparency */
Sprite.drawClipped(g, Sprite.IMG_ALL, LEVEL_3_X, LEVEL_3_Y[level3Index]+ QBERT_TEXT_OFFSET_Y, Sprite.g_arr2ClipInfoStuff, 9, 1);
//g.drawImage(Sprite.selector, LEVEL_3_X, LEVEL_3_Y[level3Index] + QBERT_TEXT_OFFSET_Y, Globals.GFX_TOPLEFT);
/* End Modified 18-03-2003 */
}
private boolean checkCheatKey(int key) {
int i;
for (i = 1; i <= 5; i++) {
m_arrKeyInputs[i-1] = m_arrKeyInputs[i];
}
m_arrKeyInputs[5] = key;
for (i = 0; i < 6; i++) {
if (m_arrKeyInputs[i] != Globals.CHEAT_KEY_ARRAY[i]) {
return false;
}
}
return true;
}
protected void keyPressed(int key) {
if (preSplashScreenDone) {
if (checkCheatKey(key)) {
m_pMidlet.g_bCheatOn = true;
}
switch (getGameAction(key)) {
case Canvas.FIRE :
m_pMidlet.commandAction(m_pMidlet.m_cmdSelect, this);
break;
case Canvas.UP :
if (level3Active) {
level3Index--;
if (level3Index == -1) {
level3Index = LEVEL_3_Y.length - 1;
}
level3SelectionChanged = true;
} else if (level2Active) {
level2Index--;
if (level2Index == -1) {
level2Index = LEVEL_2_Y.length - 1;
}
level2SelectionChanged = true;
} else {
level1Index--;
if (level1Index == -1) {
level1Index = LEVEL_1_Y.length - 1;
}
if ((level1Index == 0) && (!m_pMidlet.m_bSavedGame)) {
level1Index = LEVEL_1_Y.length - 1;
}
}
repaint();
serviceRepaints();
break;
case Canvas.DOWN :
if (level3Active) {
if (level3Index == LEVEL_3_Y.length - 1) {
level3Index = 0;
} else {
level3Index++;
}
level3SelectionChanged = true;
} else if (level2Active) {
if (level2Index == LEVEL_2_Y.length - 1) {
level2Index = 0;
} else {
level2Index++;
}
level2SelectionChanged = true;
} else {
if (level1Index == LEVEL_1_Y.length - 1) {
if (m_pMidlet.m_bSavedGame) {
level1Index = 0;
} else {
level1Index = 1;
}
} else {
level1Index++;
}
}
repaint();
serviceRepaints();
break;
}
}
}
/* Start Modified 21-03-2003 for external events */
protected void showNotify() {
try {
repaint();
serviceRepaints();
} catch (Exception ex) {}
}
/* End Modified 21-03-2003 */
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -