/** * 构建方法 */ public function __construct(array $attributes = array()) { // 继承 parent::__construct($attributes); // Eloquent // 玩家卡片详细 $this->_ownedCardDetail = OwnedCard::find($this->owned_card_id); }
/** * 我方卡片的战斗单元构造方法 * @param $intOwnedCardId * @param $position */ public function initWithAlien($intOwnedCardId, $position) { $this->position = $position; $objOwnedCard = OwnedCard::find($intOwnedCardId); // TODO 战斗各种加成 // 卡片ID不正的情况 // 数据整合 $this->hp = $objOwnedCard->hp; $this->atk = $objOwnedCard->atk; $this->def = $objOwnedCard->def; $this->spd = $objOwnedCard->spd; $this->int = $objOwnedCard->int; $this->card_id = $objOwnedCard->card_id; $this->alive = true; }
/** * 开始一场战斗 * @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()); } }
public function updateTeam() { $playerId = Input::get('player_id', 0); $teamId = Input::get('team_id', 0); if ($playerId == 0 || $teamId == 0) { // Error 1 } $team = Team::find($teamId); if (!$team) { // Error 2 } if ($team->player_id != $playerId) { // Error 3 } $totalCost = 0; // 成员更新 // TODO Array形式传递函数-》For便利更新 if (Input::get('position_1', 0) != 0) { $position1 = OwnedCard::find(Input::get('position_1')); // Owner Check // 是否已经在其他队伍中? // 是否有所改变? $team->position_1_owned_card_id = $position1->id; $totalCost += $position1->getCost(); $teamMember1 = $team->getMember(1)->first(); // $teamMember1 = TeamMember::find($team->position_1_member_id); $teamMember1->owned_card_id = $position1->id; $teamMember1->card_id = $position1->card_id; # TODO 缘相关 $teamMember1->save(); // 20151103 追加 $position1->team_id = $teamId; $position1->save(); } else { // 更新为无队员的情况 $team->position_1_owned_card_id = 0; $teamMember1 = $team->getMember(1)->first(); // $teamMember1 = TeamMember::find($team->position_1_member_id); $teamMember1->owned_card_id = 0; $teamMember1->card_id = 0; # TODO 缘相关 $teamMember1->save(); } if (Input::get('position_2', 0) != 0) { $position2 = OwnedCard::find(Input::get('position_2')); $team->position_2_owned_card_id = $position2->id; $totalCost += $position2->getCost(); $teamMember2 = $team->getMember(2); $teamMember2->owned_card_id = $position2->id; $teamMember2->card_id = $position2->card_id; # TODO 缘相关 $teamMember2->save(); // 20151103 追加 $position2->team_id = $teamId; $position2->save(); } else { // 更新为无队员的情况 $team->position_2_owned_card_id = 0; $teamMember2 = $team->getMember(2)->first(); // $teamMember2 = TeamMember::find($team->position_2_member_id); $teamMember2->owned_card_id = 0; $teamMember2->card_id = 0; # TODO 缘相关 $teamMember2->save(); } if (Input::get('position_3', 0) != 0) { $position3 = OwnedCard::find(Input::get('position_3')); $team->position_3_owned_card_id = $position3->id; $totalCost += $position3->getCost(); $teamMember3 = $team->getMember(3); $teamMember3->owned_card_id = $position3->id; $teamMember3->card_id = $position3->card_id; # TODO 缘相关 $teamMember3->save(); // 20151103 追加 $position3->team_id = $teamId; $position3->save(); } else { // 更新为无队员的情况 $team->position_3_owned_card_id = 0; $teamMember3 = $team->getMember(3)->first(); // $teamMember3 = TeamMember::find($team->position_3_member_id); $teamMember3->owned_card_id = 0; $teamMember3->card_id = 0; # TODO 缘相关 $teamMember3->save(); } if (Input::get('position_4', 0) != 0) { $position4 = OwnedCard::find(Input::get('position_4')); $team->position_4_owned_card_id = $position4->id; $totalCost += $position4->getCost(); $teamMember4 = $team->getMember(4); $teamMember4->owned_card_id = $position4->id; $teamMember4->card_id = $position4->card_id; # TODO 缘相关 $teamMember4->save(); // 20151103 追加 $position4->team_id = $teamId; $position4->save(); } else { // 更新为无队员的情况 $team->position_4_owned_card_id = 0; $teamMember4 = $team->getMember(4)->first(); // $teamMember4 = TeamMember::find($team->position_4_member_id); $teamMember4->owned_card_id = 0; $teamMember4->card_id = 0; # TODO 缘相关 $teamMember4->save(); } if (Input::get('position_5', 0) != 0) { $position5 = OwnedCard::find(Input::get('position_5')); $team->position_5_owned_card_id = $position5->id; $totalCost += $position5->getCost(); $teamMember5 = $team->getMember(5); $teamMember5->owned_card_id = $position5->id; $teamMember5->card_id = $position5->card_id; # TODO 缘相关 $teamMember5->save(); // 20151103 追加 $position5->team_id = $teamId; $position5->save(); } else { // 更新为无队员的情况 $team->position_5_owned_card_id = 0; $teamMember5 = $team->getMember(5)->first(); // $teamMember5 = TeamMember::find($team->position_5_member_id); $teamMember5->owned_card_id = 0; $teamMember5->card_id = 0; # TODO 缘相关 $teamMember5->save(); } if (Input::get('position_6', 0) != 0) { $position6 = OwnedCard::find(Input::get('position_6')); $team->position_6_owned_card_id = $position6->id; $totalCost += $position6->getCost(); $teamMember6 = $team->getMember(6); $teamMember6->owned_card_id = $position6->id; $teamMember6->card_id = $position6->card_id; # TODO 缘相关 $teamMember6->save(); // 20151103 追加 $position6->team_id = $teamId; $position6->save(); } else { // 更新为无队员的情况 $team->position_6_owned_card_id = 0; $teamMember6 = $team->getMember(6)->first(); // $teamMember6 = TeamMember::find($team->position_6_member_id); $teamMember6->owned_card_id = 0; $teamMember6->card_id = 0; # TODO 缘相关 $teamMember6->save(); } $team->total_cost = $totalCost; $team->save(); return Response::json($team->toArray()); }
/** * 交换队员处理 * Case1:该当位置为空 * Case2:该当位置有队员,换人对象未入队 * Case3:该当位置有队员,换人对象入队 * Case4:该当位置有队员,换人对象为空 * @param $intPosition * @param null $objToOwnedCard * @return null */ public function changeMember($intPosition, $objToOwnedCard = null) { // 检查位置信息是否正确 if ($intPosition <= 0 || $intPosition > self::intTeamMemberCount) { // TODO Error return null; } // 取得该位置原队员 $objTeamMember = $this->getMember($intPosition); // Transaction DB::beginTransaction(); // 根据目标队员分析Case try { if ($objToOwnedCard) { /******* 目标队员不为空的情况 *******/ // 检查目标卡片的用户是否一致 if ($objToOwnedCard->player_id != $this->player_id) { // 目标卡片用户不同 throw new Exception('Wrong Player Id'); } // 检查目标卡片是否已在目标位置 if ($objToOwnedCard->id == $objTeamMember->owned_card_id) { // 目标卡片已在目标位置 throw new Exception('Wrong Player Id'); } // 检查目标卡片的入队情况 if ($objToOwnedCard->team_id > 0 && $objToOwnedCard->team_id != $this->id) { // 已经在其他队伍中 throw new Exception('Wrong Player Id'); } // 开始换人处理 if ($objTeamMember->owned_card_id > 0) { // 目标位置有玩家卡片的情况 // 目标卡片是否已经在当前队伍的其他位置上 if ($objToOwnedCard->team_id == $this->id) { // 目标卡片原本已在此队伍中 需要和目标位置原卡片互换情报 $objToOwnedCardTeamMember = TeamMember::where("owned_card_id", $objToOwnedCard->id)->first(); // 对象卡片原位置的玩家卡片ID更新为目标位置原玩家卡片ID $objToOwnedCardTeamMember->owned_card_id = $objTeamMember->owned_card_id; // 保存 if (!$objToOwnedCardTeamMember->save()) { throw new Exception('Save Failed'); } } else { // 目标玩家卡片原本未在队伍中 需要重置目标位置原玩家卡片的队伍ID $objFromOwnedCard = OwnedCard::find($objTeamMember->owned_card_id); $objFromOwnedCard->team_id = 0; if (!$objFromOwnedCard->save()) { throw new Exception('Save Failed'); } } // 更新目标队员情报 $objTeamMember->owned_card_id = $objToOwnedCard->id; // 更新目标用户卡片 $objToOwnedCard->team_id = $this->id; // 保存修改 if (!$objToOwnedCard->save() || !$objTeamMember->save()) { throw new Exception('Save Failed'); } } else { // 目标位置无卡片的情况 // 目标卡片是否已经在当前队伍的其他位置上 if ($objToOwnedCard->team_id == $this->id) { $objToOwnedCardTeamMember = TeamMember::where("owned_card_id", $objToOwnedCard->id)->first(); // 对象卡片原位置重置 $objToOwnedCardTeamMember->owned_card_id = 0; // 保存 if (!$objToOwnedCardTeamMember->save()) { throw new Exception('Save Failed'); } } // 更新队员情报 $objTeamMember->owned_card_id = $objToOwnedCard->id; // 更新目标用户卡片 $objToOwnedCard->team_id = $this->id; // 保存修改 if (!$objToOwnedCard->save() || !$objTeamMember->save()) { throw new Exception('Save Failed'); } } } else { /******* 目标队员为空的情况下 *******/ // 检查目前队伍人数,若等于1 则不可换为空 $intTeamMemberCount = TeamMember::where("team_id", $this->id)->where("owned_card_id", ">", 0)->count(); if ($intTeamMemberCount <= 1) { throw new Exception('Last Member'); } // 目标位置是否有玩家卡片 if ($objTeamMember->owned_card_id <= 0) { throw new Exception('Null Member To Null Member'); } // 清空目标位置原卡片数据 $objFromOwnedCard = OwnedCard::find($objTeamMember->owned_card_id); $objFromOwnedCard->team_id = 0; $objTeamMember->owned_card_id = 0; if (!$objFromOwnedCard->save() || !$objTeamMember->save()) { throw new Exception('Save Failed'); } } // 2016/11/10 队伍信息更新 switch ($intPosition) { case 1: if ($objToOwnedCard) { $this->position_1_owned_card_id = $objToOwnedCard->id; } else { $this->position_1_owned_card_id = 0; } break; case 2: if ($objToOwnedCard) { $this->position_2_owned_card_id = $objToOwnedCard->id; } else { $this->position_2_owned_card_id = 0; } break; case 3: if ($objToOwnedCard) { $this->position_3_owned_card_id = $objToOwnedCard->id; } else { $this->position_3_owned_card_id = 0; } break; case 4: if ($objToOwnedCard) { $this->position_4_owned_card_id = $objToOwnedCard->id; } else { $this->position_4_owned_card_id = 0; } break; case 5: if ($objToOwnedCard) { $this->position_5_owned_card_id = $objToOwnedCard->id; } else { $this->position_5_owned_card_id = 0; } break; case 6: if ($objToOwnedCard) { $this->position_6_owned_card_id = $objToOwnedCard->id; } else { $this->position_6_owned_card_id = 0; } break; } $this->save(); DB::commit(); } catch (Exception $e) { // TODO Dev Log DB::rollback(); } }
/** * 显示玩家装备库 */ public function equipmentBox() { echo "Player [" . $this->_intPlayerId . "] 装备Box <br />"; // 取得玩家装备列表 $lstEquipments = OwnedEquipment::where('player_id', $this->_intPlayerId)->get(); $intNum = 0; foreach ($lstEquipments as $objOwnedEquipment) { $intNum++; $objEquipmentInfo = Equipment::find($objOwnedEquipment->equipment_id); echo "No.[" . $intNum . "]装备名:" . $objEquipmentInfo->name_cn . " "; echo "主属性[TODO]值:{$objEquipmentInfo->status_1_value}(+{$objOwnedEquipment->status_1_add})"; if ($objOwnedEquipment->owned_card_id != 0) { $objOwnedCard = OwnedCard::find($objOwnedEquipment->owned_card_id); echo "(装备在:<a href='card-detail?player_id={$this->_intPlayerId}&owned_card_id={$objOwnedCard->id}'>{$objOwnedCard->getCardInfo()->name_cn}</a>)"; } echo "<br />"; } }
public function equipment() { // 把装备装备到卡片 $playerId = Input::get('player_id', 0); $ownedCardId = Input::get('owned_card_id', 0); $ownedEquipmentId = Input::get('owned_equipment_id', 0); $ownedCard = OwnedCard::find($ownedCardId); $ownedEquipment = OwnedEquipment::find($ownedEquipmentId); // Ownerc Check if ($ownedCard->player_id != $playerId || $ownedEquipment->player_id != $playerId) { } // 装备限制Check $equipment = Equipment::find($ownedEquipment->equipment_id); if ($equipment->attr != 0) { if ($ownedCard->attr != $equipment->attr) { // Error } } if ($equipment->job != 0) { if ($ownedCard->job != $equipment->job) { // Error } } if ($equipment->race != 0) { if ($ownedCard->race != $equipment->race) { // Error } } if ($equipment->rare != 0) { } // 装备中的卡片 $equipmentCardId = $ownedEquipment->owned_card_id; // 对象卡片原有装备 $cardEquipmentId = $ownedCard->owned_equipment_id; switch ($equipment->type) { case 1: // 武器 // 卸下 if ($equipmentCardId != 0) { $equipmentCard = OwnedCard::find($ownedEquipment->owned_card_id); $equipmentCard->owned_equipment_id_1 = 0; $ownedEquipment->owned_card_id = 0; // 卡片数据更新 $equipmentCard->setUpStatus(); } if ($cardEquipmentId != 0) { $cardEquipment = OwnedEquipment::find($cardEquipmentId); $cardEquipment->owned_card_id = 0; $cardEquipment->save(); } // 装备 $ownedCard->owned_equipment_id_1 = $ownedEquipment->id; $ownedEquipment->owned_card_id = $ownedCard->id; $ownedCard->setUpStatus(); break; case 2: // 头部 // 卸下 if ($equipmentCardId != 0) { $equipmentCard = OwnedCard::find($ownedEquipment->owned_card_id); $equipmentCard->owned_equipment_id_2 = 0; $ownedEquipment->owned_card_id = 0; // 卡片数据更新 $equipmentCard->setUpStatus(); } if ($cardEquipmentId != 0) { $cardEquipment = OwnedEquipment::find($cardEquipmentId); $cardEquipment->owned_card_id = 0; $cardEquipment->save(); } // 装备 $ownedCard->owned_equipment_id_2 = $ownedEquipment->id; $ownedEquipment->owned_card_id = $ownedCard->id; $ownedCard->setUpStatus(); break; case 3: // 胸部 // 卸下 if ($equipmentCardId != 0) { $equipmentCard = OwnedCard::find($ownedEquipment->owned_card_id); $equipmentCard->owned_equipment_id_3 = 0; $ownedEquipment->owned_card_id = 0; // 卡片数据更新 $equipmentCard->setUpStatus(); } if ($cardEquipmentId != 0) { $cardEquipment = OwnedEquipment::find($cardEquipmentId); $cardEquipment->owned_card_id = 0; $cardEquipment->save(); } // 装备 $ownedCard->owned_equipment_id_3 = $ownedEquipment->id; $ownedEquipment->owned_card_id = $ownedCard->id; $ownedCard->setUpStatus(); break; case 4: // 脚部 // 卸下 if ($equipmentCardId != 0) { $equipmentCard = OwnedCard::find($ownedEquipment->owned_card_id); $equipmentCard->owned_equipment_id_4 = 0; $ownedEquipment->owned_card_id = 0; // 卡片数据更新 $equipmentCard->setUpStatus(); } if ($cardEquipmentId != 0) { $cardEquipment = OwnedEquipment::find($cardEquipmentId); $cardEquipment->owned_card_id = 0; $cardEquipment->save(); } // 装备 $ownedCard->owned_equipment_id_4 = $ownedEquipment->id; $ownedEquipment->owned_card_id = $ownedCard->id; $ownedCard->setUpStatus(); break; case 5: // 耳环 // 卸下 if ($equipmentCardId != 0) { $equipmentCard = OwnedCard::find($ownedEquipment->owned_card_id); $equipmentCard->owned_equipment_id_5 = 0; $ownedEquipment->owned_card_id = 0; // 卡片数据更新 $equipmentCard->setUpStatus(); } if ($cardEquipmentId != 0) { $cardEquipment = OwnedEquipment::find($cardEquipmentId); $cardEquipment->owned_card_id = 0; $cardEquipment->save(); } // 装备 $ownedCard->owned_equipment_id_5 = $ownedEquipment->id; $ownedEquipment->owned_card_id = $ownedCard->id; $ownedCard->setUpStatus(); break; case 6: // 项链 // 卸下 if ($equipmentCardId != 0) { $equipmentCard = OwnedCard::find($ownedEquipment->owned_card_id); $equipmentCard->owned_equipment_id_6 = 0; $ownedEquipment->owned_card_id = 0; // 卡片数据更新 $equipmentCard->setUpStatus(); } if ($cardEquipmentId != 0) { $cardEquipment = OwnedEquipment::find($cardEquipmentId); $cardEquipment->owned_card_id = 0; $cardEquipment->save(); } // 装备 $ownedCard->owned_equipment_id_6 = $ownedEquipment->id; $ownedEquipment->owned_card_id = $ownedCard->id; $ownedCard->setUpStatus(); break; default: # code... break; } $ownedEquipment->save(); return Response::json($ownedCard); // 数据更新 // if ($ownedEquipment->atk > 0) { // $ownedCard->updateAtk(); // } }