"""Player state and registry.""" from dataclasses import dataclass, field from typing import Any from mudlib.entity import Entity @dataclass class Player(Entity): """Represents a connected player.""" writer: Any = None # telnetlib3 TelnetWriter for sending output reader: Any = None # telnetlib3 TelnetReader for reading input flying: bool = False mode_stack: list[str] = field(default_factory=lambda: ["normal"]) @property def mode(self) -> str: """Current mode is the top of the stack.""" return self.mode_stack[-1] async def send(self, message: str) -> None: """Send a message to the player via their telnet writer.""" self.writer.write(message) await self.writer.drain() # Global registry of connected players players: dict[str, Player] = {}