Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/MAFH2
diff options
context:
space:
mode:
authorslm <jtmengel@gmail.com>2010-07-20 20:29:13 (GMT)
committer slm <jtmengel@gmail.com>2010-07-20 20:29:13 (GMT)
commit2df5376c9fcf9954affa2d0cb2db7a91a4ffbb81 (patch)
tree7b710dddf8bf0cbb5305465b10b8bd3d03175227 /MAFH2
parent8055c1f3479c83d3e1c6642651755fb346d75cd1 (diff)
Made additions to GameEngine.py to expect draw.dirtyList[] objects to be returned and appended to a master __dirtyList in GameEngine, which will then pygame.display.update(__dirtyList) which should improve framerates with numerous static images on screen at the same time.
Diffstat (limited to 'MAFH2')
-rw-r--r--MAFH2/BattleEngine.py29
-rw-r--r--MAFH2/Dungeon.py2
-rw-r--r--MAFH2/Enemy.py6
-rwxr-xr-xMAFH2/drawableobject/DrawableObject.py11
-rwxr-xr-xMAFH2/drawableobject/DynamicDrawableObject.py4
-rw-r--r--MAFH2/fortuneengine/GameEngine.py9
6 files changed, 38 insertions, 23 deletions
diff --git a/MAFH2/BattleEngine.py b/MAFH2/BattleEngine.py
index 8a0da13..98e9b0a 100644
--- a/MAFH2/BattleEngine.py
+++ b/MAFH2/BattleEngine.py
@@ -2,9 +2,10 @@ from fortuneengine.GameEngineElement import GameEngineElement
from Enemy import get_enemy
from BattleMenu import BattleMenuHolder
from MagicMenu import MagicMenuHolder
-from AnimatedSprite import Spritesheet
+from drawableobject.Spritesheet import Spritesheet
from Items import get_item
-from drawableobject import DrawableObject, DynamicDrawableObject, Spritesheet
+from drawableobject.DrawableObject import DrawableObject
+from drawableobject.DynamicDrawableObject import DynamicDrawableObject
import pygame
from constants import CHAR_PATH, HUD_PATH
@@ -14,6 +15,7 @@ import random
PLAYER_WAIT = 1
PLAYER_MULT = 2
+_dirtyList=[]
class BattleEngine(GameEngineElement):
def __init__(self, dgn):
@@ -372,24 +374,31 @@ class BattleEngine(GameEngineElement):
# \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/
#
def draw(self,screen,time_delta):
+ _dirtyList=[]
x=250
y=150
i = 1
-
+
tick_time = pygame.time.get_ticks()
# Draw Enemy and Item Selection
for enemy in self.enemy_list:
- if enemy.alive:
- if self.active_target == i:
- screen.blit(self.__images['arrow_select'], (x+(i*200),y-25))
- enemy.sprite.update( tick_time )
- screen.blit(enemy.sprite.image, (x+(i*200),y))
- i = i+1
+ if enemy.alive and self.active_target == i:
+# screen.blit(self.__images['arrow_select'], (x+(i*200),y-25)) #1 orig
+ _dirtyList.append(self.__images['arrow_select'].get_rect().move((x+(i*200),y-25))) #1 new
+ enemy.sprite.updateAnim( tick_time ) #2 orig
+# screen.blit(enemy.sprite.image, (x+(i*200),y) ) #3 orig
+ _dirtyList.append(enemy.sprite.image.get_rect().move( (x+(i*200),y) )) #3 new
+ i = i+1
# Draw Hud
profile = self.game_engine.get_object('profile')
# Player Health
health = 10 - profile.hero.healthLevel()
- screen.blit(self.__images['hp'][health], (25,25))
+# screen.blit(self.__images['hp'][health], (25,25)) #4 orig
+ _dirtyList.append( self.__images['hp'][health].get_rect().move((25,25)) ) #4 new
+ enemy.sprite.updateAnim( tick_time ) #2 new
+ #what the hell does ^^ do??
+# pygame.display.update(_dirtyList) #5 new
+ return _dirtyList
diff --git a/MAFH2/Dungeon.py b/MAFH2/Dungeon.py
index 620ad96..a246f5c 100644
--- a/MAFH2/Dungeon.py
+++ b/MAFH2/Dungeon.py
@@ -295,7 +295,7 @@ class Dungeon(GameEngineElement):
# Draw Items
img_list = []
- for i in range( dir, (dir + 4) ):p
+ for i in range( dir, (dir + 4) ):
#imod for room rotation
imod = i % 4
diff --git a/MAFH2/Enemy.py b/MAFH2/Enemy.py
index 21c3950..8250800 100644
--- a/MAFH2/Enemy.py
+++ b/MAFH2/Enemy.py
@@ -1,10 +1,12 @@
from gettext import gettext as _
from constants import CHAR_PATH
+#from drawableobject.DrawableObject import DrawableObject
+from drawableobject.DynamicDrawableObject import DynamicDrawableObject
class InvalidEnemyException(Exception): pass
import pygame
from Actor import Actor
-from AnimatedSprite import Spritesheet, AnimatedSprite
+from drawableobject.Spritesheet import Spritesheet
ENEMY = {
'1':{'name':_('Wizard Adept'),'img':"anim_test.gif",'hp':20,'att':2,'weak':'special', 'sprite':(3,2, 156,166)}, #concept_wizard.gif , (1,1, 181,365)
'2':{'name':_('Goblin'),'img':"dog~.gif",'hp':40,'att':3,'weak':'fire','sprite':(2,1, 58/2,39)}, #concept_goblin.gif , (1,1, 217,317)
@@ -30,7 +32,7 @@ class Enemy(Actor):
self.inv_Ar = []
self.attacks_Ar = []
col,row,width,height = ENEMY[id]['sprite']
- self.sprite=AnimatedSprite(Spritesheet(CHAR_PATH + ENEMY[id]['img']).img_extract(col,row,width,height))
+ self.sprite = DynamicDrawableObject( Spritesheet(CHAR_PATH + ENEMY[id]['img'] ).img_extract(col,row,width,height) , "")
self.place=0
self.alive = True
diff --git a/MAFH2/drawableobject/DrawableObject.py b/MAFH2/drawableobject/DrawableObject.py
index d3f0f0f..d4054af 100755
--- a/MAFH2/drawableobject/DrawableObject.py
+++ b/MAFH2/drawableobject/DrawableObject.py
@@ -2,7 +2,7 @@ import pygame
class DrawableObject(pygame.sprite.Sprite):
- def __init__(self,images,textfileName,fps = 10, x = 0, y = 0, xVelocity = 0, yVelocity = 0):
+ def __init__(self,images,textfileName,fps = 2, x = 0, y = 0, xVelocity = 0, yVelocity = 0):
pygame.sprite.Sprite.__init__(self)
cnt = 0
@@ -11,9 +11,10 @@ class DrawableObject(pygame.sprite.Sprite):
self._images = []
self._origImages = []
while cnt < len(images):
- self._images.append(images[cnt][0].convert())
- self._origImages.append(images[cnt][0].convert())
+ self._images.append(images[cnt].convert())
+ self._origImages.append(images[cnt].convert())
cnt += 1
+ self.image = self._images[0]
self._start = pygame.time.get_ticks()
self._delay = 1000 / fps
self._last_update = 0
@@ -132,14 +133,14 @@ class DrawableObject(pygame.sprite.Sprite):
def calcColorKey(self):
- myColorKey = images[0][0].get_at((0,0))
+ myColorKey = images[0].get_at((0,0))
setColorKey(myColorKey)
def setColorKey(self, aColor):
cnt = 0
while cnt < len(self._images):
- self._images[cnt][0].set_colorkey(aColor)
+ self._images[cnt].set_colorkey(aColor)
cnt += 1
def update(self, t):
diff --git a/MAFH2/drawableobject/DynamicDrawableObject.py b/MAFH2/drawableobject/DynamicDrawableObject.py
index 3b3722d..aaf518b 100755
--- a/MAFH2/drawableobject/DynamicDrawableObject.py
+++ b/MAFH2/drawableobject/DynamicDrawableObject.py
@@ -3,7 +3,7 @@ from DrawableObject import DrawableObject
class DynamicDrawableObject(DrawableObject, pygame.sprite.Sprite):
- def __init__(self,images,textfileName,fps = 10, x = 0, y = 0, xVelocity = 0, yVelocity = 0):
+ def __init__(self,images,textfileName,fps = 2, x = 0, y = 0, xVelocity = 0, yVelocity = 0):
DrawableObject.__init__(self, images, textfileName, fps, x, y, xVelocity, yVelocity)
@@ -11,7 +11,7 @@ class DynamicDrawableObject(DrawableObject, pygame.sprite.Sprite):
self._images.extend(images)
- def update(self, t):
+ def updateAnim(self, t):
timePassed = t + self._last_update
if timePassed > self._delay:
diff --git a/MAFH2/fortuneengine/GameEngine.py b/MAFH2/fortuneengine/GameEngine.py
index 2e373db..25ce0c3 100644
--- a/MAFH2/fortuneengine/GameEngine.py
+++ b/MAFH2/fortuneengine/GameEngine.py
@@ -62,6 +62,7 @@ class GameEngine(object):
self.__event_cb = []
self.__draw_lst = []
self.__object_hold = {}
+ self.__dirtyList=[]
# Game Timers
self.__active_event_timers = []
@@ -200,9 +201,10 @@ class GameEngine(object):
pygame.display.flip()
else:
+ __dirtyList=[]
for fnc in self.__draw_lst:
start = time()
- fnc(screen, tick_time)
+ __dirtyList.append(fnc(screen, tick_time))
self.__draw_time[str(fnc)] += time() - start
self.__draw_calls[str(fnc)] += 1
@@ -210,9 +212,10 @@ class GameEngine(object):
if self.__showfps:
text = self.__font.render('FPS: %d' % self.clock.get_fps(),
False, (255, 255, 255), (159, 182, 205))
- screen.blit(text, (0, 0))
+# screen.blit(text, (0, 0))
+ __dirtyList.append(text.get_rect())
- pygame.display.flip()
+ pygame.display.update(__dirtyList)
def _event_loop(self):
"""