📄 menus.java
字号:
//if (Engine.s_current_action==Engine.INPUT_ACTION ||
// Engine.s_current_action==Engine.INPUT_LEFT_SOFT_KEY ||
// Engine.s_current_action==Engine.INPUT_RIGHT_SOFT_KEY) {
Engine.s_current_action = Engine.INPUT_NONE;
//}
}
public static void process() {
int current_menu_item_id = getMenuItem(m_current_menu, m_current_menu_item);
//System.out.println("current_menu_item="+current_menu_item_id+" state="+m_menu_item_state[current_menu_item_id]);
//System.out.println("current_list_length="+getListLength(m_current_menu));
//updateMenus();
// menu logical state machine
switch(m_menu_state) {
case MENU_STATE_NORMAL:
// deactivate menu and start outro transition animation
if (m_current_menu != m_next_menu) {
m_menu_state = MENU_STATE_INACTIVE;
m_menu_anim_state = MENU_ANIM_STATE_OUTRO;
m_menu_timer = 0;
}
// proceed to next menu item if we're not changing menus
if (m_menu_state == MENU_STATE_NORMAL && m_current_menu_item != m_next_menu_item) {
m_current_menu_item = m_next_menu_item;
m_current_menu_top = m_next_menu_top;
m_menu_item_timer = 0;
}
break;
}
// menu animation state machine
switch(m_menu_anim_state) {
case MENU_ANIM_STATE_OUTRO:
// introduce next menu after the outro transition animation is complete
if (m_menu_timer >= MENU_OUTRO_TIME) {
m_menu_timer = 0;
if (m_next_menu == CLOSE) { // if we had a special CLOSE pointer, execute the event now!
// special case if we are trying to go back to the game
if (mb_go_back && m_current_stack_height==0) {
Engine.s_engine.m_state = m_prev_engine_state;
Engine.s_current_action = Engine.INPUT_NONE;
//#if DefaultConfiguration || Nokia_6600 || Nokia_6600_Unobfuscated || Nokia_3220 || Nokia_3220_Unobfuscated || Razr
Engine.playSound(Engine.s_current_sound);
//#endif
break;
}
processEvent(current_menu_item_id);
break;
}
else if (m_next_menu != CLOSE && !mb_go_back) {
processEvent(current_menu_item_id); // else just execute the event and carry on
}
m_current_menu = m_next_menu;
m_current_menu_item = m_next_menu_item;
m_current_menu_top = m_next_menu_top;
m_menu_item_timer = 0;
m_menu_anim_state = MENU_ANIM_STATE_INTRO;
}
break;
case MENU_ANIM_STATE_INTRO:
// activate the menu after the intro transition animation is complete
if (m_menu_timer >= MENU_INTRO_TIME) {
m_menu_timer = 0;
m_menu_anim_state = MENU_ANIM_STATE_NORMAL;
m_menu_state = MENU_STATE_NORMAL;
}
break;
}
m_menu_timer++;
m_menu_item_timer++;
updateMenus();
}
/* event code for all menu items */
public static void processEvent(int event) {
int tutorial_number;
// for confirmation items, don't execute the event until you press ok in the confirmation menu
if (m_menu_item_type[event] == MENU_ITEM_TYPE_CONFIRM && m_current_menu != MENU_SPECIAL_CONFIRMATION) return;
//if (m_menu_item_type[event] == MENU_ITEM_TYPE_CONFIRM) return;
//if (m_current_menu == MENU_SPECIAL_CONFIRMATION && event == MENU_ITEM_SPECIAL_OK)
// event = m_confirm_event;
switch (event) {
case MENU_ITEM_SOUND_ON:
Engine.s_audio_on = true;
//Engine.playSound(Engine.SONG_TITLE);
Engine.gotoTitle();
break;
case MENU_ITEM_SOUND_OFF:
Engine.s_audio_on = false;
Engine.stopSound();
Engine.gotoTitle();
break;
case MENU_ITEM_BACK_TO_TITLE:
Engine.gotoTitle();
break;
case MENU_ITEM_SOUND_TOGGLE:
Engine.s_audio_on = !Engine.s_audio_on;
if (Engine.s_audio_on) {
//restart the sound
//#if DefaultConfiguration || Nokia_6600 || Nokia_6600_Unobfuscated || Nokia_3220 || Nokia_3220_Unobfuscated || Razr
if(Level.s_type == Level.TYPE_MAINMENU) Engine.playSound(Engine.s_current_sound);
//#else
//# if(Level.s_type == Level.TYPE_MAINMENU) Engine.playSound(Engine.SONG_TITLE);
//#endif
} else {
//pause the sound
Engine.pauseSound();
}
break;
case MENU_ITEM_TUTORIAL_TOGGLE:
Engine.s_use_tutorials = !Engine.s_use_tutorials;
Engine.saveGameToRecordStore();
break;
case MENU_ITEM_ADVENTURE_MODE:
if (Level.s_adventure_number > 0 || (Level.s_extra_type != Level.TYPE_ADVENTURE && Level.s_extra_type != Engine.FULL_BYTE)) {
push();
setMenu(MENU_ADVENTURE_CONT);
break;
}
case MENU_ITEM_ADVENTURE_NEW:
Level.s_adventure_number = 0;
Level.s_adventure_score = 0;
//if (Engine.mb_use_tutorials) Level.init(Level.TYPE_TUTORIAL, 0, 0);
Level.s_main_type = Level.TYPE_ADVENTURE;
Level.init(Level.TYPE_TUTORIAL, 0, 0);
Engine.s_engine.m_state = Engine.STATE_GAME;
break;
case MENU_ITEM_ADVENTURE_CONT:
Level.s_main_type = Level.TYPE_ADVENTURE;
if(Level.s_extra_type == Engine.FULL_INT) Level.s_extra_type = Level.TYPE_ADVENTURE;
Level.init(Level.s_extra_type, Level.s_adventure_number, Level.s_adventure_score);
Engine.s_engine.m_state = Engine.STATE_GAME;
break;
case MENU_ITEM_PUZZLE_MODE:
case MENU_ITEM_LEVEL_SELECT:
startLevelSelect(Level.TYPE_PUZZLE);
break;
// if (Level.s_puzzle_number>0) break; // if no saved game, just start a new game
// case MENU_ITEM_PUZZLE_NEW:
// Level.s_puzzle_number = 0;
// case MENU_ITEM_PUZZLE_CONT:
// Level.s_main_type = Engine.FULL_BYTE;
// Level.init(Level.TYPE_PUZZLE, Level.s_puzzle_number, 0);
// Engine.s_engine.m_state = Engine.STATE_GAME;
// break;
case MENU_ITEM_TIME_MODE:
if (Level.s_timetrial_number>0) break; // if no saved game, just start a new game
case MENU_ITEM_TIMETRIAL_NEW:
Level.s_timetrial_number = 0;
Level.s_timetrial_score = 0;
case MENU_ITEM_TIMETRIAL_CONT:
Level.s_main_type = Engine.FULL_BYTE;
Level.init(Level.TYPE_TIMETRIAL, Level.s_timetrial_number, Level.s_timetrial_score);
Engine.s_engine.m_state = Engine.STATE_GAME;
break;
case MENU_ITEM_SURVIVAL_MODE:
Level.s_main_type = Engine.FULL_BYTE;
Level.init(Level.TYPE_SURVIVAL, 0, 0);
Engine.s_engine.m_state = Engine.STATE_GAME;
break;
case MENU_ITEM_ERASE_DATA:
Engine.deleteRecordStore();
mb_go_back = true;
pop();
break;
case MENU_ITEM_SPECIAL_OK:
processEvent(MENU_ITEM_RESUME);
break;
case MENU_ITEM_RESUME:
if (m_current_stack_height>0) pop();
else {
Engine.s_engine.m_state = m_prev_engine_state;
//#if DefaultConfiguration || Nokia_6600 || Nokia_6600_Unobfuscated || Nokia_3220 || Nokia_3220_Unobfuscated || Razr
// make sure sound is restarted when exiting out from ingame menu
if (m_current_menu == MENU_INGAME) Engine.playSound(Engine.s_current_sound);
//#endif
}
Engine.s_current_action = Engine.INPUT_NONE;
break;
case MENU_ITEM_RESTART_YES:
case MENU_ITEM_RESTART_LEVEL:
Level.init(Level.s_type, Level.s_number, Level.s_last_score);
Engine.s_engine.m_state = Engine.STATE_GAME;
if (Engine.mb_script_active) {
Engine.mb_script_show_text = true;
Engine.m_script_position = 0;
}
break;
case MENU_ITEM_RESTART_NO:
Engine.gotoTitle();
break;
case MENU_ITEM_SKIP_LEVEL:
case MENU_ITEM_SKIP_LEVEL_CONFIRM:
if(Level.s_main_type == Level.TYPE_ADVENTURE) Level.init(Level.s_next_type, Level.s_next_number, Level.s_current_score);
else Level.init(Level.s_type, ++Level.s_number, Level.s_current_score);
Engine.s_engine.m_state = Engine.STATE_GAME;
break;
case MENU_ITEM_INSTRUCTIONS:
startTextBox(Locale.INSTRUCTION_TEXT, TEXT_TYPE_FULLSCREEN, Graphics.LEFT);
break;
case MENU_ITEM_ABOUT:
startTextBox(Locale.ABOUT_TEXT, TEXT_TYPE_FULLSCREEN);
break;
case MENU_ITEM_TUTORIAL_0:
case MENU_ITEM_TUTORIAL_1:
case MENU_ITEM_TUTORIAL_2:
case MENU_ITEM_TUTORIAL_3:
case MENU_ITEM_TUTORIAL_4:
case MENU_ITEM_TUTORIAL_5:
case MENU_ITEM_TUTORIAL_6:
case MENU_ITEM_TUTORIAL_7:
case MENU_ITEM_TUTORIAL_8:
case MENU_ITEM_TUTORIAL_9:
case MENU_ITEM_TUTORIAL_10:
case MENU_ITEM_TUTORIAL_11:
case MENU_ITEM_TUTORIAL_12:
case MENU_ITEM_TUTORIAL_13:
tutorial_number = event-MENU_ITEM_TUTORIAL_0;
Level.s_main_type = Engine.FULL_BYTE;
Engine.mb_script_active = false;
Level.init(Level.TYPE_TUTORIAL, tutorial_number, 0);
Engine.s_engine.m_state = Engine.STATE_GAME;
break;
case MENU_ITEM_LEVEL_0:
case MENU_ITEM_LEVEL_1:
case MENU_ITEM_LEVEL_2:
case MENU_ITEM_LEVEL_3:
case MENU_ITEM_LEVEL_4:
case MENU_ITEM_LEVEL_5:
case MENU_ITEM_LEVEL_6:
case MENU_ITEM_LEVEL_7:
case MENU_ITEM_LEVEL_8:
case MENU_ITEM_LEVEL_9:
Level.s_puzzle_number = (byte)(m_level_list_start + event - MENU_ITEM_LEVEL_0);
Level.s_main_type = Engine.FULL_BYTE;
Level.init(Level.TYPE_PUZZLE, Level.s_puzzle_num
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -