⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 menus.java

📁 Critter_Crunch_J2ME 游戏源
💻 JAVA
📖 第 1 页 / 共 5 页
字号:
      if (m_menu_type[menu_id] == MENU_TYPE_BASE) emptyStack();
      /*m_current_menu =*/ m_next_menu = menu_id;
      /*m_current_menu_item =*/ m_next_menu_item = getFirstMenuItem(menu_id);
      /*m_current_menu_top =*/ m_next_menu_top = getScrollTop(menu_id);     // properly set the initial scroll range
      m_menu_timer = 0;
      m_menu_item_timer = 0;
      Engine.s_engine.m_state_timer = 0;  // redraw background
      Engine.s_current_action = Engine.INPUT_NONE;
   }
   
   
   /* initiate the menu system from the game, starting with this menu */
   public static final void startMenu(int menu_id) {

      /*if (Engine.s_engine.m_state != Engine.STATE_INGAME_MENU)*/ m_prev_engine_state = Engine.s_engine.m_state;
      emptyStack();
      setMenu(menu_id);
      //process();        // tick once to properly set all states
      m_current_menu = m_next_menu;
      m_current_menu_item = m_next_menu_item;
      m_current_menu_top = m_next_menu_top;
      m_menu_anim_state = MENU_ANIM_STATE_INTRO;
      m_menu_item_timer = 0;  // for dirty render redrawing
      Engine.s_engine.m_state = Engine.STATE_INGAME_MENU;
      updateMenus();
   }
   
   
   
   public static final void startConfirmation(int menu_item_id) {
      m_confirm_event = menu_item_id;
      m_menu_title[MENU_SPECIAL_CONFIRMATION] = m_menu_item_pointer[menu_item_id];     // use pointer to indicate confirmation text
      m_menu_item_type[MENU_ITEM_SPECIAL_OK] = MENU_ITEM_TYPE_NORMAL;
      m_menu_item_text[MENU_ITEM_SPECIAL_OK] = Locale.OK;
      setMenu(MENU_SPECIAL_CONFIRMATION);
   }
   
   
   /* initiate a stats screen */
   private static int temp_total_bonus = 0;
   private static int temp_current_score = 0;
   public static final void startStatsScreen(int level_type) {
      
      mb_skip_score = true;   // do we want to skip the counting up?
      mb_high_score = false;
      
      // unlock stuff!
      if(Level.s_main_type == Level.TYPE_ADVENTURE && Level.s_type == Level.TYPE_ADVENTURE) {
         if (Level.s_number + 1 == Level.UNLOCK_PUZZLES_1 && Level.s_puzzles_unlocked < Level.PUZZLES_AREA_1)   {
            Level.s_puzzles_unlocked   = Level.PUZZLES_AREA_1;
            m_unlocked = Locale.UNLOCK_PUZZLE_MODE;
         }
         else if(Level.s_number + 1  == Level.UNLOCK_PUZZLES_2 && Level.s_puzzles_unlocked < Level.PUZZLES_AREA_2)   {
            Level.s_puzzles_unlocked   = Level.PUZZLES_AREA_2;
            m_unlocked = Locale.UNLOCK_PUZZLE_LEVELS;
         }
         else if(Level.s_number + 1  == Level.UNLOCK_PUZZLES_3 && Level.s_puzzles_unlocked < Level.PUZZLES_AREA_3)   {
            Level.s_puzzles_unlocked   = Level.PUZZLES_AREA_3;
            m_unlocked = Locale.UNLOCK_PUZZLE_LEVELS;
         }
         else if(Level.s_number + 1  == Level.UNLOCK_PUZZLES_4 && Level.s_puzzles_unlocked < Level.PUZZLES_AREA_4)   {
            Level.s_puzzles_unlocked   = Level.PUZZLES_AREA_4;
            m_unlocked = Locale.UNLOCK_PUZZLE_LEVELS;
         }
         else if(Level.s_number + 1  == Level.UNLOCK_PUZZLES_5 && Level.s_puzzles_unlocked < Level.PUZZLES_AREA_5)   {
            Level.s_puzzles_unlocked   = Level.PUZZLES_AREA_5;
            m_unlocked = Locale.UNLOCK_PUZZLE_LEVELS;
         }
         else if(Level.s_number + 1  == Level.UNLOCK_TIMETRIAL_1 && Level.s_timetrial_unlocked < Level.TIMETRIAL_AREA_1) {
            if(Level.s_timetrial_number + 1 == Level.s_timetrial_unlocked) Level.s_timetrial_number++;
            Level.s_timetrial_unlocked = Level.TIMETRIAL_AREA_1;
            m_unlocked = Locale.UNLOCK_TIMETRIAL_MODE;
         }
         else if(Level.s_number + 1  == Level.UNLOCK_SURVIVAL && Level.s_survival_unlocked != Engine.FULL_BYTE)    {
            Level.s_survival_unlocked  = Engine.FULL_BYTE;
            m_unlocked = Locale.UNLOCK_SURVIVAL_MODE;
         }
      }
      // display message that stuff is locked
      else if (Level.s_main_type == Engine.FULL_BYTE && Level.s_type == Level.TYPE_PUZZLE) {
         if (Level.s_puzzle_number + 1 >= Level.s_puzzles_unlocked && Level.s_puzzles_unlocked < Level.PUZZLE_COUNT) {
            m_unlocked = Locale.UNLOCK_MORE_LEVELS;
         }
      }
      
      clearMenu(MENU_SPECIAL_STATS);
      
      m_menu_item_text[MENU_ITEM_SPECIAL_HIGH_SCORE] = NONE;
      m_menu_item_type[MENU_ITEM_SPECIAL_OK] = MENU_ITEM_TYPE_NORMAL;
      m_menu_item_text[MENU_ITEM_SPECIAL_OK] = NONE;
      
      // use the pointer as temporary storage for the values to count up
      m_menu_item_pointer[MENU_ITEM_STAT_TOTAL_CHAINS] = 0;
      m_menu_item_pointer[MENU_ITEM_STAT_LONGEST_CHAIN] = 0;
      m_menu_item_pointer[MENU_ITEM_STAT_JEWELS_CAUGHT] = 0;
      m_menu_item_pointer[MENU_ITEM_STAT_LEFTOVER_AMMO] = 0;
      //m_menu_item_pointer[MENU_ITEM_STAT_LEFTOVER_MOVES] = 0;
      m_menu_item_pointer[MENU_ITEM_STAT_TIME_LEFT] = 0;
      m_menu_item_pointer[MENU_ITEM_STAT_SPEEDUPS] = 0;
      
      temp_total_bonus = 0;
      temp_current_score = Level.s_current_score;
   
      switch (level_type) {
         case Level.TYPE_ADVENTURE:
            insertMenuItem(MENU_ITEM_STAT_TOTAL_CHAINS, MENU_SPECIAL_STATS);
            insertMenuItem(MENU_ITEM_STAT_LONGEST_CHAIN, MENU_SPECIAL_STATS);
            insertMenuItem(MENU_ITEM_STAT_JEWELS_CAUGHT, MENU_SPECIAL_STATS);
            if (Level.s_player.m_powerup_ammo>0) insertMenuItem(MENU_ITEM_STAT_LEFTOVER_AMMO, MENU_SPECIAL_STATS);
            insertMenuItem(MENU_ITEM_SPECIAL_BLANK, MENU_SPECIAL_STATS);
            break;
            
         case Level.TYPE_PUZZLE:
            if (Level.s_level_bar > 0) startTextBox(Locale.PUZZLE_QUIP_0, TEXT_TYPE_WINSCREEN);
            else                       startTextBox(Locale.PUZZLE_QUIP_1 + Engine.getRandom(5), TEXT_TYPE_WINSCREEN);
            return;
            
         case Level.TYPE_TIMETRIAL:
            insertMenuItem(MENU_ITEM_STAT_TOTAL_CHAINS, MENU_SPECIAL_STATS);
            insertMenuItem(MENU_ITEM_STAT_LONGEST_CHAIN, MENU_SPECIAL_STATS);
            insertMenuItem(MENU_ITEM_STAT_TIME_LEFT, MENU_SPECIAL_STATS);
            insertMenuItem(MENU_ITEM_SPECIAL_BLANK, MENU_SPECIAL_STATS);
            break;
            
         case Level.TYPE_SURVIVAL:
            insertMenuItem(MENU_ITEM_STAT_TOTAL_CHAINS, MENU_SPECIAL_STATS);
            insertMenuItem(MENU_ITEM_STAT_LONGEST_CHAIN, MENU_SPECIAL_STATS);
            insertMenuItem(MENU_ITEM_STAT_JEWELS_CAUGHT, MENU_SPECIAL_STATS);
            insertMenuItem(MENU_ITEM_STAT_SPEEDUPS, MENU_SPECIAL_STATS);
            insertMenuItem(MENU_ITEM_SPECIAL_BLANK, MENU_SPECIAL_STATS);
            break;
      }
      
      insertMenuItem(MENU_ITEM_STAT_TOTAL_BONUS, MENU_SPECIAL_STATS);
      insertMenuItem(MENU_ITEM_STAT_TOTAL_POINTS, MENU_SPECIAL_STATS);
      insertMenuItem(MENU_ITEM_SPECIAL_HIGH_SCORE, MENU_SPECIAL_STATS);
      //#if DefaultConfiguration || Nokia_6600 || Nokia_6600_Unobfuscated || Razr
      insertMenuItem(MENU_ITEM_SPECIAL_BLANK, MENU_SPECIAL_STATS);
      //#endif
      insertMenuItem(MENU_ITEM_SPECIAL_OK, MENU_SPECIAL_STATS);
      
      startMenu(MENU_SPECIAL_STATS);
      m_current_menu_item = m_next_menu_item = getListLength(MENU_SPECIAL_STATS) -1;
   }
   
   
   
   
   
   
   
   /* initiate an in-game text box, with this locale text */
   public static final void startTextBox(int locale_index, int type) {
      startTextBox(locale_index, type, Graphics.HCENTER);
   }
   public static final void startTextBox(int locale_index, int type, int anchor) {
      m_text = locale_index;
      m_text_type = type;
      m_text_anchor = anchor;
      m_text_page = 0;
      
      switch (type) {
         case TEXT_TYPE_WINDOW:
            m_text_width = MENU_ITEM_TEXT_WIDTH;
            m_text_height = MENU_ITEM_TEXT_HEIGHT;
            break;
         
         case TEXT_TYPE_FULLSCREEN:
            m_text_width = MENU_ITEM_TEXT_FULL_WIDTH;
            m_text_height = MENU_ITEM_TEXT_FULL_HEIGHT;
            break;
            
         case TEXT_TYPE_END:
            m_text_width = MENU_ITEM_TEXT_FULL_WIDTH;
            m_text_height = MENU_ITEM_TEXT_FULL_HEIGHT;
            break;
            
         case TEXT_TYPE_WINSCREEN:
            m_text_width = MENU_ITEM_TEXT_END_WIDTH;
            m_text_height = MENU_ITEM_TEXT_END_HEIGHT;
            break;
            
      }
      
      m_text_num_pages = Engine.getNumPages(locale_index, m_text_width, m_text_height);
      //if (Engine.getNumPages(locale_index, m_text_width, m_text_height+Engine.CUSTOM_FONT_NEWLINE_HEIGHT)<=1) m_text_num_pages = 1;
      
      clearMenu(MENU_SPECIAL_TEXT);
      insertMenuItem(MENU_ITEM_SPECIAL_TEXT, MENU_SPECIAL_TEXT);
      m_menu_item_text[MENU_ITEM_SPECIAL_TEXT] = (short)locale_index;
      m_menu_item_type[MENU_ITEM_SPECIAL_TEXT] = MENU_ITEM_TYPE_TEXT;
      
      if (Engine.s_engine.m_state==Engine.STATE_INGAME_MENU  &&  Level.s_state!=Level.STATE_SCORE) {
         push();
         setMenu(MENU_SPECIAL_TEXT);
      } else {
         startMenu(MENU_SPECIAL_TEXT);
      }
     
   }
   
   /* handle the up scrolling for a text box */
   private static final void scrollUpTextBox() {
      if (m_text_num_pages <= 1) return;
      //if (m_text_type==TEXT_TYPE_END) return;
      if (--m_text_page < 0) m_text_page = 0;
      m_menu_item_timer = 0;
   }
   
   /* handle the down scrolling for a text box */
   private static final void scrollDownTextBox() {
      if (m_text_num_pages <= 1) return;
      //if (m_text_type==TEXT_TYPE_END) return;
      if (++m_text_page > m_text_num_pages-1) m_text_page = m_text_num_pages-1;
      m_menu_item_timer = 0;
   }
   
   /* handle the left scrolling for high scores lists */
   private static final void scrollLeftHighscores() {
      m_highscore_type -= Level.SCORE_ENTRIES;
      if (m_highscore_type < Level.SCORE_ADVENTURE) m_highscore_type = Level.SCORE_SURVIVAL;
      m_menu_item_timer = 0;
   }
   
   /* handle the right scrolling for high scores lists */
   private static final void scrollRightHighscores() {
      m_highscore_type += Level.SCORE_ENTRIES;
      if (m_highscore_type > Level.SCORE_SURVIVAL) m_highscore_type = Level.SCORE_ADVENTURE;
      m_menu_item_timer = 0;
   }
   
   
   
   public static final void startLevelSelect(int type) {
      m_level_list_type = type;
      m_level_list_start = 0;
      m_level_list_size = Level.s_puzzles_unlocked;
      
      m_level_list_start = (Level.s_puzzle_number / NUM_LEVELS) * NUM_LEVELS;
      m_next_menu_item = Level.s_puzzle_number % NUM_LEVELS;
      
      int page_end = (m_level_list_start+NUM_LEVELS > m_level_list_size) ? m_level_list_size-m_level_list_start : NUM_LEVELS;
      
      clearMenu(MENU_SPECIAL_LEVEL_SELECT);
      for (int i=0; i<NUM_LEVELS; ++i) {
         insertMenuItem((i<page_end)?(MENU_ITEM_LEVEL_0+i):MENU_ITEM_SPECIAL_BLANK, MENU_SPECIAL_LEVEL_SELECT);
      }
      //m_next_menu_item = Level.s_puzzle_number % NUM_LEVELS;
   }
   
   /* handle the left scrolling for level select lists */
   private static final void scrollLeftLevelSelect() {
      m_level_list_start -= NUM_LEVELS;
      if (m_level_list_start < 0) m_level_list_start = ((m_level_list_size-1)/NUM_LEVELS) * NUM_LEVELS;
      
      int page_end = (m_level_list_start+NUM_LEVELS > m_level_list_size) ? m_level_list_size-m_level_list_start : NUM_LEVELS;
      
      clearMenu(MENU_SPECIAL_LEVEL_SELECT);
      for (int i=0; i<NUM_LEVELS; ++i) {
         insertMenuItem((i<page_end)?(MENU_ITEM_LEVEL_0+i):MENU_ITEM_SPECIAL_BLANK, MENU_SPECIAL_LEVEL_SELECT);
      }
      if (m_next_menu_item>=page_end) m_next_menu_item = page_end-1;
      m_menu_item_timer = 0;
   }
   
   /* handle the right scrolling for level select lists */
   private static final void scrollRightLevelSelect() { 
      m_level_list_start += NUM_LEVELS;
      if (m_level_list_start>=m_level_list_size) m_level_list_start = 0;
      
      int page_end = (m_level_list_start+NUM_LEVELS > m_level_list_size) ? m_level_list_size-m_level_list_start : NUM_LEVELS;
      
      clearMenu(MENU_SPECIAL_LEVEL_SELECT);
      for (int i=0; i<NUM_LEVELS; ++i) {
         insertMenuItem((i<page_end)?(MENU_ITEM_LEVEL_0+i):MENU_ITEM_SPECIAL_BLANK, MENU_SPECIAL_LEVEL_SELECT);
      }
      if (m_next_menu_item>=page_end) m_next_menu_item = page_end-1;
      m_menu_item_timer = 0;
   }
   
   
   /* push the current menu state onto the stack */
   public static final void push() {
      if (m_current_stack_height >= MAX_MENU_DEPTH-1) return;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -