from marl_factory_grid.environment import constants as c
from marl_factory_grid.environment.entity.wall import Wall
from marl_factory_grid.environment.groups.collection import Collection


class Walls(Collection):
    _entity = Wall
    symbol = c.SYMBOL_WALL

    var_can_collide = True
    var_is_blocking_light = True
    var_can_move = False
    var_has_position = True
    var_can_be_bound = False
    var_is_blocking_pos = True

    def __init__(self, *args, **kwargs):
        super(Walls, self).__init__(*args, **kwargs)
        self._value = c.VALUE_OCCUPIED_CELL

    def by_pos(self, pos: (int, int)):
        try:
            return super().by_pos(pos)[0]
        except IndexError:
            return None