mud/src/mudlib/container.py

29 lines
769 B
Python

"""Container — a Thing that can hold other Things."""
from __future__ import annotations
from dataclasses import dataclass
from mudlib.object import Object
from mudlib.thing import Thing
@dataclass
class Container(Thing):
"""A container that can hold other items.
Containers are Things with capacity limits and open/closed state.
The locked flag is for command-layer logic (unlock/lock commands).
"""
capacity: int = 10
closed: bool = False
locked: bool = False
def can_accept(self, obj: Object) -> bool:
"""Accept Things when open and below capacity."""
if not isinstance(obj, Thing):
return False
if self.closed:
return False
return len(self._contents) < self.capacity