From: Christian Heller Date: Mon, 23 Dec 2019 23:49:50 +0000 (+0100) Subject: Decouple awakeness/sleep stats from Map to MapChunk. X-Git-Url: https://plomlompom.com/repos/%7B%7Bdb.prefix%7D%7D/%7B%7B%20web_path%20%7D%7D/bar%20baz.html?a=commitdiff_plain;h=8f2dc382612c0684fd9a75e60c23561a1859cb8f;p=plomrogue2-experiments Decouple awakeness/sleep stats from Map to MapChunk. --- diff --git a/new/plomrogue/game.py b/new/plomrogue/game.py index a2421ad..d20713c 100755 --- a/new/plomrogue/game.py +++ b/new/plomrogue/game.py @@ -8,7 +8,7 @@ from plomrogue.commands import (cmd_GEN_WORLD, cmd_GET_GAMESTATE, cmd_GET_PICKABLE_ITEMS, cmd_MAP_SIZE, cmd_TERRAIN_LINE, cmd_PLAYER_ID, cmd_TURN, cmd_SWITCH_PLAYER, cmd_SAVE) -from plomrogue.mapping import MapGeometryHex, Map, YX +from plomrogue.mapping import MapGeometryHex, MapChunk, YX from plomrogue.parser import Parser from plomrogue.io import GameIO from plomrogue.misc import quote @@ -209,8 +209,8 @@ class Game(GameBase): def get_map(self, map_pos): if not (map_pos in self.maps and self.maps[map_pos].size == self.map_size): - self.maps[map_pos] = Map(self.map_size, - awakeness=self.max_map_awakeness) + self.maps[map_pos] = MapChunk(self.map_size) + self.maps[map_pos].awake = self.max_map_awakeness for pos in self.maps[map_pos]: self.maps[map_pos][pos] = '.' return self.maps[map_pos] @@ -270,6 +270,8 @@ class Game(GameBase): t = self.add_thing_at_random(map_pos, t_type) if average_health: t.health = average_health + #if hasattr(t, 'health'): + # print('DEBUG create', t.type_, t.health) for map_pos in self.maps: m = self.maps[map_pos] @@ -277,6 +279,7 @@ class Game(GameBase): # Newly inside chunks are regenerated from .stats. if not m.awake: + #print('DEBUG regen stats', map_pos, m.stats) regenerate_chunk_from_map_stats(m) # Inside chunks are set to max .awake and don't collect @@ -299,6 +302,8 @@ class Game(GameBase): m.stats[t.type_]['health'] += t.health if not m.awake: del self.things[self.things.index(t)] + #if not m.awake: + # print('DEBUG sleep stats', map_pos, m.stats) while True: player_i = self.things.index(self.player) diff --git a/new/plomrogue/mapping.py b/new/plomrogue/mapping.py index 9ae5444..b670938 100644 --- a/new/plomrogue/mapping.py +++ b/new/plomrogue/mapping.py @@ -18,13 +18,10 @@ class YX(collections.namedtuple('YX', ('y', 'x'))): class Map: - def __init__(self, size=YX(0, 0), init_char = '?', start_indented=True, - awakeness=0): + def __init__(self, size=YX(0, 0), init_char = '?', start_indented=True): self.size = size 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)] @@ -67,6 +64,12 @@ class Map: +class MapChunk(Map): + awake = 0 # asleep if zero + stats = {} + + + class MapGeometry(): def get_directions(self):