You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
68 lines
2.3 KiB
68 lines
2.3 KiB
|
|
import pygame as pg
|
|
from .. import setup
|
|
from .. import constants as c
|
|
|
|
|
|
class Coin(pg.sprite.Sprite):
|
|
"""Flashing coin next to coin total info"""
|
|
def __init__(self, x, y):
|
|
super(Coin, self).__init__()
|
|
self.sprite_sheet = setup.GFX['item_objects']
|
|
self.create_frames()
|
|
self.image = self.frames[0]
|
|
self.rect = self.image.get_rect()
|
|
self.rect.x = x
|
|
self.rect.y = y
|
|
self.timer = 0
|
|
self.first_half = True
|
|
self.frame_index = 0
|
|
|
|
|
|
def create_frames(self):
|
|
"""Extract coin images from sprite sheet and assign them to a list"""
|
|
self.frames = []
|
|
self.frame_index = 0
|
|
|
|
self.frames.append(self.get_image(1, 160, 5, 8))
|
|
self.frames.append(self.get_image(9, 160, 5, 8))
|
|
self.frames.append(self.get_image(17, 160, 5, 8))
|
|
|
|
|
|
def get_image(self, x, y, width, height):
|
|
"""Extracts image from sprite sheet"""
|
|
image = pg.Surface([width, height])
|
|
rect = image.get_rect()
|
|
|
|
image.blit(self.sprite_sheet, (0, 0), (x, y, width, height))
|
|
image.set_colorkey(c.BLACK)
|
|
image = pg.transform.scale(image,
|
|
(int(rect.width*c.BRICK_SIZE_MULTIPLIER),
|
|
int(rect.height*c.BRICK_SIZE_MULTIPLIER)))
|
|
return image
|
|
|
|
|
|
def update(self, current_time):
|
|
"""Animates flashing coin"""
|
|
if self.first_half:
|
|
if self.frame_index == 0:
|
|
if (current_time - self.timer) > 375:
|
|
self.frame_index += 1
|
|
self.timer = current_time
|
|
elif self.frame_index < 2:
|
|
if (current_time - self.timer) > 125:
|
|
self.frame_index += 1
|
|
self.timer = current_time
|
|
elif self.frame_index == 2:
|
|
if (current_time - self.timer) > 125:
|
|
self.frame_index -= 1
|
|
self.first_half = False
|
|
self.timer = current_time
|
|
else:
|
|
if self.frame_index == 1:
|
|
if (current_time - self.timer) > 125:
|
|
self.frame_index -= 1
|
|
self.first_half = True
|
|
self.timer = current_time
|
|
|
|
self.image = self.frames[self.frame_index] |