Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJustin Lewis <jlew@NightFury.(none)>2010-06-09 15:08:42 (GMT)
committer Justin Lewis <jlew@NightFury.(none)>2010-06-09 15:08:42 (GMT)
commitb6a4d0c856485c03152e919d5e0a91ea23488cc8 (patch)
tree883b931d39cc058ef195e6ec86ea0b182230f2d2
parentb08f68ac3c1c587a478543152df8388e2d960b93 (diff)
Converted fortune engine to a module. Closes ticket #8
-rw-r--r--MAFH2/BattleEngine.py2
-rw-r--r--MAFH2/BattleMenu.py2
-rw-r--r--MAFH2/Comic.py2
-rw-r--r--MAFH2/Dungeon.py2
-rw-r--r--MAFH2/MafhActivity.py2
-rw-r--r--MAFH2/MafhGameManager.py2
-rw-r--r--MAFH2/MafhGameMenu.py2
-rw-r--r--MAFH2/Map.py2
-rw-r--r--MAFH2/Profile.py2
-rw-r--r--MAFH2/TermBox.py2
-rw-r--r--MAFH2/fortuneengine/GameEngine.py174
-rw-r--r--MAFH2/fortuneengine/GameEngineElement.py37
-rw-r--r--MAFH2/fortuneengine/__init__.py0
13 files changed, 221 insertions, 10 deletions
diff --git a/MAFH2/BattleEngine.py b/MAFH2/BattleEngine.py
index 3d0505b..97e28d5 100644
--- a/MAFH2/BattleEngine.py
+++ b/MAFH2/BattleEngine.py
@@ -1,4 +1,4 @@
-from GameEngine import GameEngineElement
+from fortuneengine.GameEngineElement import GameEngineElement
from Enemy import get_enemy
from BattleMenu import BattleMenuHolder
from AnimatedSprite import Spritesheet
diff --git a/MAFH2/BattleMenu.py b/MAFH2/BattleMenu.py
index 84e2b4f..7f84daa 100644
--- a/MAFH2/BattleMenu.py
+++ b/MAFH2/BattleMenu.py
@@ -1,5 +1,5 @@
import pygame
-from GameEngine import GameEngineElement
+from fortuneengine.GameEngineElement import GameEngineElement
from constants import MENU_PATH
from gettext import gettext as _
diff --git a/MAFH2/Comic.py b/MAFH2/Comic.py
index 8b1f919..485d365 100644
--- a/MAFH2/Comic.py
+++ b/MAFH2/Comic.py
@@ -1,6 +1,6 @@
import pygame
import os
-from GameEngine import GameEngineElement
+from fortuneengine.GameEngineElement import GameEngineElement
######################################################################
#Comic Class: stores an image list and possible BGM, traverses through list and tries to play BGM
######################################################################
diff --git a/MAFH2/Dungeon.py b/MAFH2/Dungeon.py
index 4c3cbf0..843637d 100644
--- a/MAFH2/Dungeon.py
+++ b/MAFH2/Dungeon.py
@@ -3,7 +3,7 @@ import os.path
from time import time
from gettext import gettext as _
-from GameEngine import GameEngineElement
+from fortuneengine.GameEngineElement import GameEngineElement
from BattleEngine import BattleEngine
from Map import Map
diff --git a/MAFH2/MafhActivity.py b/MAFH2/MafhActivity.py
index 84a64a0..39b6108 100644
--- a/MAFH2/MafhActivity.py
+++ b/MAFH2/MafhActivity.py
@@ -1,4 +1,4 @@
-from GameEngine import GameEngine
+from fortuneengine.GameEngine import GameEngine
from MafhGameMenu import GameMenuHolder
from constants import MENU_PATH, FMC_PATH, TOUR_PATH
diff --git a/MAFH2/MafhGameManager.py b/MAFH2/MafhGameManager.py
index 2c26903..676c536 100644
--- a/MAFH2/MafhGameManager.py
+++ b/MAFH2/MafhGameManager.py
@@ -1,6 +1,6 @@
import pygame
-from GameEngine import GameEngineElement
+from fortuneengine.GameEngineElement import GameEngineElement
from TermBox import TermBox
from Dungeon import Dungeon
diff --git a/MAFH2/MafhGameMenu.py b/MAFH2/MafhGameMenu.py
index ae146b2..3ed27dd 100644
--- a/MAFH2/MafhGameMenu.py
+++ b/MAFH2/MafhGameMenu.py
@@ -1,5 +1,5 @@
import pygame, ezmenu
-from GameEngine import GameEngineElement
+from fortuneengine.GameEngineElement import GameEngineElement
class GameMenuHolder( GameEngineElement ):
def __init__(self, callback, background=None, width=1200, height=900):
diff --git a/MAFH2/Map.py b/MAFH2/Map.py
index cfe3a17..878cbfe 100644
--- a/MAFH2/Map.py
+++ b/MAFH2/Map.py
@@ -5,7 +5,7 @@ from constants import (
NORTH, EAST, WEST, SOUTH,UNLOCKED_DOOR, LOCKED_DOOR, PUZZLE_DOOR,
LOCKED_PUZZLE_DOOR, ENTRANCE_DOOR, EXIT_DOOR
)
-from GameEngine import GameEngineElement
+from fortuneengine.GameEngineElement import GameEngineElement
from gettext import gettext as _
diff --git a/MAFH2/Profile.py b/MAFH2/Profile.py
index 5f801c0..04d8d9d 100644
--- a/MAFH2/Profile.py
+++ b/MAFH2/Profile.py
@@ -1,6 +1,6 @@
import pygame
-from GameEngine import GameEngineElement
+from fortuneengine.GameEngineElement import GameEngineElement
from constants import MENU_PATH, NORTH, SOUTH, EAST, WEST, RIGHT, LEFT
from Hero import Hero
diff --git a/MAFH2/TermBox.py b/MAFH2/TermBox.py
index c9d09f8..620b29c 100644
--- a/MAFH2/TermBox.py
+++ b/MAFH2/TermBox.py
@@ -1,5 +1,5 @@
import pygame
-from GameEngine import GameEngineElement
+from fortuneengine.GameEngineElement import GameEngineElement
class TermBox(GameEngineElement):
def __init__(self, x,y,width,height,lines):
GameEngineElement.__init__(self, has_draw=True, has_event=False)
diff --git a/MAFH2/fortuneengine/GameEngine.py b/MAFH2/fortuneengine/GameEngine.py
new file mode 100644
index 0000000..befdf0f
--- /dev/null
+++ b/MAFH2/fortuneengine/GameEngine.py
@@ -0,0 +1,174 @@
+import pygame
+
+class GameEngine(object):
+ instance = None
+ def __init__(self, width=1200, height=900):
+ GameEngine.instance = self
+ pygame.init()
+ pygame.mouse.set_visible(False)
+
+ self.width = width
+ self.height = height
+ size = width, height
+
+ self.screen = pygame.display.set_mode(size)
+
+ self.__event_cb = []
+ self.__draw_lst = []
+ self.__object_hold = {}
+
+ self.clock = pygame.time.Clock()
+
+ def start_event_timer(self, id, time):
+ pygame.time.set_timer(pygame.USEREVENT + id, time)
+
+ def stop_event_timer(self, id):
+ pygame.time.set_timer(pygame.USEREVENT + id, 0)
+
+ def start_event_loop(self):
+ """
+ Starts the pygame event loop.
+ """
+ self.__run = True
+ pygame.event.set_blocked(pygame.MOUSEMOTION)
+ while self.__run:
+ self.clock.tick(15)
+ update_draw = False
+ for event in pygame.event.get():
+
+ if event.type == pygame.QUIT:
+ self.__run = False
+
+ else:
+ # Send event to all event listeners
+ # Make a copy first so that adding events don't get fired right away
+ list_cp = self.__event_cb[:]
+
+ # Reverse list so that newest stuff is on top
+ list_cp.reverse()
+
+ for cb in list_cp:
+ # Fire the event for all in cb and stop if return True
+ if cb(event) == True:
+ update_draw = True
+ break
+
+ if update_draw:
+ self.draw()
+ #~ print "\n\n"
+ #~ print "Event Listeners:"
+ #~ for eventlst in self.__event_cb:
+ #~ print "\t",eventlst
+
+ #~ print "\nDraw Callbacks:"
+ #~ for eventlst in self.__draw_lst:
+ #~ print "\t",eventlst
+
+ #~ print "\nObjects Registered:"
+ #~ for eventlst in self.__object_hold:
+ #~ print "\t",eventlst
+
+ def stop_event_loop(self):
+ """
+ Sends a pygame.QUIT event into the event queue which exits the event loop
+ """
+ pygame.event.post(pygame.event.Event(pygame.QUIT))
+
+ def draw(self):
+ """
+ Calls draw on the draw callback stack then calls the pygame flip command
+ """
+ for fnc in self.__draw_lst:
+ fnc(self.screen)
+ pygame.display.flip()
+
+ def add_event_callback(self, cb):
+ """
+ Adds event callback to the event callback stack
+
+ @param cb Callback to be added to the stack when events are fired
+ """
+ self.__event_cb.append( cb )
+
+ def remove_event_callback(self, cb):
+ """
+ Removes an event from the event callback stack
+
+ @param cb The callback to remove from the event callback stack
+ @return Returns true if sucessful in removing callback
+ """
+ try:
+ self.__event_cb.remove( cb )
+ return True
+ except:
+ return False
+
+ def add_draw_callback(self, fnc):
+ """
+ Adds a callback to the draw list. Function will be passed the game screen
+
+ @param fnc The funciton to call when system is drawing
+ """
+ self.__draw_lst.append( fnc )
+
+ def pop_draw_callback(self):
+ """
+ Removes top of draw stack and returns it
+
+ @return Returns the top callback function that was removed
+ """
+ return self.__draw_lst.pop()
+
+ def clear_draw_callback(self):
+ """
+ Empties draw callback stack
+ """
+ self.__draw_lst = []
+
+ def remove_draw_callback(self, fnc):
+ """
+ Removes a draw callback from the game engine draw function
+
+ @param fnc The callback function to remove
+ @return Returns true if sucessful removal of the function
+ """
+ try:
+ self.__draw_lst.remove(fnc)
+ return True
+ except:
+ return False
+
+ def has_object(self, name):
+ """
+ Returns true if object is stored in game engine
+
+ @param name Name of the object to check if exists
+ @return Returns true if object found
+ """
+ return self.__object_hold.has_key( name )
+
+ def add_object(self, name, obj):
+ """
+ Adds an object to the game engine datastore
+
+ @param name The name used to store the object
+ @param obj The object to store
+ """
+ self.__object_hold[name] = obj
+
+ def get_object(self, name):
+ """
+ Returns an object from the game engine datastore
+
+ @param name The name of object to return
+ @return Returns the object
+ """
+ return self.__object_hold[name]
+
+ def remove_object(self, name):
+ """
+ Removes an object from the game engine datastore
+
+ @param name The name of the object to remove
+ """
+ del self.__object_hold[name]
diff --git a/MAFH2/fortuneengine/GameEngineElement.py b/MAFH2/fortuneengine/GameEngineElement.py
new file mode 100644
index 0000000..2ef8302
--- /dev/null
+++ b/MAFH2/fortuneengine/GameEngineElement.py
@@ -0,0 +1,37 @@
+from fortuneengine.GameEngine import GameEngine
+
+class GameEngineElement(object):
+ def __init__(self, has_draw=True, has_event=True):
+ self.__has_draw = has_draw
+ self.__has_event = has_event
+ self.__in_engine = False
+ self.game_engine = GameEngine.instance
+
+ def is_in_engine(self):
+ return self.__in_engine
+
+ def add_to_engine(self):
+ if not self.__in_engine:
+ self.__in_engine = True
+
+ if self.__has_draw:
+ self.game_engine.add_draw_callback( self.draw )
+
+ if self.__has_event:
+ self.game_engine.add_event_callback( self.event_handler )
+
+ def remove_from_engine(self):
+ if self.__in_engine:
+ self.__in_engine = False
+
+ if self.__has_draw:
+ self.game_engine.remove_draw_callback(self.draw)
+
+ if self.__has_event:
+ self.game_engine.remove_event_callback( self.event_handler )
+
+ def event_handler(self, event):
+ pass
+
+ def draw(self, screen):
+ pass
diff --git a/MAFH2/fortuneengine/__init__.py b/MAFH2/fortuneengine/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/MAFH2/fortuneengine/__init__.py