mirror of
https://github.com/illiumst/marl-factory-grid.git
synced 2025-05-25 16:16:44 +02:00
29 lines
852 B
Python
29 lines
852 B
Python
from typing import Union
|
|
|
|
from environment.groups.env_objects import EnvObjects
|
|
from environment.groups.mixins import PositionMixin
|
|
from modules.doors import constants as d
|
|
from modules.doors.entitites import Door
|
|
|
|
|
|
class Doors(PositionMixin, EnvObjects):
|
|
|
|
symbol = d.SYMBOL_DOOR
|
|
_entity = Door
|
|
|
|
def __init__(self, *args, **kwargs):
|
|
super(Doors, self).__init__(*args, can_collide=True, **kwargs)
|
|
|
|
def get_near_position(self, position: (int, int)) -> Union[None, Door]:
|
|
try:
|
|
return next(door for door in self if position in door.tile.neighboring_floor_pos)
|
|
except StopIteration:
|
|
return None
|
|
|
|
def tick_doors(self):
|
|
result_dict = dict()
|
|
for door in self:
|
|
did_tick = door.tick()
|
|
result_dict.update({door.name: did_tick})
|
|
return result_dict
|