diff options
author | davesilver <nibor123@gmail.com> | 2010-07-30 19:02:19 (GMT) |
---|---|---|
committer | davesilver <nibor123@gmail.com> | 2010-07-30 19:02:19 (GMT) |
commit | c59abc04aa34bf4368c9b17c6ae3b2778fb3b494 (patch) | |
tree | b5fd1e6267aa406e2c1927fda9682f86a27a3078 | |
parent | de87679f22f3ed4eee870b406fc0d145e09cdd3e (diff) |
Updating for new changes to DrawableObject
-rw-r--r-- | MAFH2/BattleEngine.py | 6 | ||||
-rw-r--r-- | MAFH2/BattleMenu.py | 2 | ||||
-rw-r--r-- | MAFH2/MafhGameMenu.py | 2 | ||||
-rw-r--r-- | MAFH2/fortuneengine/DrawableFontObject.py | 7 | ||||
-rw-r--r-- | MAFH2/fortuneengine/DrawableObject.py | 238 | ||||
-rw-r--r-- | MAFH2/fortuneengine/DynamicDrawableObject.py | 95 | ||||
-rw-r--r-- | MAFH2/fortuneengine/GameEngine.py | 2 | ||||
-rw-r--r-- | MAFH2/fortuneengine/Scene.py | 10 |
8 files changed, 202 insertions, 160 deletions
diff --git a/MAFH2/BattleEngine.py b/MAFH2/BattleEngine.py index 27b4ae1..3119010 100644 --- a/MAFH2/BattleEngine.py +++ b/MAFH2/BattleEngine.py @@ -48,11 +48,11 @@ class BattleEngine(GameEngineElement): # Preload images self.__drawableObjects = {} for i in ['arrow_select']: - self.__drawableObjects[i] = DrawableObject([pygame.image.load( HUD_PATH + i + ".gif" )],'') + self.__drawableObjects[i] = DrawableObject([pygame.image.load( HUD_PATH + i + ".gif" )]) self.game_engine.get_scene().addObject(self.__drawableObjects[i]) - self.__drawableObjects['hp'] = DrawableObject(Spritesheet( HUD_PATH + "hp.gif" ).img_extract(11,1,100,100), '') - self.__drawableObjects['bt'] = DrawableObject(Spritesheet( HUD_PATH + "bt.gif" ).img_extract(1,11,100,25), '') + self.__drawableObjects['hp'] = DrawableObject(Spritesheet( HUD_PATH + "hp.gif" ).img_extract(11,1,100,100)) + self.__drawableObjects['bt'] = DrawableObject(Spritesheet( HUD_PATH + "bt.gif" ).img_extract(1,11,100,25)) self.game_engine.get_scene().addObject(self.__drawableObjects['hp']) self.game_engine.get_scene().addObject(self.__drawableObjects['bt']) diff --git a/MAFH2/BattleMenu.py b/MAFH2/BattleMenu.py index 473ccf9..4e0c231 100644 --- a/MAFH2/BattleMenu.py +++ b/MAFH2/BattleMenu.py @@ -14,7 +14,7 @@ class BattleMenuHolder( GameEngineElement ): self.menu = None self.callback = callback #self.background = pygame.image.load(MENU_PATH + "battleMenubackground.gif") - self.background = DrawableObject([pygame.image.load( MENU_PATH + "battleMenubackground.gif")],'') + self.background = DrawableObject([pygame.image.load( MENU_PATH + "battleMenubackground.gif")]) self.game_engine.get_scene().addObject(self.background) self.disp = "" self.sec_des = "" diff --git a/MAFH2/MafhGameMenu.py b/MAFH2/MafhGameMenu.py index 959ad29..7cdbc12 100644 --- a/MAFH2/MafhGameMenu.py +++ b/MAFH2/MafhGameMenu.py @@ -7,7 +7,7 @@ class GameMenuHolder( GameEngineElement ): GameEngineElement.__init__(self, has_draw=True, has_event=False) self.menu = None self.callback = callback - self.background = DrawableObject([pygame.image.load(background).convert()], '') + self.background = DrawableObject([pygame.image.load(background).convert()]) self.background.scale(width, height) self.game_engine.get_scene().addObject(self.background) self.width = width diff --git a/MAFH2/fortuneengine/DrawableFontObject.py b/MAFH2/fortuneengine/DrawableFontObject.py index fa1528f..f06e514 100644 --- a/MAFH2/fortuneengine/DrawableFontObject.py +++ b/MAFH2/fortuneengine/DrawableFontObject.py @@ -3,13 +3,14 @@ from DrawableObject import DrawableObject class DrawableFontObject(DrawableObject, pygame.sprite.Sprite):
- def __init__(self,text,font,fps = 1, x = 0, y = 0, xVelocity = 0, yVelocity = 0):
+ def __init__(self,text,font,fps = 10, x = 0, y = 0, xVelocity = 0, yVelocity = 0):
self.font = font
self.textImage = font.render(text, 1, (255,255,255))
#self._image = self.textImage
DrawableObject.__init__(self, [self.textImage], '', fps, x, y, xVelocity, yVelocity)
- def changeText(self, newText, color = (0,0,0)):
- self._images[0] = self.font.render(newText, True, color)
+ def changeText(self, newText):
+
+ self._images[0] = self.font.render(newText, True, (111,22,45))
self.image = self._images[0]
diff --git a/MAFH2/fortuneengine/DrawableObject.py b/MAFH2/fortuneengine/DrawableObject.py index 6a704a8..0fd430c 100644 --- a/MAFH2/fortuneengine/DrawableObject.py +++ b/MAFH2/fortuneengine/DrawableObject.py @@ -1,20 +1,39 @@ import pygame
class DrawableObject(pygame.sprite.Sprite):
-
- def __init__(self,images,textfileName,fps = 10, x = 0, y = 0, xVelocity = 0, yVelocity = 0):
- pygame.sprite.Sprite.__init__(self)
- cnt = 0
-
- self._images = []
- self._origImages = []
- while cnt < len(images):
- self._images.append(images[cnt].convert_alpha())
- self._origImages.append(images[cnt].convert_alpha())
- cnt += 1
+ +# I removed the parameter for FPS, x and y velocities, and the text file reference +# since this is not a dynamic object +
+ def __init__(self,images, x = 0, y = 0,):
+ pygame.sprite.Sprite.__init__(self) + + # + # My question is why do drawable objects take the form of a List? + # it seems that every object takes lists, but then why encapsulate? + # I believe that we can collapse these objects + # JT Jul 2010 +
+#self._originals = images
+#self._images = images +
+ self._images = [] + self._origImages = [] + +# +# Made the below while loop more efficient and quicker +# JT Jul 28 2010
+ for i in range(len(images)):
+ self._images.append(images[i].convert())
+ self._origImages.append(images[i].convert())
+ self._start = pygame.time.get_ticks()
self.image = self._images[0]
- self._delay = 1000 / fps
+# +# This went away since it was relient on FPS which DO's don't have +""" self._delay = 1000 / fps """ +# JT Jul 28 2010
+ self._last_update = 0
self._frame = 0
self.animations = {}
@@ -25,10 +44,14 @@ class DrawableObject(pygame.sprite.Sprite): self.xSpeed = xVelocity
self.ySpeed = yVelocity
self.myAngle = 0
- self.xSize = 40
- self.ySize = 40
+ self.xSize = 40 # <--
+ self.ySize = 40 # <--
self.rect.topleft = (x,y)
-
+# +# Since there will be no animation in a static object I removed the code that +# read the animFile since it was an unecessary slowdown +# + """
if textfileName != '':
f = open(textfileName, 'r')
@@ -38,90 +61,138 @@ class DrawableObject(pygame.sprite.Sprite): animValues = currentLine.split(",")
self.animations[animValues[0]] = [int(animValues[1]), int(animValues[2])]
currentLine = f.readline()
-
- self.goToAnim("anim1")
-
- else:
-
- self.animations["anim1"] = [0, len(self._images) - 1]
- self.goToAnim("anim1")
+ """
def addImages(self, images):
-
self._images.extend(images)
#self._originals.extend(images)
def goToAnim(self, animName):
-
if self.animations.get(animName, 0) != 0:
self._current_anim = animName
self._frame = self.animations[animName][0]
- self.image = self._images[self._frame]
-
- def move(self):
-
- self.xPos += self.xSpeed
- self.yPos += self.ySpeed
-
- self.rect.right += self.xSpeed
- self.rect.top += self.ySpeed
-
- def nudge(self, xNudge = 0, yNudge = 0):
-
- self.xPos += xNudge
- self.yPos += yNudge
-
- self.rect.right += xNudge
- self.rect.top += yNudge
-
- def scale(self, newXSize = None, newYSize = None):
-
- if newXSize != None: self.xSize = newXSize
- if newYSize != None: self.ySize = newYSize
-
- cnt = 0
- while cnt < len(self._images):
- self._origImages[cnt] = pygame.transform.scale(self._origImages[cnt], (self.xSize, self.ySize))
- self._images[cnt] = self._origImages[cnt]
- cnt += 1
+ self.image = self._images[self._frame] + +# +# Again I took out default values because I don't want the primary function +# of the method to be effectively overridable and have a method that can +# do nothing without raising flags +# I also conformed the parameter naming convention so that it conforms with the +# other methods' naming convention in this object +# JT Jul 28 2010
+ def nudge(self, x, y):
+ self.xPos += x
+ self.yPos += y
+ self.rect.right += x
+ self.rect.top += y
+ +# +# reworked the loop for efficiency and the if statement logic +# JT Jul 28 2010
+ def scale(self, x=None, y=None): + if type(x).__name__=='int': self.xSize = x + if type(y).__name__=='int': self.ySize = y +
+ for i in range(len(self._images)):
+ self._origImages[i] = pygame.transform.scale(self._origImages[i], (self.xSize, self.ySize))
+ self._images[i] = self._origImages[i]
def getXSize(self):
-
return self.xSize
def getYSize(self):
-
return self.ySize
-
+ +# +# I changed rotate to utilize a for instead of a counter/while loop for speed +# JT - Jul 28 2010
def rotate(self,angle):
-
- cnt = 0
-
self.myAngle += angle
- while cnt < len(self._images):
-
- self._images[cnt] = pygame.transform.rotate(self._origImages[cnt], self.myAngle)
- cnt += 1
+ for i in range(len(self._images)):
+ self._images[i] = pygame.transform.rotate(self._origImages[i], self.myAngle)
def getRotation(self):
-
return self.myAngle
-
+ +# +# I don't recommend forcing people to keep images within the screen +# a common trick in bullet hells is to temporarily move image objects off- +# screen when they die so the game isn't constantly loading a new instance of +# a common enemy +# JT - Jul 28 2010
def setPosition(self, x = None, y = None):
-
- if x != None and x >= 0: self.xPos = x
- if y != None and y >= 0: self.yPos = y
-
- self.rect.topleft = (self.xPos, self.yPos)
+ if type(x).__name__=='int': self.xPos = x + if type(y).__name__=='int': self.yPos = y
+ self.rect.topleft = (self.xPos, self.yPos)
def getXPos(self):
-
return self.xPos
def getYPos(self):
-
return self.yPos
+ +# +# Added defaul values in case someone wants their color key to be taken from bot.right corner, eg +# JT Jul 28 2010
+ def calcColorKey(self, x=0, y=0):
+ myColorKey = images[0].get_at((x,y))
+ setColorKey(myColorKey)
+
+ def setColorKey(self, aColor):
+ for i in range(len(self._images)):
+ self._images[i].set_colorkey(aColor)
+# +# Set default value to allow the method to be called empty (since t does nothing atm) +# JT Jul 28 2010
+ def update(self, t=None):
+ pass
+ +# +# removed current animation method +#
+ def nextFrame(self):
+ pass
+ def nextCurrentAnimFrame(self):
+ pass + + + + + + + + + + + + + + + + + + + +# +# Removed this because it took into account the depreciated velocity concept that was +# contrary to the projected use of the drawable object +# This would be more useful in a Dynamic Drawable Object +# JT Jul 28 2010 +"""
+ def move(self):
+ self.xPos += self.xSpeed
+ self.yPos += self.ySpeed
+ self.rect.right += self.xSpeed
+ self.rect.top += self.ySpeed
+""" + +# +# I removed velocity because a static object should not have variables pertaining to movement +# That is not instructed manually; velocity, being displacement over time, is easily perceived +# as an exaple of autonomous motion since it's dictated by the passage of time +# JT Jul 28 2010 +"""
def setSpeed(self, xVelocity = None, yVelocity = None):
if xVelocity != None: self.xSpeed = xVelocity
@@ -134,27 +205,4 @@ class DrawableObject(pygame.sprite.Sprite): def getYSpeed(self):
return self.ySpeed
-
- def calcColorKey(self):
-
- myColorKey = images[0].get_at((0,0))
- setColorKey(myColorKey)
-
- def setColorKey(self, aColor):
-
- cnt = 0
- while cnt < len(self._images):
- self._images[cnt].set_colorkey(aColor)
- cnt += 1
-
- def update(self, t):
- pass
-
- def updateCurrnetAnimation(self, t):
- pass
-
- def nextFrame(self):
- pass
-
- def nextCurrentAnimFrame(self):
- pass
+""" diff --git a/MAFH2/fortuneengine/DynamicDrawableObject.py b/MAFH2/fortuneengine/DynamicDrawableObject.py index e46ef04..8d2737d 100644 --- a/MAFH2/fortuneengine/DynamicDrawableObject.py +++ b/MAFH2/fortuneengine/DynamicDrawableObject.py @@ -11,7 +11,7 @@ class DynamicDrawableObject(DrawableObject, pygame.sprite.Sprite): self._images.extend(images)
- # def update(self, t):
+# def update(self, t):
#
# timePassed = t + self._last_update
# if timePassed > self._delay:
@@ -28,79 +28,78 @@ class DynamicDrawableObject(DrawableObject, pygame.sprite.Sprite): def updateWithMovement(self, right, bottom): # causes objects to move and collide with walls
- # If we're at the top or bottom of the screen, switch directions.
- if (self.yPos + self.ySize) >= bottom or self.yPos < 0: self.ySpeed = self.ySpeed * -1
- if (self.yPos + self.ySize) >= bottom and self.ySpeed > 0: self.ySpeed = self.ySpeed * -1
- if self.yPos < 0 and self.ySpeed < 0: self.ySpeed = self.ySpeed * -1
-
- # If we're at the right or left of the screen, switch directions.
- if (self.xPos + self.xSize) >= right or self.xPos < 0: self.xSpeed = self.xSpeed * -1
- if (self.xPos + self.xSize) >= right and self.xSpeed > 0: self.xSpeed = self.xSpeed * -1
- if self.xPos < 0 and self.xSpeed < 0: self.xSpeed = self.xSpeed * -1
+# If we're at the top or bottom of the screen, switch directions.
+ if (self.yPos + self.ySize) >= bottom or self.yPos < 0: + self.ySpeed = self.ySpeed * -1
+ if (self.yPos + self.ySize) >= bottom and self.ySpeed > 0: + self.ySpeed = self.ySpeed * -1
+ if self.yPos < 0 and self.ySpeed < 0: + self.ySpeed = self.ySpeed * -1
+ +#2345678911234567892123456789312345678941234567895123456789612345678971234567898 +
+# If we're at the right or left of the screen, switch directions.
+ if (self.xPos + self.xSize) >= right or self.xPos < 0: + self.xSpeed = self.xSpeed * -1
+ if (self.xPos + self.xSize) >= right and self.xSpeed > 0: + self.xSpeed = self.xSpeed * -1
+ if self.xPos < 0 and self.xSpeed < 0: + self.xSpeed = self.xSpeed * -1
self.move()
if self._frame < len(self._images) - 1:
- self._frame += 1
+ self._frame += 1
else:
- self._frame = 0
+ self._frame = 0
self.image = self._images[self._frame]
def update(self, t): # just updates the frame / object
-
- #if self.animations[cnt] == self._current_anim:
-
- print "last update ", self._last_update
- timePassed = t + self._last_update#getting the time since the last time I updated my frame and adding it to the time that I last updated my frame
- print "time passed ", timePassed
+ ##print "Last update:", self._last_update,
+#getting the time since the last time I updated my frame and adding it to the time that I last updated my frame + timePassed = t + self._last_update
+ ##print " Time since:", timePassed, + +#checking if I am in the animation and putting me there if I am not
if (timePassed) > self._delay:
- if self._frame < self.animations.get(self._current_anim)[0] or self._frame > self.animations.get(self._current_anim)[1]: #checking if I am in the animation and putting me there if I am not
- self._frame = self.animations.get(self._current_anim)[0]
+ 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]
self._frame += timePassed/self._delay
- print "frame ", self._frame
+ ##print " On frame:", self._frame,"\n"
while self._frame >= self.animations.get(self._current_anim)[1]:
- framesPast = self._frame - self.animations.get(self._current_anim)[1]
- self._frame = framesPast - 1 + self.animations.get(self._current_anim)[0]
+ framesPast = self._frame - self.animations.get(self._current_anim)[1]
+ self._frame = framesPast - 1 + self.animations.get(self._current_anim)[0]
self.image = self._images[self._frame]
self._last_update = timePassed%self._delay
- else:
-
- self._last_update = timePassed
+ else:
+ self._last_update = timePassed
def nextFrame(self): # push to next frame
-
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): # push to the next frame of curr animation
-
- cnt = 0
- while cnt < 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]
+ + 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]
+ self.image = self._images[self._frame]
- cnt = len(anmiations)
-
- cnt += 1
+# cnt = len(anmiations) <-- why was this here? diff --git a/MAFH2/fortuneengine/GameEngine.py b/MAFH2/fortuneengine/GameEngine.py index ee67db4..4434af9 100644 --- a/MAFH2/fortuneengine/GameEngine.py +++ b/MAFH2/fortuneengine/GameEngine.py @@ -52,7 +52,7 @@ class GameEngine(object): self.height = height size = width, height self.screen = pygame.display.set_mode(size) - self.__scene = Scene(DrawableObject([pygame.Surface((1,1))],'')) + self.__scene = Scene(DrawableObject([pygame.Surface((1,1))])) # Engine Internal Variables self.__fps_cap = fps_cap diff --git a/MAFH2/fortuneengine/Scene.py b/MAFH2/fortuneengine/Scene.py index 320246b..9727177 100644 --- a/MAFH2/fortuneengine/Scene.py +++ b/MAFH2/fortuneengine/Scene.py @@ -13,7 +13,7 @@ class Scene(pygame.sprite.RenderUpdates): self.yPos = 0
self.xSize = 0
self.ySize = 0
-
+
self.calcPosition()
self.calcSize()
self.setRelativePositions()
@@ -46,11 +46,6 @@ class Scene(pygame.sprite.RenderUpdates): self.xSize = highestX - self.xPos
self.ySize = highestY - self.yPos
- def addObject(self, newDrawableObject):
-
- RenderUpdates.add_internal(self, newDrawableObject)
- self._spritelist.append([newDrawableObject, newDrawableObject.getXPos(), newDrawableObject.getYPos()])
-
def addObjects(self, newDrawableObjects):
for sprite in newDrawableObjects:
RenderUpdates.add_internal(self, sprite)
@@ -66,8 +61,7 @@ class Scene(pygame.sprite.RenderUpdates): def removeObject(self, sprite):
RenderUpdates.remove_internal(self, sprite)
- #self._spritelist.remove(sprite)
-
+ self._spritelist.remove(sprite)
def getObject(self, index):
|