Change Engine.Configuration to a clas and convert moved_entities to a set

This commit is contained in:
Eryn Wells 2022-05-06 14:34:26 -07:00
parent 6a431ee574
commit 00462f6005

View file

@ -9,22 +9,22 @@ from .events import EventHandler
from .geometry import Direction, Point, Size from .geometry import Direction, Point, Size
from .map import Map from .map import Map
from .object import Entity from .object import Entity
from typing import AbstractSet from dataclasses import dataclass
from typing import MutableSet
LOG = logging.getLogger('engine') LOG = logging.getLogger('engine')
EVENT_LOG = logging.getLogger('events') EVENT_LOG = logging.getLogger('events')
@dataclass
class Configuration: class Configuration:
def __init__(self, map_size: Size): map_size: Size
self.map_size = map_size
self.random_seed = None
class Engine: class Engine:
def __init__(self, event_handler: EventHandler, configuration: Configuration): def __init__(self, event_handler: EventHandler, configuration: Configuration):
self.event_handler = event_handler self.event_handler = event_handler
self.configuration = configuration self.configuration = configuration
self.rng = tcod.random.Random(seed=configuration.random_seed) self.rng = tcod.random.Random()
map_size = configuration.map_size map_size = configuration.map_size
self.map = Map(map_size) self.map = Map(map_size)
@ -33,7 +33,7 @@ class Engine:
player_start_position = first_room.center player_start_position = first_room.center
self.player = Entity('@', position=player_start_position, fg=tcod.white) self.player = Entity('@', position=player_start_position, fg=tcod.white)
self.entities: AbstractSet[Entity] = {self.player} self.entities: MutableSet[Entity] = {self.player}
for _ in range(self.rng.randint(5, 15)): for _ in range(self.rng.randint(5, 15)):
position = self.map.random_walkable_position() position = self.map.random_walkable_position()
self.entities.add(Entity('@', position=position, fg=tcod.yellow)) self.entities.add(Entity('@', position=position, fg=tcod.yellow))
@ -49,7 +49,7 @@ class Engine:
action.perform(self, self.player) action.perform(self, self.player)
directions = list(Direction.all()) directions = list(Direction.all())
moved_entities = [self.player] moved_entities: MutableSet[Entity] = {self.player}
for ent in self.entities: for ent in self.entities:
if ent == self.player: if ent == self.player:
@ -60,7 +60,7 @@ class Engine:
overlaps_with_previously_moved_entity = any(new_position == moved_ent.position for moved_ent in moved_entities) overlaps_with_previously_moved_entity = any(new_position == moved_ent.position for moved_ent in moved_entities)
if not overlaps_with_previously_moved_entity and self.map.tile_is_walkable(new_position): if not overlaps_with_previously_moved_entity and self.map.tile_is_walkable(new_position):
ent.position = new_position ent.position = new_position
moved_entities.append(ent) moved_entities.add(ent)
break break
self.update_field_of_view() self.update_field_of_view()