refactor
This commit is contained in:
parent
e1107d8111
commit
534e9813ef
@ -9,19 +9,13 @@ from survival.components.movement_component import MovementComponent
|
||||
from survival.components.position_component import PositionComponent
|
||||
from survival.components.sprite_component import SpriteComponent
|
||||
from survival.game_map import GameMap
|
||||
from survival.resource_generator import ResourceGenerator
|
||||
from survival.systems.camera_system import CameraSystem
|
||||
from survival.systems.collision_system import CollisionSystem
|
||||
from survival.systems.draw_system import DrawSystem
|
||||
from survival.systems.input_system import InputSystem
|
||||
from survival.systems.movement_system import MovementSystem
|
||||
|
||||
|
||||
def draw_game(delta):
|
||||
win.fill((0, 0, 0))
|
||||
game_map.draw(camera)
|
||||
world.process(delta)
|
||||
pygame.display.update()
|
||||
|
||||
from survival.world_generator import WorldGenerator
|
||||
|
||||
if __name__ == '__main__':
|
||||
pygame.init()
|
||||
@ -34,12 +28,7 @@ if __name__ == '__main__':
|
||||
game_map = GameMap(int(SCREEN_WIDTH / 32) * 2, 2 * int(SCREEN_HEIGHT / 32) + 1)
|
||||
camera = Camera(game_map.width * 32, game_map.height * 32, win)
|
||||
|
||||
world = esper.World()
|
||||
world.add_processor(InputSystem())
|
||||
world.add_processor(CameraSystem(camera))
|
||||
world.add_processor(MovementSystem(), priority=1)
|
||||
world.add_processor(CollisionSystem(game_map), priority=2)
|
||||
world.add_processor(DrawSystem(win, camera))
|
||||
world = WorldGenerator().create_world(camera, game_map)
|
||||
|
||||
player = world.create_entity()
|
||||
pos = PositionComponent([0, 0], [0, 0])
|
||||
@ -53,16 +42,7 @@ if __name__ == '__main__':
|
||||
sprite.set_scale(1)
|
||||
world.add_component(player, sprite)
|
||||
|
||||
apple = world.create_entity()
|
||||
pos = PositionComponent([96, 96], [3, 3])
|
||||
world.add_component(apple, pos)
|
||||
world.add_component(apple, SpriteComponent('apple.png'))
|
||||
game_map.add_entity(apple, pos)
|
||||
apple = world.create_entity()
|
||||
pos = PositionComponent([128, 128], [4, 4])
|
||||
world.add_component(apple, pos)
|
||||
world.add_component(apple, SpriteComponent('apple.png'))
|
||||
game_map.add_entity(apple, pos)
|
||||
ResourceGenerator(world, game_map).generate_resources()
|
||||
|
||||
run = True
|
||||
|
||||
@ -78,4 +58,7 @@ if __name__ == '__main__':
|
||||
|
||||
keys = pygame.key.get_pressed()
|
||||
|
||||
draw_game(ms)
|
||||
win.fill((0, 0, 0))
|
||||
game_map.draw(camera)
|
||||
world.process(ms)
|
||||
pygame.display.update()
|
||||
|
30
survival/resource_generator.py
Normal file
30
survival/resource_generator.py
Normal file
@ -0,0 +1,30 @@
|
||||
import random
|
||||
|
||||
from survival.components.position_component import PositionComponent
|
||||
from survival.components.sprite_component import SpriteComponent
|
||||
|
||||
|
||||
class ResourceGenerator:
|
||||
def __init__(self, world, game_map):
|
||||
self.world = world
|
||||
self.map = game_map
|
||||
|
||||
def generate_resources(self):
|
||||
for x in range(50):
|
||||
obj = self.world.create_entity()
|
||||
sprites = ['apple.png', 'water.png', 'wood.png', 'stone.png']
|
||||
|
||||
empty_grid_pos = self.get_empty_grid_position()
|
||||
empty_pos = [empty_grid_pos[0] * 32, empty_grid_pos[1] * 32]
|
||||
|
||||
pos = PositionComponent(empty_pos, empty_grid_pos)
|
||||
sprite = SpriteComponent(random.choice(sprites))
|
||||
self.world.add_component(obj, pos)
|
||||
self.world.add_component(obj, sprite)
|
||||
self.map.add_entity(obj, pos)
|
||||
|
||||
def get_empty_grid_position(self):
|
||||
free_pos = [random.randrange(self.map.width), random.randrange(self.map.height)]
|
||||
while self.map.is_colliding(free_pos):
|
||||
free_pos = [random.randrange(self.map.width), random.randrange(self.map.height)]
|
||||
return free_pos
|
@ -4,8 +4,7 @@ from survival.components.sprite_component import SpriteComponent
|
||||
|
||||
|
||||
class DrawSystem(esper.Processor):
|
||||
def __init__(self, window, camera):
|
||||
self.window = window
|
||||
def __init__(self, camera):
|
||||
self.camera = camera
|
||||
|
||||
def process(self, dt):
|
||||
|
19
survival/world_generator.py
Normal file
19
survival/world_generator.py
Normal file
@ -0,0 +1,19 @@
|
||||
from survival import esper
|
||||
from survival.systems.camera_system import CameraSystem
|
||||
from survival.systems.collision_system import CollisionSystem
|
||||
from survival.systems.draw_system import DrawSystem
|
||||
from survival.systems.input_system import InputSystem
|
||||
from survival.systems.movement_system import MovementSystem
|
||||
|
||||
|
||||
class WorldGenerator:
|
||||
|
||||
def create_world(self, camera, game_map):
|
||||
world = esper.World()
|
||||
world.add_processor(InputSystem())
|
||||
world.add_processor(CameraSystem(camera))
|
||||
world.add_processor(MovementSystem(), priority=1)
|
||||
world.add_processor(CollisionSystem(game_map), priority=2)
|
||||
world.add_processor(DrawSystem(camera))
|
||||
|
||||
return world
|
Loading…
Reference in New Issue
Block a user