/** * @param string $api_data * @return CombatReport */ public static function createSpyReport($api_data) { $generic = $api_data['generic']; $details = $api_data['details']; $spyreport = new self($generic['sr_id'], $generic['activity'], $generic['attacker_name'], $generic['attacker_planet_coordinates'], $generic['attacker_planet_name'], $generic['attacker_planet_type'], $generic['attacker_alliance_name'], $generic['attacker_alliance_tag'], $generic['defender_name'], $generic['defender_planet_coordinates'], $generic['defender_planet_name'], $generic['defender_planet_type'], $generic['defender_alliance_name'], $generic['defender_alliance_tag'], $generic['event_time'], $generic['event_timestamp'], $generic['loot_percentage'], $generic['spy_fail_chance'], $generic['total_defense_count'], $generic['total_ship_count']); if (isset($details['resources'])) { $spyreport->getDefender()->setResources(new Resources($details['resources']['metal'], $details['resources']['crystal'], $details['resources']['deuterium'])); } if ($generic['failed_buildings'] === false) { if (isset($details['buildings'])) { foreach ($details['buildings'] as $state) { $buildingState = new StateEconomy(TechnologyFactory::create($state['building_type']), $state['level']); $spyreport->getDefender()->addBuilding($buildingState); } } } if ($generic['failed_research'] === false) { if (isset($details['research'])) { foreach ($details['research'] as $state) { $researchState = new StateEconomy(TechnologyFactory::create($state['research_type']), $state['level']); $spyreport->getDefender()->addResearch($researchState); } } } if ($generic['failed_ships'] === false) { if (isset($details['ships'])) { foreach ($details['ships'] as $state) { $shipState = new StateCombat(TechnologyFactory::create($state['ship_type']), $state['count']); $spyreport->getDefender()->addShip($shipState); } } } if ($generic['failed_defense'] === false) { if (isset($details['defense'])) { foreach ($details['defense'] as $state) { $defenceState = new StateCombat(TechnologyFactory::create($state['defense_type']), $state['count']); $spyreport->getDefender()->addDefence($defenceState); } } } return $spyreport; }