Example #1
0
 /**
  * 转换副本信息协议
  * @param $player_id 玩家ID
  * @param $fb_list 副本列表
  * @param $chapter_id 章节ID
  * @param $page 页数ID
  */
 private function format_fb_info($player_id, $fb_list, $chapter_id, $page)
 {
     if (Com_Array::is_good_arr($fb_list)) {
         #获取正在进行的主线副本ID
         $map_id = 0;
         $task_info = $this->get_data('PlayerTask')->get_task_info($player_id);
         if ($task_info && !empty($task_info['main_val'])) {
             if (Com_Array::is_good_arr($task_info['main_val'])) {
                 foreach ($task_info['main_val'] as $task) {
                     if (isset($task['task_status']) && $task['task_status'] == 1) {
                         if (isset($task['target']) && !empty($task['target']) && Com_Array::is_good_arr($task['target'])) {
                             foreach ($task['target'] as $map_info) {
                                 if (isset($map_info['target_id'])) {
                                     $map_id = $map_info['target_id'];
                                     break;
                                 }
                             }
                         }
                     }
                 }
             }
         }
         $obj_player_data = $this->get_data('Player');
         $cur_player = $obj_player_data->get_player_info($player_id, array('name', 'career_type'));
         $obj_player_fb_data = $this->get_data('PlayerFB');
         foreach ($fb_list as $key => $fb_data) {
             if (!isset($fb_data['passed']) || $fb_data['passed'] != 1) {
                 //副本是否开启状态
                 $open_next_fb = $this->is_open_next_fb($player_id, $fb_data['fb_id'], $chapter_id, $page);
                 if ($open_next_fb) {
                     $fb_list[$key]['state'] = 1;
                 }
             } else {
                 if ($map_id == $fb_data['fb_id']) {
                     #容错,主线任务还在,改变副本通关状态
                     $fb_list[$key]['passed'] = 0;
                 }
                 $fb_list[$key]['state'] = 1;
             }
             $fb_award_table = $this->get_cache_table_data('fb_award_table', array('sid' => $fb_data['fb_id'], 'difficulty' => $fb_data['diff']));
             if ($fb_award_table['drop_equip']) {
                 $data = explode("|", $fb_award_table['drop_equip']);
                 if (Com_Array::is_good_arr($data)) {
                     foreach ($data as $second_layer) {
                         $list = explode(":", $second_layer);
                         if ($list[0] == $cur_player['career_type']) {
                             for ($i = 1; $i < count($list); $i++) {
                                 $item = Cache_Prop::getInstance()->get_prop_info($list[$i]);
                                 $fb_list[$key]['drop_equip'][] = Struct_Prop::get_prop_struct($item);
                             }
                             break;
                         }
                     }
                 }
             }
             //玩家名字和职业
             $fb_list[$key]['player_name'] = $cur_player['name'];
             $fb_list[$key]['player_type'] = $cur_player['career_type'];
             //副本最佳玩家名字、职业、时间
             $fb_data = $obj_player_fb_data->get_fb_pass_data($fb_data['fb_id']);
             $fb_list[$key]['best_player_name'] = $fb_data['player_name'];
             $fb_list[$key]['best_player_type'] = $fb_data['player_type'];
             $fb_list[$key]['best_time'] = $fb_data['pass_time'];
             $fb_list[$key] = Struct_PlayerAttr::get_fb_info_struct($fb_list[$key]);
         }
     }
     return $fb_list;
 }