def createHero(self, x, y): sprite = pygame.image.load('Images/placeholder.png').convert_alpha() shape = helper.createShapeBodyFromImage(sprite, x = x, y = y, mass = 100, mode = 'dynamic', rotable=False, centered = True) shape.collision_type = HERO_C_TYPE # shape.friction = STD_FRICTION new_entity = self.entity_manager.createEntity() new_position_component = PositionComponent(x,y,sprite.get_rect()) new_render_component = RenderComponent(sprite) new_physics_component = PhysicsComponent(shape) new_move_component = MoveComponent(max_x_velocity = MAX_X_VELOCITY, x_acceleration = X_ACCELERATION, max_y_speed = MAX_JUMP_SPEED, y_acceleration = JUMP_ACCELERATION) new_state_component = StateComponent('alive') self.entity_manager.addComponent(new_entity, new_position_component) self.entity_manager.addComponent(new_entity, new_render_component) self.entity_manager.addComponent(new_entity, new_physics_component) self.entity_manager.addComponent(new_entity, new_move_component) self.entity_manager.addComponent(new_entity, new_state_component) self.group_manager.add(new_entity, 'hero') self.group_manager.add(new_entity, 'dynamic') return new_entity
def createLaserShot(self, x, y, direction): """ @x, y: standarized coordinates @direction: can be top, down, right or left, direction where it will travel """ sprite = pygame.image.load('Images/laser_shot.png').convert_alpha() shape = helper.createShapeBodyFromImage(sprite, x = x, y = y, mass = 1, mode = 'dynamic', rotable=False, centered = True) shape.collision_type = SHOT_C_TYPE shape.group = LASER_GROUP # Override velocity function so it doesn't get affected by gravity def vel_function(body, gravity, damping, dt): pass shape.body.velocity_func = vel_function new_entity = self.entity_manager.createEntity() new_position_component = PositionComponent(x,y,sprite.get_rect()) new_render_component = RenderComponent(sprite) new_physics_component = PhysicsComponent(shape) new_move_component = MoveComponent(max_x_velocity = LASER_MAX_VELOCITY, x_acceleration = LASER_ACCELERATION, max_y_speed = LASER_MAX_VELOCITY, y_acceleration = LASER_ACCELERATION) # Switch direction to allow movement if direction == 'up': new_move_component.move_up = True elif direction == 'down': new_move_component.move_down = True elif direction == 'right': new_move_component.move_right = True elif direction == 'left': new_move_component.move_left = True else: raise ValueError() self.entity_manager.addComponent(new_entity, new_position_component) self.entity_manager.addComponent(new_entity, new_render_component) self.entity_manager.addComponent(new_entity, new_physics_component) self.entity_manager.addComponent(new_entity, new_move_component) self.group_manager.add(new_entity, 'laser_shot') self.group_manager.add(new_entity, 'dynamic') return new_entity
def createCrate(self, x, y, sprite): sprite.convert_alpha() shape = helper.createShapeBodyFromImage(sprite, x = x, y = y, mass = 100, mode = 'dynamic', rotable=False, centered = False) shape.collision_type = MOVABLE_C_TYPE shape.friction = STD_FRICTION new_entity = self.entity_manager.createEntity() new_position_component = PositionComponent(x,y,sprite.get_rect()) new_render_component = RenderComponent(sprite) new_physics_component = PhysicsComponent(shape) self.entity_manager.addComponent(new_entity, new_position_component) self.entity_manager.addComponent(new_entity, new_render_component) self.entity_manager.addComponent(new_entity, new_physics_component) self.group_manager.add(new_entity, 'dynamic') self.group_manager.add(new_entity, 'dynamic_obstructor') return new_entity