📄 ge.java
字号:
{
m_running = 0;
}
break;
case Def.STATE_LEGAL_TEXTS:
m_blockKey = true;
if (m_inputTime > 10)
{
m_inputTime = 0;
if (m_textOver)
{
if (Legal.isEU)
m_images[Def.PNG_UBILOGO] = null;
m_gameState = Def.STATE_SPLASH;
}
else
{
m_lastInput = Def.KEY_ATTACK;
}
}
break;
case Def.STATE_SPLASH:
if (m_lastInput != Def.KEY_NONE)
{
m_gameState = Def.STATE_MENU;
}
break;
}
updateKeys();
}
//==========================================================================
// Paint
//==========================================================================
// Called by repaint() -----------------------------------------------------
public void paint(Graphics g)
//public void render()
{
if (g==null || !m_inited)
return;
// Lyman DEBUG
//m_piece[3] = System.currentTimeMillis();
m_g = g;
switch (m_gameState)
{
case Def.STATE_RUN:
case Def.STATE_PAUSE:
case Def.STATE_EXIT:
if (m_gameState == Def.STATE_EXIT && m_pauseIndex < 0)
{
displayBG(2);
}
else
{
// Display map --------------------------------------------------------
mapFastDraw (Player.m_camX, Player.m_camY);
// Lyman DEBUG
//m_piece[4] = System.currentTimeMillis() - m_piece[3];
// Display POP & Enemys ----------------------------------------------------
m_player.displayPlayer();
// draw face
if (Player.m_showBar)// just for 3510i
drawSymbol(SYMBOL_FACE);
// brush bottom
if (m_brushBottom)
{
m_brushBottom = false;
m_g.setClip(0, 0, Def.SCREEN_WIDTH, Def.SCREEN_HEIGHT);
m_g.setColor(0); // black color
m_g.fillRect(0, Def.SCREEN_HEIGHT-16, Def.SCREEN_WIDTH, 16);
}
}
if (m_gameState == Def.STATE_EXIT)
{
afficheSmall("Do you want to", -1, Def.TITLE_Y-sFont_H, Def.TEXT_COLOR0, -1);
afficheSmall("quit game?", -1, Def.TITLE_Y, Def.TEXT_COLOR0, -1);
displayOption("No", "Yes");
}
else
{
if (m_gameState == Def.STATE_RUN)
{
if (m_msgIndex >= 0)
{
// Lyman DEBUG
//m_piece[4] = System.currentTimeMillis() - m_piece[3];
// draw message
boolean over = drawMessage(m_text[m_msgIndex], m_msgLine);
if (m_msgIndex == Def.ID_TUT_WALLING)
{
m_brushTop = true;
}
// Lyman DEBUG
//m_piece[5] = System.currentTimeMillis() - m_piece[3] - m_piece[4];
if (over)
{
if (m_msgIndex == Def.ID_TUT_STRIKE)
{
Player.m_prince.setAction(Def.PRINCE_STRIKE, 1);
}
if (m_msgIndex == Def.ID_TUT_DAGGER)
{
Player.m_prince.noJump = true;
}
m_msgIndex = -1;
m_msgLine = -1;
}
else
{
if (m_msgTime == 0 && m_lastInput > Def.KEY_NONE)
{
m_msgLine++;
}
else if (m_curFrameTime > m_msgTime)
{
m_msgTime = 0;
}
}
resetKey();
}
}
else //if (m_gameState == Def.STATE_PAUSE)
{
//afficheSmall("LEVEL "+(m_levelSelected+1), -1, Def.TITLE_Y - sFont_H, Def.TEXT_COLOR0, 0);
//afficheSmall("PAUSE", -1, Def.TITLE_Y+2, Def.TEXT_COLOR0, 0);
displayMenu(Def.PAUSE_MENU_Y, m_pauseIndex, Def.TEXT_COLOR0);
}
drawSymbol(SYMBOL_HINT);
}
break;
case Def.STATE_MENU:
if (m_menuIndex == 1 && m_levelPassed[Def.LEVEL_NUMBER-1] > 0) // no continue when all level passed
m_menuIndex = 2;
displayBG(2);
displayMenu(Def.MENU_Y, m_menuIndex, Def.TEXT_COLOR0);
drawSymbol(SYMBOL_HINT);
break;
case Def.STATE_MENU_OPTION:
displayBG(2);
displayMenu(Def.MENU_OPTION_Y, m_optionIndex, Def.TEXT_COLOR0);
drawSymbol(SYMBOL_HINT);
break;
case Def.STATE_INIT_LEVEL:
if (m_progress == 0)
displayBG(2);
afficheSmall("Level "+(m_levelSelected+1), -1, Def.SPLASH_TEXT_Y, Def.TEXT_COLOR0, -1);
afficheSmall("Loading...", -1, Def.SPLASH_TEXT_Y+sFont_H, Def.TEXT_COLOR0, -1);
displayProgress(m_progress, 10);
break;
case Def.STATE_BEGIN_SCREEN:
displayBG(1);
displayString(STR_STORY_BEGIN);
drawSymbol(SYMBOL_HINT);
break;
case Def.STATE_END_SCREEN:
displayBG(1);
displayString(STR_STORY_END);
drawSymbol(SYMBOL_HINT);
break;
case Def.STATE_GAMEOVER:
displayBG(1);
afficheSmall("Level Failed", -1, Def.TITLE_Y, Def.TEXT_COLOR0, -1);
displayOption("Menu", "Again");
break;
case Def.STATE_END_LEVEL:
displayBG(1);
//afficheSmall("Level Finished", -1, Def.TITLE_Y-sFont_H, Def.TEXT_COLOR0, -1);
afficheSmall("TIME: " + m_levelPassTime + "s", -1, Def.SCORE_Y-sFont_H, Def.TEXT_COLOR0, -1);
afficheSmall("HURT: " + m_levelPassHurt, -1, Def.SCORE_Y, Def.TEXT_COLOR0, -1);
afficheSmall("SCORE: " + m_levelScore[m_levelLoad], -1, Def.SCORE_Y+sFont_H, Def.TEXT_COLOR0, -1);
int score = m_levelScore[m_levelLoad] / 100;
if (score > 4) score = 4;
if (m_curFrameTime % 1000 > 500)
afficheSmall(STR_SCORE[score], -1, Def.SCORE_Y+sFont_H*2, CLR_SCORE[score], -1);
if (m_levelLoad == Def.LEVEL_NUMBER-1)
displayOption(null, "Next");
else
displayOption("Menu", "Next");
break;
case Def.STATE_FIRST_SCREEN:
loadImage(Def.PNG_GAMELOFT, "/gameloft.png");
if (m_images[Def.PNG_GAMELOFT] != null)
{
m_g.setClip( 0, 0, Def.SCREEN_WIDTH, Def.SCREEN_HEIGHT );
m_g.setColor(255,255,255);
m_g.fillRect(0, 0, Def.SCREEN_WIDTH, Def.SCREEN_HEIGHT );
m_g.drawImage(m_images[Def.PNG_GAMELOFT], Def.SCREEN_WIDTH/2, Def.SCREEN_HEIGHT/2, CENTER);
m_images[Def.PNG_GAMELOFT] = null;
}
break;
case Def.STATE_NEW_GAME:
displayBG(2);
afficheSmall("Do you want to", -1, Def.TITLE_Y-sFont_H, Def.TEXT_COLOR0, -1);
afficheSmall("reset data?", -1, Def.TITLE_Y, Def.TEXT_COLOR0, -1);
displayOption("No", "Yes");
break;
case Def.STATE_FREE_TOUR:
displayBG(1);
int i, clr = Def.TEXT_COLOR7;
for (i = -2; i <= 2; i++)
{
if (i == 0)
clr = Def.TEXT_COLOR8;
else
clr = Def.TEXT_COLOR7;
displayLevel(Def.TITLE_X, Def.FREETOUR_Y+sFont_H*i, m_levelSelected+i, clr);
}
displayOption("Menu", "Select");
break;
case Def.STATE_CONTROL:
displayBG(1);
displayString(STR_CONTROLS);
//m_gameState = Def.STATE_MENU;
drawSymbol(SYMBOL_HINT);
break;
case Def.STATE_ABOUT:
displayBG(1);
displayString(STR_CREDITS);
//m_gameState = Def.STATE_MENU;
drawSymbol(SYMBOL_HINT);
break;
case Def.STATE_LEGAL_TEXTS:
displayBG(0);
displayString(Legal.STR_LEGAL_TEXTS);
if (Legal.isEU && m_textOver)
drawSymbol(SYMBOL_UBILOGO);
break;
case Def.STATE_SPLASH:
displayBG(2);
if (m_curFrameTime % 400 < 200)
afficheSmall("press any key", -1, Def.SPLASH_TEXT_Y, Def.TEXT_COLOR9, -1);
break;
}
/* Lyman DEBUG
if (m_Debug1 > 0) // show debug1 number in topleft corner
{
afficheNumber(m_Debug1, Def.NUMBER_WIDTH, 16, Def.NUMBER_TYPE1);
if (m_Debug1 == 1) // show free memory
afficheNumber((int)Runtime.getRuntime().freeMemory(), Def.NUMBER_WIDTH, 16+Def.NUMBER_HEIGHT, Def.NUMBER_TYPE0);
}
if (m_Debug2 > 0) // show debug2 number
{
afficheNumber(m_Debug2, Def.SCREEN_WIDTH/2, 16, Def.NUMBER_TYPE1);
if (m_Debug2 == 2)
afficheNumber(m_updatedAI, Def.SCREEN_WIDTH/2, 16+Def.NUMBER_HEIGHT, Def.NUMBER_TYPE0);
}
if (m_Debug3 > 0) // show debug3 number, fps
{
afficheNumber(m_Debug3, (Def.SCREEN_WIDTH-Def.NUMBER_WIDTH) / 2, 64, Def.NUMBER_TYPE1);
if (m_Debug3 == 1)
afficheNumber(m_lastFps, (Def.SCREEN_WIDTH+Def.NUMBER_WIDTH) / 2 + 2*Def.NUMBER_WIDTH, 64, Def.NUMBER_TYPE0);
else if (m_Debug3 == 2)
{
afficheNumber((int)m_piece[0], (Def.SCREEN_WIDTH+Def.NUMBER_WIDTH) / 2 + 2*Def.NUMBER_WIDTH, 64, Def.NUMBER_TYPE0);
afficheNumber((int)m_piece[1], (Def.SCREEN_WIDTH+Def.NUMBER_WIDTH) / 2 + 2*Def.NUMBER_WIDTH, 64+Def.NUMBER_HEIGHT, Def.NUMBER_TYPE0);
afficheNumber((int)m_piece[2], (Def.SCREEN_WIDTH+Def.NUMBER_WIDTH) / 2 + 2*Def.NUMBER_WIDTH, 64+Def.NUMBER_HEIGHT*2, Def.NUMBER_TYPE0);
}
else if (m_Debug3 == 3)
{
afficheNumber((int)m_piece[4], (Def.SCREEN_WIDTH+Def.NUMBER_WIDTH) / 2 + 2*Def.NUMBER_WIDTH, 64, Def.NUMBER_TYPE0);
afficheNumber((int)m_piece[5], (Def.SCREEN_WIDTH+Def.NUMBER_WIDTH) / 2 + 2*Def.NUMBER_WIDTH, 64+Def.NUMBER_HEIGHT, Def.NUMBER_TYPE0);
afficheNumber((int)m_piece[6], (Def.SCREEN_WIDTH+Def.NUMBER_WIDTH) / 2 + 2*Def.NUMBER_WIDTH, 64+Def.NUMBER_HEIGHT*2, Def.NUMBER_TYPE0);
}
else if (m_Debug3 == 4)
{
afficheNumber((int)m_piece[7], (Def.SCREEN_WIDTH+Def.NUMBER_WIDTH) / 2 + 2*Def.NUMBER_WIDTH, 64, Def.NUMBER_TYPE0);
afficheNumber((int)m_piece[8], (Def.SCREEN_WIDTH+Def.NUMBER_WIDTH) / 2 + 2*Def.NUMBER_WIDTH, 64+Def.NUMBER_HEIGHT, Def.NUMBER_TYPE0);
afficheNumber((int)m_piece[9], (Def.SCREEN_WIDTH+Def.NUMBER_WIDTH) / 2 + 2*Def.NUMBER_WIDTH, 64+Def.NUMBER_HEIGHT*2, Def.NUMBER_TYPE0);
}
}//*/
//m_g.setClip(0, Def.SCREEN_HEIGHT-64, Def.SCREEN_WIDTH, 64);
//m_g.drawString(Integer.toString(m_progress), Def.SCREEN_WIDTH, Def.SCREEN_HEIGHT-32, Graphics.RIGHT | Graphics.BOTTOM);
//m_g.drawString(Long.toString(Runtime.getRuntime().freeMemory()), Def.SCREEN_WIDTH - 100, Def.SCREEN_HEIGHT, Graphics.LEFT | Graphics.BOTTOM);
//m_g.drawString(Long.toString(Runtime.getRuntime().totalMemory()), 0, Def.SCREEN_HEIGHT, Graphics.LEFT | Graphics.BOTTOM);
m_painted = 1;
m_g = null;
}
static void afficheSmall( String str, int x, int y, int clr, int clrBg )
{
if (x == -1)
x = (Def.SCREEN_WIDTH-sFont.stringWidth(str))/2;
m_g.setFont( sFont );
m_g.setClip( 0, 0, Def.SCREEN_WIDTH, Def.SCREEN_HEIGHT );
if (clrBg >= 0)
{
m_g.setColor(clrBg);
m_g.drawString( str, x+1, y, TOPLEFT );
m_g.drawString( str, x-1, y, TOPLEFT );
m_g.drawString( str, x, y+1, TOPLEFT );
m_g.drawString( str, x, y-1, TOPLEFT );
}
m_g.setColor(clr);
m_g.drawString( str, x, y, TOPLEFT );
}
/* Lyman DEBUG
static void afficheNumber( int num, int x, int y, int type )
{
int n;
boolean minus = false;
if (num < 0)
{
minus = true;
num = -num;
}
do
{
x -= Def.NUMBER_WIDTH;
n = num % 10;
num /= 10;
m_g.setClip( x, y, Def.NUMBER_WIDTH, Def.NUMBER_HEIGHT );
m_g.drawImage(m_images[Def.PNG_NUMBER], x-n*Def.NUMBER_WIDTH, y-type*Def.NUMBER_HEIGHT, TOPLEFT);
} while (num > 0);
if (minus)
{
x -= Def.NUMBER_WIDTH;
m_g.setClip( x, y, Def.NUMBER_WIDTH, Def.NUMBER_HEIGHT );
m_g.drawImage(m_images[Def.PNG_NUMBER], x-10*Def.NUMBER_WIDTH, y-type*Def.NUMBER_HEIGHT, TOPLEFT);
}
}//*/
//static void afficheNumber( int num, int x, int y, int type )
//{
// afficheSmall(Integer.toString(num), x, y, Def.TEXT_COLOR0, 0);
//}
// Display menu ------------------------------------------------------------
private void displayBG(int title)
{
m_g.setClip( 0, 0, Def.SCREEN_WIDTH, Def.SCREEN_HEIGHT );
switch (title)
{
case 0:
//fill rect only
m_g.setColor( 0 );
m_g.fillRect( 0, 0, Def.SCREEN_WIDTH, Def.SCREEN_HEIGHT );
break;
case 1:
// create story bg image and draw full image
switchImage(Def.SWITCH_STORY);
m_g.drawImage(m_images[Def.PNG_STORY], 0, 0, TOPLEFT);
break;
case 2:
//fill rect black
m_g.setColor( 0 );
m_g.fillRect( 0, 0, Def.SCREEN_WIDTH, Def.SCREEN_HEIGHT );
// create menu & logo image and draw
switchImage(Def.SWITCH_MENU);
m_g.drawImage(m_images[Def.PNG_SPLASH], Def.SCREEN_WIDTH/2, Def.SCREEN_HEIGHT, BOTTOMCENTER);
m_g.drawImage(m_images[Def.PNG_MENU], Def.SCREEN_WIDTH/2, 0, TOPCENTER);
break;
}
}
///* display menu item
private void displayMenu(int y, int index, int clr)
{
String strTemp = "";
switch (m_gameState)
{
case Def.STATE_MENU:
index = (index+MENU_ITEM_NUM) % MENU_ITEM_NUM;
for (int i=0; i<MENU_ITEM_NUM; i++)
{
if (i == 1 && (m_levelPassed[Def.LEVEL_NUMBER-1] > 0 || m_levelPassed[0] == 0))
continue;
if (i==index)
afficheSmall(STR_MENU[i], -1, y, Def.TEXT_COLOR9, 0);
else
afficheSmall(STR_MENU[i], -1, y, clr, 0);
y += sFont_H;
}
break;
case Def.STATE_PAUSE:
index = (index+PAUSE_ITEM_NUM) % PAUSE_ITEM_NUM;
for (int i=0; i<PAUSE_ITEM_NUM; i++)
{
strTemp = STR_PAUSE[i];
if (i == 1)
strTemp += (m_playHint!=0?"On":"Off");
else if (i == 2)
strTemp += (m_playSound!=0?(m_playSound!=1?"High":"Low"):"Off");
if (i==index)
afficheSmall(strTemp, -1, y, Def.TEXT_COLOR9, 0);
else
afficheSmall(strTemp, -1, y, clr, 0);
y += sFont_H;
}
break;
case Def.STATE_MENU_OPTION:
index = (index+OPTION_ITEM_NUM) % OPTION_ITEM_NUM;
for (int i=0; i<OPTION_ITEM_NUM; i++)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -