29 lines
769 B
Python
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
|