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

📄 level.java

📁 Critter_Crunch_J2ME 游戏源
💻 JAVA
📖 第 1 页 / 共 5 页
字号:
      s_type = (byte)type;
      s_number = (byte)number;
      s_last_score = s_current_score = score;

      initProperties();
      Engine.s_current_sound_playing = 10000;
      if(s_type == TYPE_MAINMENU) Engine.loadSavedGameFromRecordStore();
      else                        Engine.saveGameToRecordStore();

      //Engine.printLine("extra type: " + s_extra_type + ", adventure #: " + s_adventure_number + ", puzzle: " + s_puzzle_number + ", time: " + s_timetrial_number);

      if(!Engine.s_engine.s_use_tutorials && s_type == TYPE_TUTORIAL && s_main_type == TYPE_ADVENTURE) {
         //Engine.printLine("skipping tutorial, next type: " + s_next_type + ", next number: " + s_next_number);
         init(s_next_type, s_next_number, s_last_score);
         return;
      }
      else {

         initBackground();

         if(s_type == TYPE_MAINMENU) {
            Engine.playSound(Engine.SONG_TITLE);
         }
         else {
                 Engine.stopAllSounds();
            //#if DefaultConfiguration || Nokia_6600 || Nokia_6600_Unobfuscated || Nokia_3220 || Nokia_3220_Unobfuscated || Razr
            if(s_type == TYPE_TUTORIAL)      Engine.playSound(Engine.SONG_TUTORIAL);
            else if(s_type == TYPE_SURVIVAL) Engine.playSound(Engine.getRandom(Engine.SONG_BG_1, Engine.SONG_BG_4 + 1));
            else                             Engine.playSound(((int)s_number % Engine.SONGS_TOTAL) + Engine.SONG_BG_1);
            //#else
//#             if(s_type != TYPE_TUTORIAL) Engine.playSound(Engine.SOUND_LEVEL_START);
//#             else if (s_type == TYPE_TUTORIAL && Engine.mb_script_show_text) Engine.playSound(Engine.SONG_TUTORIAL);
            //#endif

            initChances();
            initBoard();
            initExtras();

            if(s_type == TYPE_TUTORIAL) {
               // start the level immediately without the board dropping state
               Level.seedBoard();
               s_player = new Avatar();
               s_state = STATE_ACTIVE;
               //Engine.mb_script_active = false;
               Engine.s_engine.beginScript(number);

            } else {
               Engine.mb_script_active = false;
               s_player = new Avatar(-Engine.SCREEN_HALF_HEIGHT);
            }
         }
      }

      Engine.gc();
      //Level.print();
      //Engine.printLine("Heap after loading the level: " + TOTFC.s_runtime.freeMemory());
   }

   // initialize miscellaneous level properties.
   public static void initProperties() {

      s_state = STATE_INTRO;
      s_clock = 0;
      s_level_bar = s_level_bar_goal = Engine.FULL_INT;
      s_level_bar_height = FOOD_BAR_HEIGHT;
      s_board_offset_total = s_board_offset = 0;
      s_background_frame = 0;
      s_creature_count = s_greens = s_reds = s_blues = s_oranges = s_purples = s_specials = 0;
      s_special_last = s_special_interval = 0;
      s_board_timer = s_board_timer_full = s_board_timer_original = s_board_timer_delay = 0;
      s_board_timer_bonus = s_board_timer_bonus_original = 0;
      s_combo = s_longest_combo = 0;
      s_total_combos = 0;
      s_jewel_column = s_jewel_board_offset = Engine.FULL_BYTE;
      s_coin_timer = s_coin_frame = 0;
      s_total_jewels_caught = 0;
      s_hold_down = 0;
      s_board = null;
      s_extras = null;
      s_player = null;
      s_game_win = false;

      //#ifndef NO_BOARD_BUMPS
      for(int i = 0; i < GAME_BOARD_W; i++) {
         s_board_bumps[BUMP_SIZE][i] = 0;
         s_board_bumps[BUMP_DIRECTION][i] = Engine.DIRECTIONLESS;
      }
      //#endif

      int start;

      if(s_type == TYPE_ADVENTURE) {
         s_extra_type = TYPE_ADVENTURE;
         s_adventure_number = s_number;
         s_adventure_score = s_last_score;
         start = s_number * LEVEL_SIZE;
         s_next_type = LEVELS[start + NEXT_LEVEL_TYPE];
         s_next_number = (byte)(LEVELS[start + NEXT_LEVEL_NUMBER] - 1);
         s_board_timer = s_board_timer_full = s_board_timer_original = LEVELS[start + LEVEL_BOARD_TIMER] * TIME_LEVEL_OFFSET;
         s_level_bar = s_level_bar_goal = LEVELS[start + LEVEL_FOOD_BAR];
         s_level_bar_height = s_level_bar * FOOD_BAR_MULTIPLYER;
         //#if DefaultConfiguration || Nokia_6600 || Nokia_6600_Unobfuscated
         s_board_padding = LEVELS[start + LEVEL_ROWS];
         //#else
//#          s_board_padding = (byte)(LEVELS[start + LEVEL_ROWS] - 1);
         //#endif
         s_board_timer_bonus = s_board_timer_bonus_original = LEVELS[start + LEVEL_BONUS] * TIME_LEVEL_OFFSET;
         s_oranges = LEVELS[start + LEVEL_ORANGES];
         s_purples = LEVELS[start + LEVEL_PURPLES];
         //Engine.printLine("Level init, next_type: " + s_next_type + ", next_number: " + s_next_number);
      }
      else if(s_type == TYPE_PUZZLE) {
         if(s_main_type == TYPE_ADVENTURE) {
            s_extra_type = TYPE_PUZZLE;
            s_adventure_number = s_number;
            s_adventure_score = s_last_score;
         }
         else {
            s_puzzle_number = s_number;
         }
         start = s_number * PUZZLE_SIZE;
         s_next_type = PUZZLES[start + NEXT_LEVEL_TYPE];
         s_next_number = (byte)(PUZZLES[start + NEXT_LEVEL_NUMBER] - 1);
         s_level_bar = s_level_bar_goal = PUZZLES[start + COMMON_HEADER];
         s_level_bar_height = s_level_bar * FOOD_BAR_SQUARE_SIZE;
      }
      else if(s_type == TYPE_TIMETRIAL) {
         if(s_main_type == TYPE_ADVENTURE) {
            s_extra_type = TYPE_TIMETRIAL;
            s_adventure_number = s_number;
            s_adventure_score = s_last_score;
         }
         else {
            s_timetrial_number = s_number;
            s_timetrial_score = s_last_score;
         }
         start = s_number * TIMETRIAL_SIZE;
         //Engine.printLine("start: " + start + ", next type: " + NEXT_LEVEL_TYPE + ", total: " + (start + NEXT_LEVEL_TYPE) + ", length: " + TIMETRIALS.length);
         s_next_type = TIMETRIALS[start + NEXT_LEVEL_TYPE];
         s_next_number = (byte)(TIMETRIALS[start + NEXT_LEVEL_NUMBER] - 1);
         s_level_bar = s_level_bar_goal = TIMETRIALS[start + COMMON_HEADER];
         s_level_bar_height = s_level_bar * FOOD_BAR_MULTIPLYER;
      }
      else if(s_type == TYPE_SURVIVAL) {
         s_number = 0;
         s_level_bar = s_level_bar_goal = SURVIVAL_TIMER;
         s_level_bar_height = s_level_bar / TOTFC.FRAMES_PER_SECOND * FOOD_BAR_MULTIPLYER;
         s_board_timer = s_board_timer_full = s_board_timer_original = SURVIVAL_DROP_TIMER;
         s_board_padding = SURVIVAL_START_ROWS;
      }
      else if(s_type == TYPE_TUTORIAL) {
         if(s_main_type == TYPE_ADVENTURE) {
            s_extra_type = TYPE_TUTORIAL;
            s_adventure_number = s_number;
            s_adventure_score = s_last_score;
         }
         start = s_number * TUTORIAL_SIZE;
         s_level_bar = s_level_bar_goal = TUTORIALS[start + COMMON_HEADER];
         if(s_number == PUZZLE_TUTORIAL) s_level_bar_height = s_level_bar * FOOD_BAR_SQUARE_SIZE;
         else                            s_level_bar_height = s_level_bar * FOOD_BAR_MULTIPLYER;

         if(s_number != PUZZLE_TUTORIAL && s_number != TIMETRIAL_TUTORIAL)
            s_level_bar -= s_level_bar/4;     // start off with a quarter full level bar

         s_next_type = TUTORIALS[start + NEXT_LEVEL_TYPE];
         s_next_number = (byte)(TUTORIALS[start + NEXT_LEVEL_NUMBER] - 1);
      }

      //s_board_timer = s_board_timer_full = s_board_timer_original = 100;
      //s_board_timer_offset = 10;
      //Engine.printLine("board timer: " + s_board_timer_full + ", offset: " + s_board_timer_offset);
      //#ifndef NO_SCREEN_SHAKING
      Engine.clearAllShakes();
      //#endif
   }

   // create an array of creature ids that will be used to indicate the chance
   // of them appearing when seeding the game board.
   public static void initChances() {

      if(s_type == TYPE_ADVENTURE) {
         int chances_size = 0, start = s_number * LEVEL_SIZE + COMMON_HEADER + LEVEL_HEADER, end = start + Critter.ALL_CREATURES, index_1, index_2;

         for(int i = start; i < end; i++) {
            chances_size += LEVELS[i];
         }

         s_chance_creatures = new byte[chances_size];
         index_1 = 0;
         index_2 = 0;

         for(int i = start; i < end; i++) {

⌨️ 快捷键说明

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