📄 gamemidlet.java
字号:
package com.centerscore.game;
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
import java.io.*;
import javax.microedition.rms.*;
public class GameMidlet extends MIDlet implements CommandListener, Runnable {
boolean g_bFinished_Game;
boolean g_bCheatOn;
boolean m_bSoundOn;
boolean m_bSavedGame;
boolean m_bHasBeenSaved;
Display m_pDisplay;
Command m_cmdSelect;
Command m_cmdBack;
Command m_cmdPause;
private boolean notFirstTime;
private boolean m_bInGame;
private GameModel m_pGameModel;
private HiScoreScreen m_pHiScoreScreen;
private MenuScreen m_pMenuScreen;
private GameScreen m_pGameScreen;
private TextScreen m_pTextScreen;
/* Start Addition 21-03-2003 for external events */
static Displayable activeDisplay;
/* End Addition 21-03-2003 */
//public GameMidlet() {
//}
public void startApp() throws MIDletStateChangeException {
if (notFirstTime) {
/* Start Modified 21-03-2003 for external events*/
if(activeDisplay != null){
//System.out.println("activeDisplay_startapp"+activeDisplay);
m_pDisplay.setCurrent(activeDisplay);
}
//if (m_pGameModel != null && m_pGameScreen != null) {
// m_pGameScreen.repaint();
// m_pGameScreen.serviceRepaints();
//}
/* End Modified 21-03-2003 */
} else {
notFirstTime = true;
/* Start Addition 23-04-2003 chinese support */
Lang ln = new Lang();
ln.splitStrings();
/* End Addition 23-04-2003 */
m_pDisplay = Display.getDisplay(this);
m_pMenuScreen = new MenuScreen(this);
m_pDisplay.setCurrent(m_pMenuScreen);
/* Start Addition 21-03-2003 for external events */
activeDisplay = m_pMenuScreen;
//System.out.println("activeDisplay_startapp_first"+activeDisplay);
/* End Addition 21-03-2003 */
m_pMenuScreen.repaint();
m_pMenuScreen.serviceRepaints();
new Thread(this).start();
}
}
public void run() {
/* Start Modified 25-04-2003 for chinese support */
m_cmdPause = new Command(Globals.chineseString[Globals.COMS_TXT_OFFSET+2], Command.OK, 1);
m_cmdSelect = new Command(Globals.chineseString[Globals.COMS_TXT_OFFSET+1], Command.OK, 1);
m_cmdBack = new Command(Globals.chineseString[Globals.COMS_TXT_OFFSET+3], Command.BACK, 1);
/* End Modified 25-04-2003 */
Sprite.initImages();
readOptions();
if (!m_bSavedGame) {
m_pMenuScreen.level1Index = 1;
}
try { Thread.sleep(2000); } catch (Exception ex) {} // this needs to be improved
m_pMenuScreen.preSplashScreenDone = true;
m_pMenuScreen.repaint();
m_pMenuScreen.serviceRepaints();
m_pMenuScreen.addCommand(m_cmdSelect);
m_pMenuScreen.addCommand(m_cmdBack);
m_pMenuScreen.m_pImgPreSplash = null;
m_pHiScoreScreen = new HiScoreScreen(this);
m_pTextScreen = new TextScreen(this);
}
public void pauseApp() {
if (m_pGameModel != null && !m_pGameModel.g_bPaused) {
pauseGame();
}
}
public void destroyApp(boolean unconditional) throws MIDletStateChangeException {
saveOptions();
if (m_pGameModel != null) {
m_pGameModel.exit();
m_pGameModel = null;
}
m_pDisplay.setCurrent(null);
/* Start Addition 21-03-2003 for external events */
activeDisplay = null;
/* End Addition 21-03-2003 */
}
public void commandAction(Command command, Displayable displayable) {
try {
if (displayable == m_pMenuScreen) {
if (command == m_cmdBack) {
if (m_pMenuScreen.level3Active) {
m_pMenuScreen.level3Active = false;
m_pMenuScreen.repaint();
} else if (m_pMenuScreen.level2Active) {
m_pMenuScreen.level2Active = false;
m_pMenuScreen.repaint();
} else {
exitApp();
}
} else if (command == m_cmdSelect) {
switch (m_pMenuScreen.getMenuAction()) {
case MenuScreen.MENU_RESUME:
playSavedGame();
break;
case MenuScreen.MENU_PLAY:
newGame();
break;
case MenuScreen.MENU_MENU:
m_pMenuScreen.level2Active = true;
m_pMenuScreen.level2Index = 0;
m_pMenuScreen.repaint();
break;
case MenuScreen.MENU_QUIT:
exitApp();
break;
case MenuScreen.MENU_HIGHSCORES:
showHighScores();
break;
case MenuScreen.MENU_AUDIO:
m_pMenuScreen.level3Active = true;
m_pMenuScreen.level3Index = (m_bSoundOn ? 0 : 1);
m_pMenuScreen.repaint();
break;
case MenuScreen.MENU_AUDIOON:
m_pMenuScreen.level3Active = false;
m_bSoundOn = true;
m_pMenuScreen.repaint();
break;
case MenuScreen.MENU_AUDIOOFF:
m_pMenuScreen.level3Active = false;
m_bSoundOn = false;
m_pMenuScreen.repaint();
break;
// SD case MenuScreen.MENU_LANGUAGE:
// break;
case MenuScreen.MENU_CREDITS:
showText(TextScreen.TEXT_CREDITS);
break;
case MenuScreen.MENU_HELP:
showText(TextScreen.TEXT_HELP);
break;
case MenuScreen.MENU_MAIN:
m_pMenuScreen.level2Active = false;
m_pMenuScreen.repaint();
break;
}
}
} else if (displayable == m_pGameScreen) {
if (command == m_cmdPause && m_pGameModel.g_Game_Mode != Globals.MODE_GAMEOVER) {
pauseGame();
} else if (command == m_cmdSelect) {
switch (m_pGameScreen.m_selectedIndex) {
case GameScreen.MENU_RESUME:
resumeGame();
break;
case GameScreen.MENU_HELP:
m_bInGame = true;
showText(TextScreen.TEXT_HELP);
break;
case GameScreen.MENU_SAVEQUIT:
/* Start Addition 16-05-2003 bug fix */
m_pGameModel.pause();
/* End Addition 16-05-2003 */
saveAndQuit();
break;
}
} else if (command == m_cmdBack) {
if (m_pGameModel.g_bPaused) {
resumeGame();
} else {
m_pGameModel.pause();
saveAndQuit();
}
}
} else if (displayable == m_pTextScreen) {
if (command == m_cmdBack) {
m_pTextScreen.stopped = true;
if (m_bInGame) {
m_pGameModel.m_pBackGroundSprite.forceRedraw();
m_bInGame = false;
m_pGameScreen.m_selectedIndex = 1;
resumeGame(); // SD ??
pauseGame(); // SD ??
} else {
showMenuScreen();
}
}
} else if (displayable == m_pHiScoreScreen) {
if (command == m_cmdBack) {
showMenuScreen();
}
}
} catch (Exception ex) {
System.err.println("GameMidlet.commandAction: " + ex); // SD
ex.printStackTrace(); // SD
}
}
private void playSavedGame() {
if (m_pGameScreen == null) { // SD
m_pGameScreen = new GameScreen(this);
m_pGameModel = new GameModel(this, m_pGameScreen);
m_pGameScreen.setModel(m_pGameModel);
}
m_bSavedGame = false;
m_bHasBeenSaved = false;
m_pMenuScreen.level1Index = 1;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -