Source code for VegansDeluxe.core.Engine

from VegansDeluxe.core import Session, Entity
from VegansDeluxe.core.Actions.ActionManager import ActionManager
from VegansDeluxe.core.ContentManager import content_manager
from VegansDeluxe.core.Events.EventManager import EventManager
from VegansDeluxe.core.SessionManager import SessionManager
from VegansDeluxe.core.States import State


[docs]class Engine: def __init__(self): """ Engine class, that puts all content and managers together, ready for work. """ self.event_manager: EventManager = EventManager() self.session_manager: SessionManager = SessionManager(self.event_manager) self.action_manager: ActionManager = ActionManager(self.session_manager, action_map=content_manager.action_map) content_manager.initialize_action_manager(self.action_manager) content_manager.attach_action_manager(self.action_manager)
[docs] async def attach_session(self, session: Session): await self.session_manager.attach_session(session)
[docs] def detach_session(self, session: Session): self.session_manager.delete_session(session.id) self.event_manager.clean_by_session_id(session.id)
[docs] async def attach_states(self, entity: Entity, state_pool: list[type[State]]): for state in state_pool: await entity.attach_state(state(), self.event_manager)
[docs] def stats(self): result = (f"Event Handlers: {self.event_manager.size}\n" f"Sessions: {len(self.session_manager.sessions)}\n" f"Action Queue: {len(self.action_manager.action_queue)}\n" f"CM Assignments: {len(content_manager.assignments)}") return result