diff --git a/survival/generators/tile_generator.py b/survival/generators/tile_generator.py index 3fc133d..31abaea 100644 --- a/survival/generators/tile_generator.py +++ b/survival/generators/tile_generator.py @@ -12,8 +12,8 @@ class TileGenerator: "Grass2": Tile(origin=(32, 0), cost=1), "Grass3": Tile(origin=(64, 0), cost=1), "Grass4": Tile(origin=(96, 0), cost=1), - "Sand": Tile(origin=(64, 64), cost=20), - "Puddle": Tile(origin=(96, 64), cost=20), + "Sand": Tile(origin=(64, 64), cost=4), + "Puddle": Tile(origin=(96, 64), cost=5), } TilesValues = list(Tiles.values()) diff --git a/survival/generators/world_generator.py b/survival/generators/world_generator.py index 586564b..bb9b59e 100644 --- a/survival/generators/world_generator.py +++ b/survival/generators/world_generator.py @@ -15,7 +15,7 @@ class WorldGenerator: world = esper.World() world.add_processor(InputSystem(camera)) world.add_processor(CameraSystem(camera)) - world.add_processor(MovementSystem(), priority=1) + world.add_processor(MovementSystem(game_map), priority=1) world.add_processor(CollisionSystem(game_map), priority=2) world.add_processor(DrawSystem(camera)) world.add_processor(TimeSystem()) diff --git a/survival/settings.py b/survival/settings.py index fd6e84f..0deb510 100644 --- a/survival/settings.py +++ b/survival/settings.py @@ -1,4 +1,4 @@ -SCREEN_WIDTH = 1920 -SCREEN_HEIGHT = 1080 +SCREEN_WIDTH = 1000 +SCREEN_HEIGHT = 600 RESOURCES_AMOUNT = 300 DIRECTION_CHANGE_DELAY = 200 diff --git a/survival/systems/movement_system.py b/survival/systems/movement_system.py index 47a5ad1..9299d29 100644 --- a/survival/systems/movement_system.py +++ b/survival/systems/movement_system.py @@ -1,4 +1,4 @@ -from survival import esper +from survival import esper, GameMap from survival.components.movement_component import MovementComponent from survival.components.moving_component import MovingComponent from survival.components.position_component import PositionComponent @@ -6,16 +6,16 @@ from survival.components.sprite_component import SpriteComponent class MovementSystem(esper.Processor): - def __init__(self): - self.map = None + def __init__(self, game_map: GameMap): + self.map = game_map def process(self, dt): for ent, (mov, pos, moving, sprite) in self.world.get_components(MovementComponent, PositionComponent, MovingComponent, SpriteComponent): - - pos.position[0] += moving.direction_vector[0] * mov.speed * dt / 100 - pos.position[1] += moving.direction_vector[1] * mov.speed * dt / 100 + cost = self.map.get_cost(moving.target) + pos.position[0] += moving.direction_vector[0] * mov.speed * dt / 100 / cost + pos.position[1] += moving.direction_vector[1] * mov.speed * dt / 100 / cost if abs(moving.target[0] * 32 - pos.position[0]) < 0.1 * mov.speed and abs( pos.position[1] - moving.target[1] * 32) < 0.1 * mov.speed: