From 70243f4662fdac93434fdab6c86a257b017d3700 Mon Sep 17 00:00:00 2001 From: nekosune Date: Sat, 7 Apr 2018 19:12:13 +0000 Subject: [PATCH] Moved Message sending to Message Manager as per issue #28 --- src/Game.php | 20 +++++++++++++++ src/GameBuilder.php | 16 ++++++++++-- src/MessageManager.php | 56 ++++++++++++++++++++++++++++++++++++++++++ src/Models/Message.php | 35 +++----------------------- 4 files changed, 94 insertions(+), 33 deletions(-) create mode 100644 src/MessageManager.php diff --git a/src/Game.php b/src/Game.php index 31b8e27..347ac99 100644 --- a/src/Game.php +++ b/src/Game.php @@ -25,6 +25,7 @@ class Game private $eventManager; private $composerManager; private $moduleManager; + private $messageManager; private $logger; private $configuration; private $character; @@ -32,6 +33,7 @@ class Game private $cwd; private $timeKeeper; + /** * Construct a game. You probably want to use Bootstrap to do this. * @param Configuration $configuration @@ -184,6 +186,24 @@ class Game return $this->timeKeeper; } + /** + * Returns the Message manager + * @return MessageManager + */ + public function getMessageManager(): MessageManager + { + return $this->messageManager; + } + + /** + * Sets the Message Manager + * @param MessageManager $messageManager + */ + public function setMessageManager(MessageManager $messageManager) : void + { + $this->messageManager=$messageManager; + } + /** * Returns the currently configured user character. * @return Character diff --git a/src/GameBuilder.php b/src/GameBuilder.php index e90ec16..2a21aaf 100644 --- a/src/GameBuilder.php +++ b/src/GameBuilder.php @@ -27,7 +27,7 @@ class GameBuilder private $composerManagerClass; private $eventManagerClass; private $diceBagClass; - + private $messageManagerClass; /** * Creates the game instance with the prepared parameters. * @return Game @@ -62,7 +62,8 @@ class GameBuilder $diceBag = $this->diceBagClass ?? DiceBag::class; $game->setDiceBag(new $diceBag()); - + $messageManager=$this->messageManagerClass ?? MessageManager::class; + $game->setMessageManager(new $messageManager()); return $game; } @@ -132,6 +133,17 @@ class GameBuilder return $this; } + /** + * Sets the fqcn for the message manager to be used + * @param string $messageManagerFqcn + * @return self + */ + public function useMessageManager(string $messageManagerFqcn): self + { + $this->messageManagerClass=$messageManagerFqcn; + return $this; + } + /** * Sets the fqcn for the event manager to be used. * @param string $eventManagerFqcn diff --git a/src/MessageManager.php b/src/MessageManager.php new file mode 100644 index 0000000..0946fce --- /dev/null +++ b/src/MessageManager.php @@ -0,0 +1,56 @@ +addMessage($message); + return $message; + } + + + /** + * Sends a system message to a MessageThread + * @param string $message + * @param \LotGD\Core\Models\MessageThread $thread + * @return \LotGD\Core\Models\Message + * @throws Exceptions\ArgumentException + * @throws Exceptions\CoreException + */ + public function sendSystemMessage( + string $message, + MessageThread $thread + ) { + $message=new Message(SystemCharacter::getInstance(), $message, $thread, true); + $thread->addMessage($message); + return $message; + } +} \ No newline at end of file diff --git a/src/Models/Message.php b/src/Models/Message.php index adf9dab..87939f4 100644 --- a/src/Models/Message.php +++ b/src/Models/Message.php @@ -38,48 +38,21 @@ class Message /** @Column(type="boolean", nullable=false) */ private $systemMessage = false; - /** - * Sends a message to a MessageThread - * @param \LotGD\Core\Models\Character $from - * @param string $message - * @param \LotGD\Core\Models\MessageThread $thread - * @param bool $systemMessage - * @return \LotGD\Core\Models\Message - */ - public static function send( - Character $from, - string $message, - MessageThread $thread, - bool $systemMessage = false - ) { - $thread->addMessage(new self($from, $message, $thread, $systemMessage)); - } + - /** - * Sends a system message to a MessageThread - * @param string $message - * @param \LotGD\Core\Models\MessageThread $thread - * @return \LotGD\Core\Models\Message - */ - public static function sendSystemMessage( - string $message, - MessageThread $thread - ) { - $thread->addMessage(new self(SystemCharacter::getInstance(), $message, $thread, true)); - } + /** * Constructs the message. * - * This method has been made protected to prevent from accessing it directly. Use - * the static methods self::send() and self::sendSystemMessage() instead. + * Use the static methods self::send() and self::sendSystemMessage() instead. * @param CharacterInterface $from * @param string $message * @param MessageThread $thread * @param bool $systemMessage * @throws ArgumentException */ - protected function __construct(CharacterInterface $from, string $message, MessageThread $thread, bool $systemMessage) + public function __construct(CharacterInterface $from, string $message, MessageThread $thread, bool $systemMessage) { if ($from instanceof Character) { if ($from->isDeleted() === true) {