2023-11-22 12:12:04 +01:00

37 lines
1008 B
Python

from typing import List
from marl_factory_grid.environment.groups.collection import Collection
from marl_factory_grid.modules.doors import constants as d
from marl_factory_grid.modules.doors.entitites import Door
from marl_factory_grid.utils import Result
class Doors(Collection):
symbol = d.SYMBOL_DOOR
_entity = Door
@property
def var_has_position(self):
return True
def __init__(self, *args, **kwargs):
"""
A collection of doors that can tick and reset all doors.
"""
super(Doors, self).__init__(*args, can_collide=True, **kwargs)
def tick_doors(self, state) -> List[Result]:
results = list()
for door in self:
assert isinstance(door, Door)
tick_result = door.tick(state)
if tick_result is not None:
results.append(tick_result)
return results
def reset(self):
for door in self:
assert isinstance(door, Door)
door.reset()