Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/devtools/CompleteTestKit/animObj/DynamicDrawableObject.py
blob: bb27399730f6ad0205e73e52a2ba82510c79eea9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
import pygame
from DrawableObject import DrawableObject

class DynamicDrawableObject(DrawableObject, pygame.sprite.Sprite):

    def __init__(self, images, textfileName, x = 0, y = 0, transparent=False,
                    fps = 10, xVelocity = 0, yVelocity = 0 ):

        self._delay = 1000/fps
        self.xSpeed = xVelocity
        self.ySpeed = yVelocity
        
        DrawableObject.__init__(self, images, textfileName, x, y)

    def addImages(self, images):

        self._images.extend(images)

    def setSpeed(self, xVelocity = None, yVelocity = None):

       if xVelocity != None:  self.xSpeed = xVelocity
       if yVelocity != None:  self.ySpeed = yVelocity

    def getXSpeed(self):

       return self.xSpeed

    def getYSpeed(self):

       return self.ySpeed

    def move(self):
        self.xPos += self.xSpeed
        self.yPos += self.ySpeed
        self.rect.right += self.xSpeed
        self.rect.top += self.ySpeed

    def update(self, t):

        timePassed = t + self._last_update

        if (timePassed) > self._delay:
            if self._frame < self.animations.get(self._current_anim)[0] or self._frame > self.animations.get(self._current_anim)[1]:
                self._frame = self.animations.get(self._current_anim)[0] - 1

            self._frame += timePassed/self._delay
            
            if self._frame >= self.animations.get(self._current_anim)[1]:
                self._frame = self._frame%(self.animations.get(self._current_anim)[1])
            
            self.image = self._images[self._frame]
            self._last_update = timePassed%self._delay
        else:   
            self._last_update = timePassed

    def nextFrame(self):
        self._frame += 1
        if self._frame >= len(self._images):
            framesPast = self._frame - len(self._images)
            self._frame = framesPast

        self.image = self._images[self._frame]

    def nextCurrentAnimFrame(self):

        for cnt in range(len(animations)):

            if animations[cnt] == self._current_anim:
                if self._frame < self.animations[self._current_anim][0] or self._frame > self.animations[self._current_anim][1]:
                    self._frame = self.animations[self._current_anim][0]

                else: self._frame += 1

                if self._frame > self.animations[self._current_anim][1]:
                    framesPast = self._frame - self.animations[self._current_anim][1]
                    self._frame = framesPast - 1 + self.animations[self._current_anim][0]
                  
                self.image = self._images[self._frame]