X-Git-Url: https://plomlompom.com/repos/%7B%7Bprefix%7D%7D/ledger2?a=blobdiff_plain;f=new%2Fplomrogue%2Fmapping.py;h=9ae5444632db89a13cbccf9f88c0b041353054c2;hb=aa8d5029e32783fa1a56cedb4c0b8aa8e79885e4;hp=4c7658de4af83168481d24f3d16edd23a67f1813;hpb=b65fcff5e5499f5c3c57f0c4d8f205643be5ebb7;p=plomrogue2-experiments diff --git a/new/plomrogue/mapping.py b/new/plomrogue/mapping.py index 4c7658d..9ae5444 100644 --- a/new/plomrogue/mapping.py +++ b/new/plomrogue/mapping.py @@ -18,10 +18,13 @@ class YX(collections.namedtuple('YX', ('y', 'x'))): class Map: - def __init__(self, size=YX(0, 0), init_char = '?', start_indented=True): + def __init__(self, size=YX(0, 0), init_char = '?', start_indented=True, + awakeness=0): self.size = size - self.terrain = init_char*self.size_i + self.terrain = init_char * self.size_i self.start_indented = start_indented + self.awake = awakeness # asleep if zero + self.stats = {} def __getitem__(self, yx): return self.terrain[self.get_position_index(yx)] @@ -101,17 +104,20 @@ class MapGeometry(): def pos_in_view(self, pos, offset, maps_size): return self.undouble_coordinate(maps_size, pos) - offset - def get_view(self, maps_size, get_map, radius, view_offset): + def get_view_and_seen_maps(self, maps_size, get_map, radius, view_offset): m = Map(size=YX(radius*2+1, radius*2+1), start_indented=(view_offset.y % 2 == 0)) + seen_maps = [] for pos in m: seen_pos = self.correct_double_coordinate(maps_size, (0,0), pos + view_offset) - seen_map = get_map(seen_pos[0], False) + if seen_pos[0] not in seen_maps: + seen_maps += [seen_pos[0]] + seen_map = get_map(seen_pos[0]) if seen_map is None: seen_map = Map(size=maps_size) m[pos] = seen_map[seen_pos[1]] - return m + return m, seen_maps def correct_double_coordinate(self, map_size, big_yx, little_yx):