/** * Erstellt eine Allianz mit dem Avatar als Leader * @param \DragonJsonServerAvatar\Entity\Avatar $avatar * @param string $tag * @param string $name * @return \DragonJsonServerAlliance\Entity\Alliance */ public function createAlliance(\DragonJsonServerAvatar\Entity\Avatar $avatar, $tag, $name) { $alliance = (new \DragonJsonServerAlliance\Entity\Alliance())->setGameroundId($avatar->getGameroundId())->setTag($tag)->setName($name); $this->getServiceManager()->get('\\DragonJsonServerDoctrine\\Service\\Doctrine')->transactional(function ($entityManager) use($avatar, $alliance) { $entityManager->persist($alliance); $entityManager->flush(); $allianceavatar = $this->getServiceManager()->get('\\DragonJsonServerAlliance\\Service\\Allianceavatar')->createAllianceavatar($avatar, $alliance, 'leader'); $this->getEventManager()->trigger((new \DragonJsonServerAlliance\Event\CreateAlliance())->setTarget($this)->setAlliance($alliance)->setAllianceavatar($allianceavatar)); }); return $alliance; }
/** * Erstellt eine Avatarnachricht zu einem anderen Avatar * @param \DragonJsonServerAvatar\Entity\Avatar $from_avatar * @param integer $to_avatar_id * @param string $subject * @param string $content * @return Avatarmessage */ public function createAvatarmessage(\DragonJsonServerAvatar\Entity\Avatar $from_avatar, $to_avatar_id, $subject, $content) { $serviceManager = $this->getServiceManager(); $to_avatar = $serviceManager->get('\\DragonJsonServerAvatar\\Service\\Avatar')->getAvatarByAvatarId($to_avatar_id); if ($from_avatar->getGameroundId() != $to_avatar->getGameroundId()) { throw new \DragonJsonServer\Exception('gameround_id not match', ['from_avatar' => $from_avatar->toArray(), 'to_avatar' => $to_avatar->toArray()]); } $avatarmessage = (new \DragonJsonServerAvatarmessage\Entity\Avatarmessage())->setFromAvatar($from_avatar)->setToAvatar($to_avatar)->setSubject($subject)->setContent($content); $this->getServiceManager()->get('\\DragonJsonServerDoctrine\\Service\\Doctrine')->transactional(function ($entityManager) use($avatarmessage) { $entityManager->persist($avatarmessage); $entityManager->flush(); $this->getEventManager()->trigger((new \DragonJsonServerAvatarmessage\Event\CreateAvatarmessage())->setTarget($this)->setAvatarmessage($avatarmessage)); }); return $this; }