35 lines
1.4 KiB
Python
35 lines
1.4 KiB
Python
import pygame
|
|
|
|
class Camera(pygame.sprite.Group):
|
|
|
|
def __init__(self):
|
|
super().__init__()
|
|
|
|
# General Setup
|
|
self.display_surface = pygame.display.get_surface()
|
|
self.half_width = self.display_surface.get_size()[0] // 2
|
|
self.half_height = self.display_surface.get_size()[1] // 2
|
|
self.offset = pygame.math.Vector2(100, 200)
|
|
|
|
# Creating the floor
|
|
self.floor_surf = pygame.image.load('../Graphics/tilemap/ground.png').convert()
|
|
self.floor_rect = self.floor_surf.get_rect(topleft = (0,0))
|
|
|
|
def custom_draw(self, player):
|
|
self.sprite_type = player.sprite_type
|
|
#Getting the offset
|
|
self.offset.x = player.rect.centerx - self.half_width
|
|
self.offset.y = player.rect.centery - self.half_height
|
|
|
|
# Drawing the floor
|
|
floor_offset_pos = self.floor_rect.topleft - self.offset
|
|
self.display_surface.blit(self.floor_surf, floor_offset_pos)
|
|
|
|
for sprite in sorted(self.sprites(), key = lambda sprite: sprite.rect.centery):
|
|
offset_pos = sprite.rect.topleft - self.offset
|
|
self.display_surface.blit(sprite.image, offset_pos)
|
|
|
|
def enemy_update(self, player):
|
|
enemy_sprites = [sprite for sprite in self.sprites() if hasattr(sprite, 'sprite_type') and sprite.sprite_type == 'enemy']
|
|
for enemy in enemy_sprites:
|
|
enemy.enemy_update(player)
|