X-Git-Url: https://plomlompom.com/repos/foo.html?a=blobdiff_plain;f=plomrogue%2Fmapping.py;h=7b7ad3c6680e56b0901c40e1ca6ba13c2d9781d1;hb=769c9a9af7f759f89593c5136a1359ce35366fbc;hp=e3c071f85251ae9e947183a474fe69d78294e2bf;hpb=a789724e6b1b5eb514f82ac4d7092f7575180c31;p=plomrogue2 diff --git a/plomrogue/mapping.py b/plomrogue/mapping.py index e3c071f..7b7ad3c 100644 --- a/plomrogue/mapping.py +++ b/plomrogue/mapping.py @@ -210,8 +210,8 @@ class Map(): class SourcedMap(Map): - def __init__(self, block_chars, things, source_maps, source_center, radius, - get_map): + def __init__(self, block_chars, obstacle_positions, source_maps, + source_center, radius, get_map): self.block_chars = block_chars self.radius = radius example_map = get_map(YX(0, 0)) @@ -219,20 +219,11 @@ class SourcedMap(Map): size, self.offset, self.center = \ self.source_geometry.define_segment(source_center, radius) self.geometry = self.source_geometry.__class__(size) - for yx in self: - big_yx, _ = self.source_yxyx(yx) - get_map(big_yx) self.source_map_segment = '' - obstacles = {} - for yxyx in [t.position for t in things if t.blocking]: - if yxyx == source_center: - continue - if yxyx[0] not in obstacles: - obstacles[yxyx[0]] = [] - obstacles[yxyx[0]] += [yxyx[1]] - for yx in self: # TODO: iter and source_yxyx expensive, cache earlier? + for yx in self: big_yx, little_yx = self.source_yxyx(yx) - if big_yx in obstacles and little_yx in obstacles[big_yx]: + get_map(big_yx) + if (big_yx, little_yx) in obstacle_positions: self.source_map_segment += self.block_chars[0] else: self.source_map_segment += source_maps[big_yx][little_yx]