/** * @param CombatReport $combatreport * @param integer $startRound * @param integer $endRound * @throws Exception * @return CombatParty[] */ public static function calculate($combatreport, $startRound, $endRound) { //TODO:: Throw decent exeption if ($endRound < $startRound) { throw new Exception('CombatReport_Result: Your starting round should be greater than your ending round.'); } if ($endRound > 6) { throw new Exception('CombatReport_Result: OGame has a maximum of 6 rounds.'); } if ($startRound === 0) { $startAttackers = $combatreport->getAttackerParty()->getPlayers(); $startDefenders = $combatreport->getDefenderParty()->getPlayers(); } else { $startAttackers = $combatreport->getRound($startRound)->getAttackersDetails(); $startDefenders = $combatreport->getRound($startRound)->getDefendersDetails(); } if ($endRound === 0) { $endAttackers = $combatreport->getAttackerParty()->getPlayers(); $endDefenders = $combatreport->getDefenderParty()->getPlayers(); } else { $endAttackers = $combatreport->getRound($endRound)->getAttackersDetails(); $endDefenders = $combatreport->getRound($endRound)->getDefendersDetails(); } $self = new self(); $self->setAttackers(self::getFleetDifferences($startAttackers, $endAttackers, clone $combatreport->getAttackerParty())); $self->setDefenders(self::getFleetDifferences($startDefenders, $endDefenders, clone $combatreport->getDefenderParty())); return $self; }