def __init__(self, danger_level=0, generation_type=LevelGen.Dungeon, tiles=None, locations=(), custom_creatures=(), creature_spawning=True): # Generation self.danger_level = danger_level self.generation_type = generation_type self.custom_creatures = list(custom_creatures) self.creature_spawning = creature_spawning self.creature_spawn_count = 99 # Normal usage if tiles is None: self.tiles = Array2D(default_level_dimensions) else: self.tiles = tiles self.locations = OneToOneMapping(locations) self.visible_change = Event() self.turn_scheduler = TurnScheduler() self.creatures = {} self.items = {} if self.generation_type.value > LevelGen.ExtendExisting.value: self.rows, self.cols = self.tiles.dimensions else: self.rows, self.cols = default_level_dimensions self.is_finalized = False
def test_turn_scheduler(): ts = TurnScheduler() ts.add("D", 2) ts.add("C", 1) ts.add("B", 1) ts.add("X", 1) ts.add("A", 0) ts.remove("X") assert ts.advance_time() == ("A", 0) ts.addpop("A", 20) assert ts.advance_time() == ("B", 1) ts.addpop("B", 0) assert ts.advance_time() == ("B", 0) ts.addpop("B", 0) assert ts.advance_time() == ("B", 0) ts.addpop("B", 19) assert ts.advance_time() == ("C", 0) ts.addpop("C", 19) assert ts.advance_time() == ("D", 1) ts.addpop("D", 18) ts.add("E", 18) assert ts.advance_time() == ("E", 18) ts.addpop("E", 1) assert ts.advance_time() == ("D", 0) ts.addpop("D", 1) assert ts.advance_time() == ("C", 0) ts.addpop("C", 1) assert ts.advance_time() == ("B", 0) ts.addpop("B", 1) assert ts.advance_time() == ("A", 0) ts.addpop("A", 1)