X-Git-Url: https://plomlompom.com/repos/?a=blobdiff_plain;f=plomrogue%2Fthings.py;h=cedee68266583f9486dea676a0d67bd5bacb2378;hb=f36e981a4b9e123bbab8b0ec288e426b8a5f3316;hp=98a5995cf5d46824d5f9fee9ebb2ff1a50cc1510;hpb=2ce340a97606c970eb1d6dd8cccee7a2d12c6c05;p=plomrogue2 diff --git a/plomrogue/things.py b/plomrogue/things.py index 98a5995..cedee68 100644 --- a/plomrogue/things.py +++ b/plomrogue/things.py @@ -6,7 +6,7 @@ from plomrogue.mapping import YX class ThingBase: type_ = '?' - def __init__(self, game, id_=0, position=(YX(0,0))): + def __init__(self, game, id_=0, position=(YX(0,0),YX(0,0))): self.game = game if id_ == 0: self.id_ = self.game.new_thing_id() @@ -35,8 +35,14 @@ class Thing(ThingBase): -class Thing_Stone(Thing): - symbol_hint = 'o' +class Thing_Item(Thing): + symbol_hint = 'i' + + + +class Thing_Furniture(Thing): + symbol_hint = 'h' + class ThingAnimate(Thing): @@ -88,14 +94,24 @@ class ThingAnimate(Thing): if self._fov: return self._fov fov_map_class = self.game.map_geometry.fov_map_class - self._fov = fov_map_class(self.game.map, self.position) + self._fov = fov_map_class(self.game.maps, self.position, 12, + self.game.get_map) return self._fov - def fov_stencil_map(self, map): + def fov_test(self, big_yx, little_yx): + test_position = self.fov_stencil.target_yx(big_yx, little_yx) + if self.fov_stencil.inside(test_position): + if self.fov_stencil[test_position] == '.': + return True + return False + + def fov_stencil_map(self, map_type='normal'): visible_terrain = '' - for i in range(self.fov_stencil.size_i): - if self.fov_stencil.terrain[i] == '.': - visible_terrain += map.terrain[i] + for yx in self.fov_stencil: + if self.fov_stencil[yx] == '.': + big_yx, little_yx = self.fov_stencil.source_yxyx(yx) + map_ = self.game.get_map(big_yx, map_type) + visible_terrain += map_[little_yx] else: visible_terrain += ' ' return visible_terrain