private function addResource(ResourceSource $resourceSource) { /** @var Island $island */ $island = $resourceSource->getHexagon()->getIsland(); /** @var ResourceType $resourceType */ $resourceType = $resourceSource->getResourceType(); $mainResourceStorage = $this->checkExistsAndGetResourceStorage($island, $resourceType); $resourceChanges = []; if ($this->managedToDeductRequiredResources($resourceSource, $resourceChanges)) { $mainResourceStorage->setCount($mainResourceStorage->getCount() + $resourceSource->getIncrement()); $resourceChanges[] = ['resource_type' => $resourceType->getName(), 'amount' => '+' . $resourceSource->getIncrement()]; $resourceSource->setLastTick(new \DateTime()); $this->em->flush(); return ['hexagon_id' => $resourceSource->getHexagon()->getId(), 'resource_changes' => $resourceChanges]; } else { return null; } }