68 lines
1.3 KiB
Python
68 lines
1.3 KiB
Python
|
|
from abc import ABC
|
||
|
|
from dataclasses import dataclass
|
||
|
|
from events import Events
|
||
|
|
|
||
|
|
|
||
|
|
@dataclass
|
||
|
|
class Response(ABC):
|
||
|
|
sender: str
|
||
|
|
event: Events
|
||
|
|
|
||
|
|
def to_json(self) -> dict:
|
||
|
|
d = self.__dict__
|
||
|
|
d.pop('event')
|
||
|
|
return d
|
||
|
|
|
||
|
|
|
||
|
|
@dataclass
|
||
|
|
class NewCharacter(Response):
|
||
|
|
character: dict
|
||
|
|
|
||
|
|
|
||
|
|
@dataclass
|
||
|
|
class RemoveActor(Response):
|
||
|
|
message: str
|
||
|
|
name: str
|
||
|
|
|
||
|
|
|
||
|
|
@dataclass
|
||
|
|
class PublicMessage(Response):
|
||
|
|
message: str
|
||
|
|
|
||
|
|
|
||
|
|
@dataclass
|
||
|
|
class PrivateMessage(Response):
|
||
|
|
message: str
|
||
|
|
recipient: str
|
||
|
|
|
||
|
|
|
||
|
|
@dataclass
|
||
|
|
class DiceRoll(Response):
|
||
|
|
message: str
|
||
|
|
dice: list
|
||
|
|
result: int
|
||
|
|
|
||
|
|
|
||
|
|
def build_dice_roll(sender, message, dice, result):
|
||
|
|
return DiceRoll(sender, Events.DICE_ROLL, message, dice, result)
|
||
|
|
|
||
|
|
|
||
|
|
def build_new_character(sender, char_dict):
|
||
|
|
return NewCharacter(sender, Events.NEW_CHARACTER, char_dict)
|
||
|
|
|
||
|
|
|
||
|
|
def build_remove_actor(sender, message, name):
|
||
|
|
return RemoveActor(sender, Events.REMOVE_ACTOR, message, name)
|
||
|
|
|
||
|
|
|
||
|
|
def build_private_message(sender, message, recipient):
|
||
|
|
return PrivateMessage(sender, Events.PRIVATE_CHAT, message, recipient)
|
||
|
|
|
||
|
|
|
||
|
|
def build_public_message(sender, message):
|
||
|
|
return PublicMessage(sender, Events.PUBLIC_CHAT, message)
|
||
|
|
|
||
|
|
|
||
|
|
def build_system_message(user, message):
|
||
|
|
return PrivateMessage('System', Events.SYSTEM_MESSAGE, message, user)
|