all vars are properties, removed comments

This commit is contained in:
Chanumask
2023-10-22 12:05:38 +02:00
parent b1fe698d52
commit e87bd3aaa0
19 changed files with 66 additions and 193 deletions

View File

@@ -5,10 +5,8 @@ import numpy as np
from .object import Object
from .. import constants as c
from .object import EnvObject
from ...utils.utility_classes import RenderEntity
from ...utils.render import RenderEntity
from ...utils.results import ActionResult
from ...utils.utility_classes import RenderEntity
class Entity(Object, abc.ABC):
@@ -152,7 +150,6 @@ class Entity(Object, abc.ABC):
pos = tuple(pos)
try:
return self.state.entities.pos_dict[pos]
# return next(e for e in self if e.pos == pos)
except StopIteration:
pass
except ValueError:

View File

@@ -13,7 +13,7 @@ class Object:
return True
@property
def var_has_position(self): # brauchen wir das hier jetzt?
def var_has_position(self):
try:
return self.pos != c.VALUE_NO_POS or False
except AttributeError:

View File

@@ -0,0 +1,31 @@
from typing import List
import numpy as np
from marl_factory_grid.environment import constants as c
from marl_factory_grid.environment.entity.entity import Entity
from marl_factory_grid.environment.entity.object import EnvObject
from marl_factory_grid.utils.utility_classes import RenderEntity
from marl_factory_grid.utils import helpers as h
class Wall(Entity):
@property
def var_can_collide(self):
return True
@property
def encoding(self):
return c.VALUE_OCCUPIED_CELL
def render(self):
return RenderEntity(c.WALL, self.pos)
@property
def var_is_blocking_pos(self):
return True
@property
def var_is_blocking_light(self):
return True

View File

@@ -1,121 +0,0 @@
from typing import List
import numpy as np
from marl_factory_grid.environment import constants as c
from marl_factory_grid.environment.entity.entity import Entity
from marl_factory_grid.environment.entity.object import EnvObject
from marl_factory_grid.utils.utility_classes import RenderEntity
from marl_factory_grid.utils import helpers as h
class Floor(EnvObject):
@property
def var_has_position(self):
return True
@property
def var_can_collide(self):
return False
@property
def var_can_move(self):
return False
@property
def var_is_blocking_pos(self):
return False
@property
def var_is_blocking_light(self):
return False
@property
def encoding(self):
return c.VALUE_OCCUPIED_CELL
# @property
# def guests_that_can_collide(self):
# return [x for x in self.guests if x.var_can_collide]
@property
def guests(self):
return self._guests.values()
@property
def x(self):
return self.pos[0]
@property
def y(self):
return self.pos[1]
@property
def is_blocked(self):
return any([x.var_is_blocking_pos for x in self.guests])
def __init__(self, pos, **kwargs):
super(Floor, self).__init__(**kwargs)
self._guests = dict()
self.pos = tuple(pos)
self._neighboring_floor: List[Floor] = list()
self._blocked_by = None
def __len__(self):
return len(self._guests)
def is_empty(self):
return not len(self._guests)
def is_occupied(self):
return bool(len(self._guests))
def enter(self, guest, spawn=False):
same_pos = guest.name not in self._guests
not_blocked = not self.is_blocked
no_become_blocked_when_occupied = not (guest.var_is_blocking_pos and self.is_occupied())
not_introduce_collision = not (spawn and guest.var_can_collide and any(x.var_can_collide for x in self.guests))
if same_pos and not_blocked and no_become_blocked_when_occupied and not_introduce_collision:
self._guests.update({guest.name: guest})
return c.VALID
else:
return c.NOT_VALID
def leave(self, guest):
try:
del self._guests[guest.name]
except (ValueError, KeyError):
return c.NOT_VALID
return c.VALID
def __repr__(self):
return f'{self.name}(@{self.pos})'
def summarize_state(self, **_):
return dict(name=self.name, x=int(self.x), y=int(self.y))
def render(self):
return None
class Wall(Entity):
@property
def var_can_collide(self):
return True
@property
def encoding(self):
return c.VALUE_OCCUPIED_CELL
def render(self):
return RenderEntity(c.WALL, self.pos)
@property
def var_is_blocking_pos(self):
return True
@property
def var_is_blocking_light(self):
return True