Package fortuneengine :: Module DrawableObject
[hide private]
[frames] | no frames]

Source Code for Module fortuneengine.DrawableObject

  1  import pygame 
  2  
 
3 -class DrawableObject(pygame.sprite.Sprite):
4
5 - def __init__(self, images, textfileName, transparent = False, x = 0, y = 0):
6 pygame.sprite.Sprite.__init__(self) 7 8 self._images = [] 9 self._origImages = [] 10 for i in range(len(images)): 11 self._images.append(images[i].convert_alpha()) 12 self._origImages.append(images[i].convert_alpha()) 13 14 blank = pygame.Surface((0,0)) 15 16 if(transparent): 17 for i in range(len(images)): 18 self._images[i] = blank 19 20 self._start = pygame.time.get_ticks() 21 self.image = self._images[0] 22 self._last_update = 0 23 self._frame = 0 24 self.animations = {} 25 self._current_anim = "" 26 self.rect = self.image.get_rect() 27 self.xPos = x 28 self.yPos = y 29 self.myAngle = 0 30 self.xSize = self.image.get_width() 31 self.ySize = self.image.get_height() 32 self.rect.topleft = (x,y) 33 34 if textfileName != '': 35 36 f = open(textfileName, 'r') 37 currentLine = f.readline() 38 while currentLine != '': 39 40 animValues = currentLine.split(",") 41 self.animations[animValues[0]] = [int(animValues[1]), int(animValues[2])] 42 currentLine = f.readline() 43 44 else: 45 46 self.animations["anim1"] = [0, len(self._images)] 47 self.goToAnim("anim1") 48 49 self.makeTransparent(transparent)
50
51 - def repopulateImages(self, newImages):
52 53 self._images = [] 54 self._origImages = [] 55 for i in range(len(newImages)): 56 self._images.append(newImages[i].convert_alpha()) 57 self._origImages.append(newImages[i].convert_alpha()) 58 59 self.image = self._images[0] 60 self._frame = 0 61 self.xSize = self.image.get_width() 62 self.ySize = self.image.get_height()
63
64 - def addImages(self, images):
65 self._images.extend(images) 66 self._origImages.extend(images)
67
68 - def goToAnim(self, animName):
69 if self.animations.get(animName, 0) != 0: 70 self._current_anim = animName 71 self._frame = self.animations[animName][0] 72 self.image = self._images[self._frame]
73
74 - def goToFrame(self, frame):
75 76 if frame <= len(self._images): 77 self._frame = frame 78 self.image = self._images[self._frame]
79
80 - def nudge(self, x, y):
81 self.xPos += x 82 self.yPos += y 83 self.rect.right += x 84 self.rect.top += y
85
86 - def scale(self, x=None, y=None):
87 if type(x).__name__=='int': self.xSize = x 88 if type(y).__name__=='int': self.ySize = y 89 90 for i in range(len(self._images)): 91 self._origImages[i] = pygame.transform.scale(self._origImages[i], (self.xSize, self.ySize)) 92 self._images[i] = self._origImages[i]
93
94 - def fill(self, color):
95 for i in range(len(self._images)): 96 #print "filling with ", color 97 self._origImages[i].fill(color) 98 self._images[i].fill(color)
99
100 - def getXSize(self):
101 return self.xSize
102
103 - def getYSize(self):
104 return self.ySize
105
106 - def rotate(self,angle):
107 self.myAngle += angle 108 for i in range(len(self._images)): 109 self._images[i] = pygame.transform.rotate(self._origImages[i], self.myAngle)
110
111 - def getRotation(self):
112 return self.myAngle
113
114 - def setPosition(self, x = None, y = None):
115 if type(x).__name__=='int': self.xPos = x 116 if type(y).__name__=='int': self.yPos = y 117 self.rect.topleft = (self.xPos, self.yPos)
118
119 - def getXPos(self):
120 return self.xPos
121
122 - def getYPos(self):
123 return self.yPos
124
125 - def calcColorKey(self, x=0, y=0):
126 myColorKey = images[0].get_at((x,y)) 127 setColorKey(myColorKey)
128
129 - def makeTransparent(self, bool = True):
130 if bool == True: 131 surf = pygame.Surface((0,0)) 132 for i in range(len(self._images)): 133 self._images[i] = surf 134 else: 135 for i in range(len(self._images)): 136 self._images[i] = self._origImages[i] 137 self.image = self._images[self._frame]
138
139 - def setColorKey(self, aColor):
140 for i in range(len(self._images)): 141 self._images[i].set_colorkey(aColor)
142
143 - def update(self, t=None):
144 timePassed = t + self._last_update 145 146 if (timePassed) > 200: 147 148 self.image = self._images[self._frame] 149 self._last_update = timePassed%1000 150 else: 151 self._last_update = timePassed
152
153 - def nextFrame(self):
154 pass
155
156 - def nextCurrentAnimFrame(self):
157 pass
158