Exemple #1
0
 /**
  * @inheritDoc
  */
 public static function create($components)
 {
     // set timeout
     $moves = new self();
     // no moves?
     if (count($components) == 1) {
         return $moves;
     }
     for ($i = 1; $i < count($components);) {
         switch ($components[$i + 1]) {
             case 'place_armies':
                 $placeArmiesMove = new \Mastercoding\Conquest\Move\PlaceArmies();
                 $placeArmiesMove->setPlayerName($components[$i]);
                 $placeArmiesMove->addPlaceArmies($components[$i + 2], $components[$i + 3]);
                 $moves->addMove($placeArmiesMove);
                 $i += 4;
                 break;
             case 'attack/transfer':
                 $attackTransferMove = new \Mastercoding\Conquest\Move\AttackTransfer();
                 $attackTransferMove->setPlayerName($components[$i]);
                 $attackTransferMove->addAttackTransfer($components[$i + 2], $components[$i + 3], $components[$i + 4]);
                 $moves->addMove($attackTransferMove);
                 $i += 5;
                 break;
             default:
                 throw new \Mastercoding\Conquest\Command\Parser\GenericException('Invalid opponent moves');
         }
     }
     return $moves;
 }
 public function testPlaceArmies()
 {
     $move = new \Mastercoding\Conquest\Move\PlaceArmies();
     $move->setPlayerName('test');
     $move->addPlaceArmies(1, 5);
     $move->addPlaceArmies(3, 2);
     // output
     $this->assertEquals('test place_armies 1 5,test place_armies 3 2', $move->toString());
 }
 /**
  * @inheritDoc
  */
 public function placeArmies(\Mastercoding\Conquest\Command\Go\PlaceArmies $placeArmiesCommand)
 {
     // get amount to place
     $amount = $this->getMap()->getStartingArmies();
     // place on any of my regions
     $myRegions = $this->getMap()->getRegionsForPlayer($this->getMap()->getYou());
     // first
     $myRegions->rewind();
     $first = $myRegions->current();
     // moves
     $placeArmiesMove = new \Mastercoding\Conquest\Move\PlaceArmies();
     $placeArmiesMove->addPlaceArmies($first->getId(), $amount);
     return $placeArmiesMove;
 }
 /**
  * @inheritDoc
  */
 public function placeArmies(\Mastercoding\Conquest\Command\Go\PlaceArmies $placeArmiesCommand)
 {
     // armies to place
     $armiesToPlace = $this->getMap()->getStartingArmies();
     // move, move and amount left
     $move = new \Mastercoding\Conquest\Move\PlaceArmies();
     $move->setPlayerName($this->getMap()->getYou()->getName());
     // the response
     $response = array($move, $armiesToPlace);
     // only one region picker can pick
     foreach ($this->armyPlacementStrategies as $strategy) {
         $response = $strategy->placeArmies($this, $response[0], $response[1], $placeArmiesCommand);
         if ($response[1] == 0) {
             break;
         }
     }
     // move
     $move = $response[0];
     // no move
     if (count($move->getPlaceArmies()) == 0) {
         $move = new \Mastercoding\Conquest\Move\NoMove();
     }
     // move
     return $move;
 }
 /**
  * @depends testSetupPlayers
  */
 public function testPlaceArmies(\Mastercoding\Conquest\Object\Map $map)
 {
     // command
     $move = new \Mastercoding\Conquest\Move\PlaceArmies();
     $move->setPlayerName('test');
     $move->addPlaceArmies(1, 5);
     $move->addPlaceArmies(3, 2);
     // process
     $this->mapUpdater->updatePlaceArmies($map, $move);
     // validate
     $this->assertEquals(9, $map->getRegionById(1)->getArmies());
     $this->assertEquals(4, $map->getRegionById(3)->getArmies());
 }