Exemplo n.º 1
0
 /**
  * Updates the map $map by processing the opponents moves. We only need to do
  * this for regions not present in lasts update map command
  *
  * @param \Mastercoding\Conquest\Object\Map $map
  * @param \Mastercoding\Conquest\Command\OpponentMoves\Moves $movesCommand
  * @param \Mastercoding\Conquest\Command\UpdateMap\Update $lastUpdateCommand
  */
 public function uppateOpponentMoves(\Mastercoding\Conquest\Object\Map $map, \Mastercoding\Conquest\Command\OpponentMoves\Moves $movesCommand, \Mastercoding\Conquest\Command\UpdateMap\Update $lastUpdateCommand)
 {
     // regions not present in last update
     $moves = new \SplObjectStorage();
     foreach ($movesCommand->getMoves() as $move) {
         // only attack/transfer
         if ($move instanceof \Mastercoding\Conquest\Move\AttackTransfer) {
             // attack transfer
             $attackTransfer = $move->getAttackTransfer();
             $regionId = $attackTransfer[0]['regionToId'];
             // ok
             foreach ($lastUpdateCommand->getUpdates() as $update) {
                 if ($update['regionId'] == $regionId) {
                     continue 2;
                 }
             }
             // not same
             $moves->attach($move);
         }
     }
     // ok, create update map command
     $updateMap = new \Mastercoding\Conquest\Command\UpdateMap\Update();
     foreach ($moves as $move) {
         foreach ($move->getAttackTransfer() as $attackTransfer) {
             $regionId = $attackTransfer['regionToId'];
             $owner = $move->getPlayerName();
             $armies = $attackTransfer['armies'];
             // add update
             $updateMap->addUpdate(array('regionId' => $regionId, 'owner' => $owner, 'armies' => $armies));
         }
     }
     // update
     $this->updateMap($map, $updateMap);
 }
Exemplo n.º 2
0
 /**
  * @depends testSetupPlayers
  */
 public function testUpdateMap(\Mastercoding\Conquest\Object\Map $map)
 {
     // create continents setup
     $mapUpdate = new \Mastercoding\Conquest\Command\UpdateMap\Update();
     // add some updates
     $mapUpdate->addUpdate(array('regionId' => 1, 'owner' => 'player1', 'armies' => 2));
     $mapUpdate->addUpdate(array('regionId' => 2, 'owner' => 'player1', 'armies' => 3));
     $mapUpdate->addUpdate(array('regionId' => 4, 'owner' => 'neutral', 'armies' => 4));
     $mapUpdate->addUpdate(array('regionId' => 7, 'owner' => 'neutral', 'armies' => 5));
     // process
     $this->mapUpdater->updateMap($map, $mapUpdate);
     // assert owners
     $this->assertEquals('player1', $map->getRegionById(2)->getOwner()->getName());
     $this->assertEquals('unknown', $map->getRegionById(3)->getOwner()->getName());
     $this->assertEquals('neutral', $map->getRegionById(4)->getOwner()->getName());
     // asert armies
     $this->assertEquals(4, $map->getRegionById(4)->getArmies());
     $this->assertEquals(2, $map->getRegionById(1)->getArmies());
     return $map;
 }