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