Postać zwalnia gdy wchodzi na płytkę o większym koszcie.

This commit is contained in:
jakand 2021-05-23 18:03:16 +02:00
parent 474a6dd525
commit d051f68e52
4 changed files with 11 additions and 11 deletions

View File

@ -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())

View File

@ -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())

View File

@ -1,4 +1,4 @@
SCREEN_WIDTH = 1920
SCREEN_HEIGHT = 1080
SCREEN_WIDTH = 1000
SCREEN_HEIGHT = 600
RESOURCES_AMOUNT = 300
DIRECTION_CHANGE_DELAY = 200

View File

@ -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: