from typing import TypeVar
from VegansDeluxe.core.States import State
T = TypeVar("T")
[docs]class Event:
def __init__(self, unique_type=None):
self.unique_type = unique_type
self.canceled = False
def __str__(self):
return type(self).__name__
[docs]class AttachSessionEvent(Event):
"""
Published by SessionManager after attaching a Session.
Used by ContentManager to initialize it.
"""
def __init__(self, session_id):
super().__init__()
self.session_id = session_id
[docs]class StartSessionEvent(Event):
"""
Published by Session when it is started.
"""
def __init__(self, session_id):
super().__init__()
self.session_id = session_id
[docs]class AttachStateEvent[T: State](Event):
def __init__(self, session_id, entity_id, state: State):
super().__init__(type(state))
self.session_id = session_id
self.entity_id = entity_id
self.state: T = state
[docs]class GameEvent(Event):
def __init__(self, session_id, turn):
super().__init__()
self.session_id = session_id
self.turn = turn
[docs]class ActionGameEvent(GameEvent):
def __init__(self, session_id, turn, source_id, target_id):
super().__init__(session_id, turn)
self.source_id = source_id
self.target_id = target_id
[docs]class DeliveryRequestEvent(GameEvent):
def __init__(self, session_id, turn):
super().__init__(session_id, turn)
[docs]class DeliveryPackageEvent(GameEvent):
def __init__(self, session_id, turn):
super().__init__(session_id, turn)
[docs]class ExecuteActionEvent(GameEvent):
def __init__(self, session_id, turn, action):
super().__init__(session_id, turn)
self.action = action
[docs]class PreDeathGameEvent(GameEvent):
def __init__(self, session_id, turn, entity):
super().__init__(session_id, turn)
self.entity = entity
[docs]class DeathGameEvent(GameEvent):
def __init__(self, session_id, turn, entity):
super().__init__(session_id, turn)
self.entity = entity
[docs]class HPLossGameEvent(GameEvent):
def __init__(self, session_id, turn, source, damage, hp_loss):
super().__init__(session_id, turn)
self.source = source
self.damage = damage
self.hp_loss = hp_loss
[docs]class SessionStopGameEvent(GameEvent):
pass
[docs]class SessionFinishGameEvent(GameEvent):
pass
[docs]class CallActionsGameEvent(GameEvent):
pass
[docs]class PreMoveGameEvent(GameEvent):
pass
# Action updating events start
[docs]class PreUpdatesGameEvent(GameEvent):
pass
[docs]class PostUpdatesGameEvent(GameEvent):
pass
[docs]class PreUpdateActionsGameEvent(GameEvent):
def __init__(self, session_id, turn, entity_id):
super().__init__(session_id, turn)
self.entity_id = entity_id
[docs]class PostUpdateActionsGameEvent(GameEvent):
def __init__(self, session_id, turn, entity_id):
super().__init__(session_id, turn)
self.entity_id = entity_id
# Action updating events end
[docs]class PreActionsGameEvent(GameEvent):
pass
[docs]class PostActionsGameEvent(GameEvent):
pass
[docs]class PreDamagesGameEvent(GameEvent):
pass
[docs]class PostDamagesGameEvent(GameEvent):
pass
[docs]class PostTickGameEvent(GameEvent):
pass
[docs]class PostDeathsGameEvent(GameEvent):
pass