예제 #1
0
    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
예제 #2
0
    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
예제 #3
0
    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