def renderer(): # to be called every frame to render every image in a list """ =========================================================================== Blits everything to the screen that needs to be. Called every frame. =========================================================================== """ if Room.prev_room: Helper.DISPLAY_SURFACE.blit(Room.prev_room.texture, Room.prev_room.position) Helper.DISPLAY_SURFACE.blit(Room.current_room.texture, Room.current_room.position) Helper.DISPLAY_SURFACE.blit(Room.next_room.texture, Room.next_room.position) Room.move_room() Helper.DISPLAY_SURFACE.blit(Player.Player.playerSurf, Player.Player.playerPos) if Player.Player.inventoryIsOpen: Helper.DISPLAY_SURFACE.blit( ImageFiles.images['UI']['Inventory_Background'], Helper.INVENTORY_POSITION) for projectile in Projectile.attackSprites: Helper.DISPLAY_SURFACE.blit(projectile.sprite, (projectile.pos_x, projectile.pos_y)) for enemy in Entity.enemy_list: Helper.DISPLAY_SURFACE.blit(enemy.sprite, enemy.pos) pygame.time.Clock().tick(Helper.REFRESH_RATE) pygame.display.flip()
def renderer(): """ =========================================================================== Blits everything to the screen that needs to be. Called every frame to render every image in a list. =========================================================================== """ if Room.prev_room: Helper.DISPLAY_SURFACE.blit(Room.prev_room.texture, Room.prev_room.position) Helper.DISPLAY_SURFACE.blit(Room.current_room.texture, Room.current_room.position) Helper.DISPLAY_SURFACE.blit(Room.next_room.texture, Room.next_room.position) Room.move_room() Helper.DISPLAY_SURFACE.blit(Player.Player.playerSurf, Player.Player.playerPos) # display health bars for bar in Entity.health_bars: bar_background = pygame.Surface((bar.size[0] + 4, bar.size[1] + 4)) bar_background.fill((0, 0, 0)) bar_surface = pygame.Surface( (bar.size[0] * (bar.health / bar.max_health), bar.size[1])) bar_surface.fill(bar.colour) Helper.DISPLAY_SURFACE.blit(bar_background, (bar.pos[0] - 2, bar.pos[1] - 2)) Helper.DISPLAY_SURFACE.blit(bar_surface, (bar.pos[0], bar.pos[1])) for projectile in Projectile.attackSprites: Helper.DISPLAY_SURFACE.blit(projectile.sprite, (projectile.pos_x, projectile.pos_y)) # display inventory if it is open if Player.Player.inventoryIsOpen: Helper.DISPLAY_SURFACE.blit( ImageFiles.images['UI']['Inventory_Background'], Helper.INVENTORY_POSITION) # display enemies for enemy in Entity.enemy_list: Helper.DISPLAY_SURFACE.blit(enemy.sprite, enemy.pos) global message_to_display global time_since_last_display if message_to_display == '': if time_since_last_display < pygame.time.get_ticks() + display_delay\ and len(display_messages) > 0: message_to_display = display_messages.pop(0) time_since_last_display = pygame.time.get_ticks() else: if time_since_last_display + display_time < pygame.time.get_ticks(): message_to_display = '' text_surface = FONT_DISPLAY.render(message_to_display, False, Helper.WHITE) if text_surface.get_width() > Helper.DISPLAY_SURFACE.get_width(): messages = message_to_display.split(',') index = 0 for message in messages: if message is not '': if message not in display_messages: display_messages.insert(0 + index, message) index += 1 text_surface = FONT_DISPLAY.render('', False, Helper.WHITE) # create strings for stats stats = [ str('Level : ' + str(Player.Player.playerInstance.level)), str('HP : ' + str(Player.Player.playerInstance.health) + '/' + str(Player.Player.playerInstance.max_health)), str('XP : ' + str(Player.Player.playerInstance.exp) + '/' + str(Player.Player.playerInstance.exp_to_level_up)) ] # offset text if inventory is not open vertical_offset = 500 if not Player.Player.inventoryIsOpen else 0 for stat_key in Player.Player.playerInstance.stats.keys(): stats.append( stat_key + ' : ' + str(Player.Player.playerInstance.stats[stat_key]['Value'])) for stat_index in range(0, len(stats)): stat_surface = FONT_DISPLAY_SMALL.render(stats[stat_index], False, Helper.BLACK) Helper.DISPLAY_SURFACE.blit( stat_surface, (Helper.INVENTORY_POSITION[0] + 40, Helper.INVENTORY_POSITION[1] + 20 * stat_index + 100 + vertical_offset)) stat_index += 1 stats.clear() # display inventory for slot in range(0, Player.Player.Backpack.size): item_surf = None if slot > len(Player.Player.Backpack.items) - 1\ else Player.Player.Backpack.items[slot].\ weapon_thumbnail.convert_alpha() \ if type(Player.Player.Backpack.items[slot]) == Item.Weapon \ else None if item_surf is None: item_surf = pygame.Surface((80, 80)) item_surf.fill(Helper.WHITE) row = 0 if slot < int(Player.Player.Backpack.size / 2) else 1 column = slot if slot < int(Player.Player.Backpack.size / 2)\ else slot - Player.Player.Backpack.size / 2 position = [ Helper.INVENTORY_POSITION[0] + 350 + (item_surf.get_width() + 20) * column, Helper.INVENTORY_POSITION[1] + 100 + (item_surf.get_height() + 20) * row + vertical_offset ] Helper.DISPLAY_SURFACE.blit(item_surf, position) del item_surf Helper.DISPLAY_SURFACE.blit(text_surface, (10, 10)) pygame.time.Clock().tick(Helper.REFRESH_RATE) pygame.display.flip()