protected function run() { if ($this->check == self::OK) { $this->attackedPlayer['phase'] = Player::PHASE_UNDER_ATTACK; $this->attackedPlayer->save(); if ($this->params['additionalEnemyPlayerId']) { $playerRepository = new PlayerRepository(); $additionalAttackedPlayer = $playerRepository->getOneById(intval($this->params['additionalEnemyPlayerId'])); MySmarty::assign('card', $this->cards[0]); $response = MySmarty::fetch($this->template); $additionalAttackedPlayer['command_response'] = $response; $additionalAttackedPlayer->save(); } $this->actualPlayer['phase'] = Player::PHASE_WAITING; if ($this->actualPlayer->getIsBelleStar($this->game)) { $notices = $this->actualPlayer->getNoticeList(); $notices['character_used'] = 1; $this->actualPlayer->setNoticeList($notices); } $this->actualPlayer->save(); // TODO toto plati len ak je to utok bangom, ale bang sa pouziva na viacerych miestach - premysliet a dorobit aj duel a indianov prip dalsie $this->game['inter_turn'] = $this->attackedPlayer['id']; $this->game['inter_turn_reason'] = serialize(array('action' => 'fanning', 'from' => $this->actualPlayer['id'], 'to' => $this->attackedPlayer['id'], 'additionalTo' => intval($this->params['additionalEnemyPlayerId']))); $this->game->save(); GameUtils::throwCards($this->game, $this->actualPlayer, $this->cards); } }
/** * gets the player on move if inter_turn is set - this player is under attack or has some other reason for inter_turn * if inter_turn is not set, returns player on turn * * @return Player|NULL */ public function getPlayerOnMove() { $playerRepository = new PlayerRepository(); if ($this['inter_turn']) { return $playerRepository->getOneById($this['inter_turn']); } else { return $this->getPlayerOnTurn(); } }
public function main() { $gameId = intval(Utils::post('game')); $gameRepository = new GameRepository(); $game = $gameRepository->getOneById($gameId); $commandParams = array(); $commandParams['command'] = addslashes(Utils::post('command')); $commandParams['useCharacter'] = intval(Utils::post('useCharacter')); $commandParams['playCardId'] = intval(Utils::post('playCard')); if ($commandParams['playCardId']) { $cardRepository = new CardRepository(TRUE); $card = $cardRepository->getOneById($commandParams['playCardId']); $commandParams['playCardName'] = str_replace('-', '', $card->getItemAlias()); } // TODO mozno ich niekedy bude viac $commandParams['additionalCardsId'] = intval(Utils::post('additionalCard')); if ($commandParams['additionalCardsId']) { $cardRepository = new CardRepository(TRUE); $card = $cardRepository->getOneById($commandParams['additionalCardsId']); $commandParams['additionalCardsName'] = str_replace('-', '', $card->getItemAlias()); } $commandParams['enemyPlayerId'] = intval(Utils::post('player')); if ($commandParams['enemyPlayerId']) { $playerRepository = new PlayerRepository(); $player = $playerRepository->getOneById($commandParams['enemyPlayerId']); if ($player) { $user = $player->getUser(); if ($user) { $commandParams['enemyPlayerUsername'] = $user['username']; } } } if ($commandParams['command'] == 'fanning') { $commandParams['additionalEnemyPlayerId'] = intval(Utils::post('additionalPlayer')); if ($commandParams['additionalEnemyPlayerId']) { $playerRepository = new PlayerRepository(); $player = $playerRepository->getOneById($commandParams['additionalEnemyPlayerId']); if ($player) { $user = $player->getUser(); if ($user) { $commandParams['additionalEnemyPlayerUsername'] = $user['username']; } } } } // TODO brawl tu dava addslashes if ($commandParams['command'] == 'brawl') { $commandParams['enemyCardsId'] = addslashes(Utils::post('card')); } elseif ($commandParams['command'] == 'choose_cards') { $commandParams['selectedCards'] = addslashes(Utils::post('card')); } else { $commandParams['enemyCardsId'] = intval(Utils::post('card')); if ($commandParams['enemyCardsId']) { $cardRepository = new CardRepository(TRUE); $card = $cardRepository->getOneById($commandParams['enemyCardsId']); $commandParams['enemyCardsName'] = str_replace('-', '', $card->getItemAlias()); } } $commandParams['place'] = addslashes(Utils::post('place')); if (Utils::post('peyoteColor')) { $commandParams['peyoteColor'] = addslashes(Utils::post('peyoteColor')); } if (Utils::post('text')) { $commandParams['text'] = addslashes(Utils::post('text')); } $params = array(); foreach ($commandParams as $key => $value) { $params[] = $key . '=' . $value; } $commandString = implode('&', $params); Log::command($commandString); Command::setup($commandString, $game); }
protected function run() { if ($this->check == self::OK) { if (in_array($this->interTurnReason['action'], array('indians', 'wild_band'))) { $this->runMollyStarkAction(); $this->changeInterturn(); } elseif ($this->interTurnReason['action'] == 'duel') { $attackedPlayerId = intval($this->interTurnReason['to']); $playerRepository = new PlayerRepository(); $this->attackedPlayer = $playerRepository->getOneById($attackedPlayerId); MySmarty::assign('card', $this->cards[0]); $response = MySmarty::fetch($this->duelBangTemplate); if ($this->attackingPlayer['id'] == $this->actualPlayer['id']) { $this->attackedPlayer['phase'] = Player::PHASE_UNDER_ATTACK; $this->attackedPlayer['command_response'] = $response; $this->attackedPlayer->save(); $this->duelAttackedUser = $this->attackedPlayer->getUser(); $this->game['inter_turn'] = $this->attackedPlayer['id']; $this->game->save(); } elseif ($this->attackedPlayer['id'] == $this->actualPlayer['id']) { $this->attackingPlayer['phase'] = Player::PHASE_UNDER_ATTACK; $this->attackingPlayer['command_response'] = $response; $this->attackingPlayer->save(); $this->duelAttackedUser = $this->attackingPlayer->getUser(); $this->game['inter_turn'] = $this->attackingPlayer['id']; $this->game->save(); } else { // pcha sa sem niekto kto tu vobec nema co robit } $this->actualPlayer['command_response'] = ''; $this->actualPlayer['phase'] = Player::PHASE_NONE; $this->actualPlayer->save(); } else { $canAttack = $this->checkCanAttackApacheKid(); if ($canAttack === TRUE) { $this->attackedPlayer['phase'] = Player::PHASE_UNDER_ATTACK; $this->attackedPlayer->save(TRUE); $this->actualPlayer['phase'] = Player::PHASE_WAITING; if ($this->actualPlayer->getIsBelleStar($this->game) || $this->actualPlayer->getIsSlabTheKiller($this->game)) { $notices = $this->actualPlayer->getNoticeList(); $notices['character_used'] = 1; $this->actualPlayer->setNoticeList($notices); } $this->game['inter_turn'] = $this->attackedPlayer['id']; $this->game['inter_turn_reason'] = serialize(array('action' => 'bang', 'from' => $this->actualPlayer['id'], 'to' => $this->attackedPlayer['id'])); $this->game->save(); } else { $this->check = self::CANNOT_ATTACK_APACHE_KID; } // pouzitie bangu zapiseme aj ked hrac nemohol zautocit na apache kida $this->actualPlayer['bang_used'] = $this->actualPlayer['bang_used'] + 1; $this->actualPlayer->save(); } // vyhodime kartu bang GameUtils::throwCards($this->game, $this->actualPlayer, $this->cards); } }
protected function endGame($roles) { $playerRepository = new PlayerRepository(); $players = $playerRepository->getByGameAndRole($this->game['id'], $roles); $playersNames = array(); foreach ($players as $player) { $player['winner'] = 1; $player->save(); $user = $player->getUser(); $playersNames[] = $user['username']; } // znovu nacitame actual a attacking playera lebo to robi nejake halusky if ($this->actualPlayer) { $this->actualPlayer = $playerRepository->getOneById($this->actualPlayer['id']); } if ($this->attackingPlayer) { $this->attackingPlayer = $playerRepository->getOneById($this->attackingPlayer['id']); } // vytvorit nejaku tabulku hall of fame kde budu vyhry a prehry // vyhry a prehry za nejaku konkretnu rolu - typ roly - cize je jedno ci si bandita1 alebo bandita2 $message = array('text' => 'vyhrali hraci: ' . implode(', ', $playersNames), 'user' => User::SYSTEM); $this->addMessage($message); $this->game['status'] = Game::GAME_STATUS_ENDED; $this->game->save(); }
protected function takeLifeDown() { $command = 'command=life'; $beer = NULL; if ($this->player['actual_lifes'] == 1) { $beer = $this->player->getHasBeerOnHand(); if ($beer) { $command .= '&playCardId=' . $beer['id'] . '&playCardName=' . $beer->getCardName(); } } $interTurnReason = unserialize($this->game['inter_turn_reason']); if (isset($interTurnReason['from'])) { $attackingPlayerId = $interTurnReason['from']; $playerRepository = new PlayerRepository(); $attackingPlayer = $playerRepository->getOneById($attackingPlayerId); if ($attackingPlayer && $attackingPlayer->getHasShootgunOnTheTable()) { $handCards = $this->player->getHandCards(); if ($handCards) { $thrownCard = $handCards[array_rand($handCards)]; if ($beer) { $command .= '&additionalCardsId=' . $thrownCard['id'] . '&additionalCardsName=' . $thrownCard->getCardName(); } else { $command .= '&playCardId=' . $thrownCard['id'] . '&playCardName=' . $thrownCard->getCardName(); } } } } return $command; }