Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/MAFH2/fortuneengine/fortuneengine/GameEngineElement.py
diff options
context:
space:
mode:
Diffstat (limited to 'MAFH2/fortuneengine/fortuneengine/GameEngineElement.py')
-rw-r--r--MAFH2/fortuneengine/fortuneengine/GameEngineElement.py109
1 files changed, 109 insertions, 0 deletions
diff --git a/MAFH2/fortuneengine/fortuneengine/GameEngineElement.py b/MAFH2/fortuneengine/fortuneengine/GameEngineElement.py
new file mode 100644
index 0000000..3f51f2f
--- /dev/null
+++ b/MAFH2/fortuneengine/fortuneengine/GameEngineElement.py
@@ -0,0 +1,109 @@
+# FortuneEngine is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# FortuneEngine is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with the FortuneEngine. If not, see <http://www.gnu.org/licenses/>.
+#
+# Author: Justin Lewis <jlew.blackout@gmail.com>
+
+from fortuneengine.GameEngine import GameEngine
+#from fortuneengine.DrawableFontObject import DrawableFontObject
+#from fortuneengine.DrawableObject import DrawableObject
+#from fortuneengine.DynamicDrawableObject import DynamicDrawableObject
+
+
+class GameEngineElement(object):
+ """
+ The GameEngineElement is a helper object that can be extended by
+ other classes. When the class is extended, it will automatically
+ register its self for the event and draw loops with the game engine.
+ """
+
+ def __init__(self, has_draw=True, has_event=True):
+ """
+ Default constructor for GameEngineElement
+
+ @param has_draw: boolean to signify if element should be drawn
+ @param has_event: boolean to signify whether the element should be
+ given events from the queue
+ """
+ self.__has_draw = has_draw
+ self.__has_event = has_event
+ self.__in_engine = False
+ self.game_engine = GameEngine.instance
+ self.__ddo_list = []
+
+ def is_in_engine(self):
+ """
+ Returns true if object has been registered with the game engine.
+ """
+ return self.__in_engine
+
+ def add_to_scene(self, objects):
+ """
+ Adds some objects to the DynamicDrawableObject list and the
+ game engine's scene.
+
+ @param objects: A list of DynamicDrawableObjects
+ """
+
+ self.game_engine.get_scene().addObjects(objects)
+ self.__ddo_list += objects
+
+ def add_to_engine(self):
+ """
+ Registers the object with the game engine. Registers draw and event
+ call backs separately if they were set to true in the constructor.
+ """
+ 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):
+ """
+ Removes the object from the correct queues in the engine
+ """
+ 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)
+
+ if not (self.__ddo_list == []):
+ for object in self.__ddo_list:
+ self.game_engine.get_scene().removeObject(object)
+
+
+ def event_handler(self, event):
+ """
+ This method should be overridden by the user-specified class that
+ extends this GameEngineElement class. This method specifies how that
+ class will handle events given to it by the engine.
+
+ @return: true if the user wants to prevent the event from
+ continuing down the queue
+ """
+ pass
+
+ def draw(self, screen):
+ """
+ This method should be overridden by the user-specified class that
+ extends this GameEngineElement class. This method specifies how the
+ class will be drawn.
+ """
+ pass