44 lines
1.5 KiB
Python
44 lines
1.5 KiB
Python
###########################################
|
|
# Created on 1-9-2013. Miguel Angel Astor #
|
|
###########################################
|
|
|
|
class Animation:
|
|
""" This class represents an animated sprite. """
|
|
def __init__(self, name = "Default", num_frames = 1, frame_start_offset = 0):
|
|
""" Initializes an empty animation. """
|
|
self.fps = 0
|
|
self.name = name
|
|
self.looping = False
|
|
self.frame_start = frame_start_offset
|
|
self.num_frames = num_frames
|
|
self.current_frame = 0
|
|
|
|
def __str__(self):
|
|
""" Returns a string representation of this animation. """
|
|
return "Animation :: Name: " + self.name + " :: FPS: " + str(self.fps) +
|
|
" :: Looping : " + str(self.looping) + " :: Current frame: " +
|
|
str(self.current_frame)
|
|
|
|
def get_current_frame(self):
|
|
""" Returns the current frame of the animation. """
|
|
return self.current_frame
|
|
|
|
def get_looping(self):
|
|
return self.looping
|
|
|
|
def set_looping(self, looping):
|
|
self.looping = looping
|
|
|
|
def get_frames_per_second(self):
|
|
return self.fps
|
|
|
|
def set_frames_per_second(self, fps):
|
|
self.fps = fps
|
|
|
|
def generate_animation(self):
|
|
""" Generator function that returns the next frame of the animation. """
|
|
while True:
|
|
for frame in range(self.frame_start, self.frame_start + self.num_frames):
|
|
self.current_frame = frame - self.frame_start
|
|
yield frame
|