From f49ef8559d51e10ca63c783735cec6c6b5b77ada Mon Sep 17 00:00:00 2001 From: = Date: Sun, 28 Mar 2021 18:56:32 +0200 Subject: [PATCH] update --- survival/__init__.py | 14 ++------------ survival/player_generator.py | 23 +++++++++++++++++++++++ survival/resource_generator.py | 3 ++- survival/settings.py | 1 + survival/tile_layer.py | 3 +++ 5 files changed, 31 insertions(+), 13 deletions(-) create mode 100644 survival/player_generator.py diff --git a/survival/__init__.py b/survival/__init__.py index f51dd02..35625fc 100644 --- a/survival/__init__.py +++ b/survival/__init__.py @@ -9,6 +9,7 @@ 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.player_generator import PlayerGenerator from survival.resource_generator import ResourceGenerator from survival.systems.camera_system import CameraSystem from survival.systems.collision_system import CollisionSystem @@ -29,18 +30,7 @@ if __name__ == '__main__': camera = Camera(game_map.width * 32, game_map.height * 32, win) world = WorldGenerator().create_world(camera, game_map) - - player = world.create_entity() - pos = PositionComponent([0, 0], [0, 0]) - world.add_component(player, pos) - world.add_component(player, MovementComponent()) - world.add_component(player, InputComponent()) - camera_target = CameraTargetComponent(pos) - world.add_component(player, camera_target) - game_map.add_entity(player, pos) - sprite = SpriteComponent('stevenson.png') - sprite.set_scale(1) - world.add_component(player, sprite) + player = PlayerGenerator().create_player(world, game_map) ResourceGenerator(world, game_map).generate_resources() diff --git a/survival/player_generator.py b/survival/player_generator.py new file mode 100644 index 0000000..df7a317 --- /dev/null +++ b/survival/player_generator.py @@ -0,0 +1,23 @@ +from survival.components.camera_target_component import CameraTargetComponent +from survival.components.input_component import InputComponent +from survival.components.movement_component import MovementComponent +from survival.components.position_component import PositionComponent +from survival.components.sprite_component import SpriteComponent + + +class PlayerGenerator: + + def create_player(self, world, game_map): + player = world.create_entity() + pos = PositionComponent([0, 0], [0, 0]) + world.add_component(player, pos) + world.add_component(player, MovementComponent()) + world.add_component(player, InputComponent()) + camera_target = CameraTargetComponent(pos) + world.add_component(player, camera_target) + game_map.add_entity(player, pos) + sprite = SpriteComponent('stevenson.png') + sprite.set_scale(1) + world.add_component(player, sprite) + + return player diff --git a/survival/resource_generator.py b/survival/resource_generator.py index 3021ca2..ba5aa3f 100644 --- a/survival/resource_generator.py +++ b/survival/resource_generator.py @@ -2,6 +2,7 @@ import random from survival.components.position_component import PositionComponent from survival.components.sprite_component import SpriteComponent +from survival.settings import RESOURCES_AMOUNT class ResourceGenerator: @@ -10,7 +11,7 @@ class ResourceGenerator: self.map = game_map def generate_resources(self): - for x in range(50): + for x in range(RESOURCES_AMOUNT): obj = self.world.create_entity() sprites = ['apple.png', 'water.png', 'wood.png', 'stone.png'] diff --git a/survival/settings.py b/survival/settings.py index 30e3c68..577806c 100644 --- a/survival/settings.py +++ b/survival/settings.py @@ -1,2 +1,3 @@ SCREEN_WIDTH = 1920 SCREEN_HEIGHT = 1080 +RESOURCES_AMOUNT = 300 diff --git a/survival/tile_layer.py b/survival/tile_layer.py index ee701c4..fa4aa6c 100644 --- a/survival/tile_layer.py +++ b/survival/tile_layer.py @@ -12,6 +12,9 @@ class TileLayer: def draw(self, camera, visible_area): for y in range(int(visible_area.top / 32), int(visible_area.height / 32) + 1): for x in range(int(visible_area.left / 32), int(visible_area.width / 32) + 1): + if y >= self.height or x >= self.width: + continue + self.image.pos = (x * 32, y * 32) self.image.origin = self.tiles[y][x].origin camera.draw(self.image)