Mercurial > parpg-core
diff src/parpg/controllerbase.py @ 0:1fd2201f5c36
Initial commit of parpg-core.
author | M. George Hansen <technopolitica@gmail.com> |
---|---|
date | Sat, 14 May 2011 01:12:35 -0700 |
parents | |
children | d60f1dab8469 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/parpg/controllerbase.py Sat May 14 01:12:35 2011 -0700 @@ -0,0 +1,99 @@ +# This file is part of PARPG. + +# PARPG 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. + +# PARPG 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 PARPG. If not, see <http://www.gnu.org/licenses/>. +import os +from fife import fife + +from parpg.common.listeners.key_listener import KeyListener +from parpg.common.listeners.mouse_listener import MouseListener +from parpg.common.listeners.command_listener import CommandListener + +class ControllerBase(KeyListener, MouseListener, CommandListener): + """Base of Controllers""" + def __init__(self, + engine, + view, + model, + application): + ''' + Constructor + @param engine: Instance of the active fife engine + @type engine: fife.Engine + @param view: Instance of a GameSceneView + @param type: parpg.GameSceneView + @param model: The model that has the current gamestate + @type model: parpg.GameModel + @param application: The application that created this controller + @type application: parpg.PARPGApplication + @param settings: The current settings of the application + @type settings: fife.extensions.fife_settings.Setting + ''' + KeyListener.__init__(self, application.event_listener) + MouseListener.__init__(self, application.event_listener) + CommandListener.__init__(self, application.event_listener) + self.engine = engine + self.event_manager = engine.getEventManager() + self.view = view + self.model = model + self.application = application + + def pause(self, paused): + """Stops receiving events""" + if paused: + KeyListener.detach(self) + MouseListener.detach(self) + else: + KeyListener.attach(self, self.application.event_listener) + MouseListener.attach(self, self.application.event_listener) + + def setMouseCursor(self, image, dummy_image, mc_type="native"): + """Set the mouse cursor to an image. + @type image: string + @param image: The image you want to set the cursor to + @type dummy_image: string + @param dummy_image: ??? + @type type: string + @param type: ??? + @return: None""" + cursor = self.engine.getCursor() + cursor_type = fife.CURSOR_IMAGE + img_pool = self.engine.getImagePool() + if(mc_type == "target"): + target_cursor_id = img_pool.addResourceFromFile(image) + dummy_cursor_id = img_pool.addResourceFromFile(dummy_image) + cursor.set(cursor_type, dummy_cursor_id) + cursor.setDrag(cursor_type, target_cursor_id, -16, -16) + else: + cursor_type = fife.CURSOR_IMAGE + zero_cursor_id = img_pool.addResourceFromFile(image) + cursor.set(cursor_type, zero_cursor_id) + cursor.setDrag(cursor_type, zero_cursor_id) + + def resetMouseCursor(self): + """Reset cursor to default image. + @return: None""" + image = os.path.join(self.model.settings.system_path, + self.model.settings.parpg.GuiPath, + self.model.settings.parpg.CursorPath, + self.model.settings.parpg.CursorDefault) + self.setMouseCursor(image, image) + + def onStop(self): + """Called when the controller is removed from the list""" + pass + + def pump(self): + """This method gets called every frame""" + pass +