/** * @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()); }