Esempio n. 1
0
 /**
  * 开始一场战斗
  * @return mixed
  */
 public function start()
 {
     // TODO 各种Check
     // 各项参数取得
     $intPlayerId = Input::get('player_id', 0);
     $intDungeonId = Input::get('dungeon_id', 0);
     $strType = Input::get('type', 'normal');
     $now = Carbon::now();
     // 有没有进行中的战斗
     $objBattle = Battle::where('player_id', $intPlayerId)->where('dungeon_id', $intDungeonId)->where('end_datetime', '>', $now)->orderBy('id', 'DESC')->first();
     // 存在进行中的战斗
     if (!empty($objBattle)) {
         return Response::json($objBattle->toArray());
     }
     // 取得地下城信息
     $lstDungeonInfo = Dungeon::getInfo($intDungeonId);
     // 没有找到该当地下城
     if (empty($lstDungeonInfo)) {
         return 'Dungeon not exist';
     }
     // 取得地下城对象
     $objDungeon = $lstDungeonInfo['info'];
     // Team TODO
     $intTeamId = Input::get('team_id');
     $objTeam = Team::find($intTeamId);
     if (!$objTeam) {
         return 'NG TeamId';
     }
     // 队伍的PlayerId不一致的情况
     if ($objTeam->player_id != $intPlayerId) {
         return 'Wrong PlayerId For Team';
     }
     // 冒险做成
     $objBattle = new Battle();
     // 冒险情报的各种设定
     $objBattle->player_id = $intPlayerId;
     $objBattle->dungeon_id = $intDungeonId;
     $objBattle->floor = $objDungeon->floor;
     $objBattle->current_floor = 0;
     $objBattle->type = $strType;
     $objBattle->start_datetime = $now->toDateTimeString();
     $objBattle->end_datetime = $now->addMinutes($objDungeon->floor)->toDateTimeString();
     // 出战队伍信息保存在冒险信息中
     if ($objTeam->position_1_owned_card_id != 0) {
         $ownedCard1 = OwnedCard::find($objTeam->position_1_owned_card_id);
         $objBattle->position_1 = $ownedCard1->id;
     }
     if ($objTeam->position_2_owned_card_id != 0) {
         $ownedCard2 = OwnedCard::find($objTeam->position_2_owned_card_id);
         $objBattle->position_2 = $ownedCard2->id;
     }
     if ($objTeam->position_3_owned_card_id != 0) {
         $ownedCard3 = OwnedCard::find($objTeam->position_3_owned_card_id);
         $objBattle->position_3 = $ownedCard3->id;
     }
     if ($objTeam->position_4_owned_card_id != 0) {
         $ownedCard4 = OwnedCard::find($objTeam->position_4_owned_card_id);
         $objBattle->position_4 = $ownedCard4->id;
     }
     if ($objTeam->position_5_owned_card_id != 0) {
         $ownedCard5 = OwnedCard::find($objTeam->position_5_owned_card_id);
         $objBattle->position_5 = $ownedCard5->id;
     }
     if ($objTeam->position_6_owned_card_id != 0) {
         $ownedCard6 = OwnedCard::find($objTeam->position_6_owned_card_id);
         $objBattle->position_6 = $ownedCard6->id;
     }
     if ($objBattle->save()) {
         return Response::json($objBattle->toArray());
     }
 }