Moved Message sending to Message Manager as per issue #28

This commit is contained in:
nekosune
2018-04-07 19:12:13 +00:00
parent 77b33d7385
commit 70243f4662
4 changed files with 94 additions and 33 deletions
+20
View File
@@ -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
+14 -2
View File
@@ -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
+56
View File
@@ -0,0 +1,56 @@
<?php
/**
* Handles the messages in the game
* User: nekosune
* Date: 07/04/2018
* Time: 18:54
*/
namespace LotGD\Core;
use LotGD\Core\Models\Character;
use LotGD\Core\Models\Message;
use LotGD\Core\Models\MessageThread;
use LotGD\Core\Models\SystemCharacter;
class MessageManager
{
/**
* 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
* @throws Exceptions\CoreException
*/
public function send(
Character $from,
string $message,
MessageThread $thread,
bool $systemMessage = false
) {
$message=new Message($from, $message, $thread, $systemMessage);
$thread->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;
}
}
+4 -31
View File
@@ -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) {