annotate demos/rpg/scripts/gamecontroller.py @ 513:edf5c0cf52f3

Added the Actor and Player classes. Actor is the base class that the player and all enemies + NPCs will inherit. Added a help file for the console. Added a KeyState class for keeping track of the state of the keys.
author prock@33b003aa-7bff-0310-803a-e67f0ece8222
date Fri, 21 May 2010 20:33:43 +0000
parents 6ddb1eb9dfa6
children d70fc46c8aa5
rev   line source
509
3951042a701e Adding the RPG demo. This is basically empty at the moment. Currently it will start with a black screen.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
1 #!/usr/bin/env python
3951042a701e Adding the RPG demo. This is basically empty at the moment. Currently it will start with a black screen.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
2
3951042a701e Adding the RPG demo. This is basically empty at the moment. Currently it will start with a black screen.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
3 # -*- coding: utf-8 -*-
3951042a701e Adding the RPG demo. This is basically empty at the moment. Currently it will start with a black screen.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
4
3951042a701e Adding the RPG demo. This is basically empty at the moment. Currently it will start with a black screen.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
5 # ####################################################################
3951042a701e Adding the RPG demo. This is basically empty at the moment. Currently it will start with a black screen.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
6 # Copyright (C) 2005-2010 by the FIFE team
3951042a701e Adding the RPG demo. This is basically empty at the moment. Currently it will start with a black screen.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
7 # http://www.fifengine.net
3951042a701e Adding the RPG demo. This is basically empty at the moment. Currently it will start with a black screen.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
8 # This file is part of FIFE.
3951042a701e Adding the RPG demo. This is basically empty at the moment. Currently it will start with a black screen.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
9 #
3951042a701e Adding the RPG demo. This is basically empty at the moment. Currently it will start with a black screen.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
10 # FIFE is free software; you can redistribute it and/or
3951042a701e Adding the RPG demo. This is basically empty at the moment. Currently it will start with a black screen.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
11 # modify it under the terms of the GNU Lesser General Public
3951042a701e Adding the RPG demo. This is basically empty at the moment. Currently it will start with a black screen.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
12 # License as published by the Free Software Foundation; either
3951042a701e Adding the RPG demo. This is basically empty at the moment. Currently it will start with a black screen.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
13 # version 2.1 of the License, or (at your option) any later version.
3951042a701e Adding the RPG demo. This is basically empty at the moment. Currently it will start with a black screen.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
14 #
3951042a701e Adding the RPG demo. This is basically empty at the moment. Currently it will start with a black screen.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
15 # This library is distributed in the hope that it will be useful,
3951042a701e Adding the RPG demo. This is basically empty at the moment. Currently it will start with a black screen.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
16 # but WITHOUT ANY WARRANTY; without even the implied warranty of
3951042a701e Adding the RPG demo. This is basically empty at the moment. Currently it will start with a black screen.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
17 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
3951042a701e Adding the RPG demo. This is basically empty at the moment. Currently it will start with a black screen.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
18 # Lesser General Public License for more details.
3951042a701e Adding the RPG demo. This is basically empty at the moment. Currently it will start with a black screen.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
19 #
3951042a701e Adding the RPG demo. This is basically empty at the moment. Currently it will start with a black screen.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
20 # You should have received a copy of the GNU Lesser General Public
3951042a701e Adding the RPG demo. This is basically empty at the moment. Currently it will start with a black screen.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
21 # License along with this library; if not, write to the
3951042a701e Adding the RPG demo. This is basically empty at the moment. Currently it will start with a black screen.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
22 # Free Software Foundation, Inc.,
3951042a701e Adding the RPG demo. This is basically empty at the moment. Currently it will start with a black screen.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
23 # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
3951042a701e Adding the RPG demo. This is basically empty at the moment. Currently it will start with a black screen.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
24 # ####################################################################
3951042a701e Adding the RPG demo. This is basically empty at the moment. Currently it will start with a black screen.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
25 # This is the rio de hola client for FIFE.
3951042a701e Adding the RPG demo. This is basically empty at the moment. Currently it will start with a black screen.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
26
3951042a701e Adding the RPG demo. This is basically empty at the moment. Currently it will start with a black screen.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
27 import sys, os, re, math, random, shutil
3951042a701e Adding the RPG demo. This is basically empty at the moment. Currently it will start with a black screen.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
28
3951042a701e Adding the RPG demo. This is basically empty at the moment. Currently it will start with a black screen.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
29 from fife import fife
3951042a701e Adding the RPG demo. This is basically empty at the moment. Currently it will start with a black screen.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
30
512
6ddb1eb9dfa6 Added the Scene which loads the town map. It is no longer a black screen demo.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 510
diff changeset
31 from scripts.scene import Scene
510
cd959b05a262 There is now a main menu. You can also view the credits. Taking a screenshot and opening the console should also work.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 509
diff changeset
32 from scripts.guicontroller import GUIController
cd959b05a262 There is now a main menu. You can also view the credits. Taking a screenshot and opening the console should also work.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 509
diff changeset
33
513
edf5c0cf52f3 Added the Actor and Player classes. Actor is the base class that the player and all enemies + NPCs will inherit.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 512
diff changeset
34 class KeyState(object):
edf5c0cf52f3 Added the Actor and Player classes. Actor is the base class that the player and all enemies + NPCs will inherit.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 512
diff changeset
35 def __init__(self):
edf5c0cf52f3 Added the Actor and Player classes. Actor is the base class that the player and all enemies + NPCs will inherit.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 512
diff changeset
36 self._keystate = { }
edf5c0cf52f3 Added the Actor and Player classes. Actor is the base class that the player and all enemies + NPCs will inherit.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 512
diff changeset
37
edf5c0cf52f3 Added the Actor and Player classes. Actor is the base class that the player and all enemies + NPCs will inherit.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 512
diff changeset
38 def updateKey(self, key, state):
edf5c0cf52f3 Added the Actor and Player classes. Actor is the base class that the player and all enemies + NPCs will inherit.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 512
diff changeset
39 self._keystate[key] = state
edf5c0cf52f3 Added the Actor and Player classes. Actor is the base class that the player and all enemies + NPCs will inherit.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 512
diff changeset
40
edf5c0cf52f3 Added the Actor and Player classes. Actor is the base class that the player and all enemies + NPCs will inherit.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 512
diff changeset
41 def checkKey(self, key):
edf5c0cf52f3 Added the Actor and Player classes. Actor is the base class that the player and all enemies + NPCs will inherit.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 512
diff changeset
42 if key in self._keystate:
edf5c0cf52f3 Added the Actor and Player classes. Actor is the base class that the player and all enemies + NPCs will inherit.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 512
diff changeset
43 return self._keystate[key]
edf5c0cf52f3 Added the Actor and Player classes. Actor is the base class that the player and all enemies + NPCs will inherit.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 512
diff changeset
44 else:
edf5c0cf52f3 Added the Actor and Player classes. Actor is the base class that the player and all enemies + NPCs will inherit.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 512
diff changeset
45 return False
edf5c0cf52f3 Added the Actor and Player classes. Actor is the base class that the player and all enemies + NPCs will inherit.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 512
diff changeset
46
edf5c0cf52f3 Added the Actor and Player classes. Actor is the base class that the player and all enemies + NPCs will inherit.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 512
diff changeset
47 def reset(self):
edf5c0cf52f3 Added the Actor and Player classes. Actor is the base class that the player and all enemies + NPCs will inherit.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 512
diff changeset
48 self._keystate.clear()
edf5c0cf52f3 Added the Actor and Player classes. Actor is the base class that the player and all enemies + NPCs will inherit.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 512
diff changeset
49
512
6ddb1eb9dfa6 Added the Scene which loads the town map. It is no longer a black screen demo.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 510
diff changeset
50 class GameListener(fife.IKeyListener, fife.IMouseListener):
6ddb1eb9dfa6 Added the Scene which loads the town map. It is no longer a black screen demo.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 510
diff changeset
51 def __init__(self, gamecontroller):
6ddb1eb9dfa6 Added the Scene which loads the town map. It is no longer a black screen demo.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 510
diff changeset
52 self._engine = gamecontroller.engine
6ddb1eb9dfa6 Added the Scene which loads the town map. It is no longer a black screen demo.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 510
diff changeset
53 self._gamecontroller = gamecontroller
6ddb1eb9dfa6 Added the Scene which loads the town map. It is no longer a black screen demo.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 510
diff changeset
54 self._settings = gamecontroller.settings
6ddb1eb9dfa6 Added the Scene which loads the town map. It is no longer a black screen demo.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 510
diff changeset
55 self._eventmanager = self._engine.getEventManager()
6ddb1eb9dfa6 Added the Scene which loads the town map. It is no longer a black screen demo.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 510
diff changeset
56
6ddb1eb9dfa6 Added the Scene which loads the town map. It is no longer a black screen demo.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 510
diff changeset
57 fife.IMouseListener.__init__(self)
6ddb1eb9dfa6 Added the Scene which loads the town map. It is no longer a black screen demo.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 510
diff changeset
58 self._eventmanager.addMouseListener(self)
6ddb1eb9dfa6 Added the Scene which loads the town map. It is no longer a black screen demo.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 510
diff changeset
59
6ddb1eb9dfa6 Added the Scene which loads the town map. It is no longer a black screen demo.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 510
diff changeset
60 fife.IKeyListener.__init__(self)
6ddb1eb9dfa6 Added the Scene which loads the town map. It is no longer a black screen demo.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 510
diff changeset
61 self._eventmanager.addKeyListener(self)
6ddb1eb9dfa6 Added the Scene which loads the town map. It is no longer a black screen demo.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 510
diff changeset
62
6ddb1eb9dfa6 Added the Scene which loads the town map. It is no longer a black screen demo.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 510
diff changeset
63 self._attached = False
6ddb1eb9dfa6 Added the Scene which loads the town map. It is no longer a black screen demo.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 510
diff changeset
64
6ddb1eb9dfa6 Added the Scene which loads the town map. It is no longer a black screen demo.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 510
diff changeset
65 def attach(self):
6ddb1eb9dfa6 Added the Scene which loads the town map. It is no longer a black screen demo.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 510
diff changeset
66 if not self._attached:
6ddb1eb9dfa6 Added the Scene which loads the town map. It is no longer a black screen demo.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 510
diff changeset
67 self._eventmanager.addMouseListenerFront(self)
6ddb1eb9dfa6 Added the Scene which loads the town map. It is no longer a black screen demo.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 510
diff changeset
68 self._eventmanager.addKeyListenerFront(self)
6ddb1eb9dfa6 Added the Scene which loads the town map. It is no longer a black screen demo.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 510
diff changeset
69 self._attached = True
6ddb1eb9dfa6 Added the Scene which loads the town map. It is no longer a black screen demo.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 510
diff changeset
70
6ddb1eb9dfa6 Added the Scene which loads the town map. It is no longer a black screen demo.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 510
diff changeset
71 def detach(self):
6ddb1eb9dfa6 Added the Scene which loads the town map. It is no longer a black screen demo.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 510
diff changeset
72 if self._attached:
6ddb1eb9dfa6 Added the Scene which loads the town map. It is no longer a black screen demo.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 510
diff changeset
73 self._eventmanager.removeMouseListener(self)
6ddb1eb9dfa6 Added the Scene which loads the town map. It is no longer a black screen demo.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 510
diff changeset
74 self._eventmanager.removeKeyListener(self)
6ddb1eb9dfa6 Added the Scene which loads the town map. It is no longer a black screen demo.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 510
diff changeset
75 self._attached = False
6ddb1eb9dfa6 Added the Scene which loads the town map. It is no longer a black screen demo.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 510
diff changeset
76
6ddb1eb9dfa6 Added the Scene which loads the town map. It is no longer a black screen demo.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 510
diff changeset
77 def mousePressed(self, event):
6ddb1eb9dfa6 Added the Scene which loads the town map. It is no longer a black screen demo.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 510
diff changeset
78 pass
6ddb1eb9dfa6 Added the Scene which loads the town map. It is no longer a black screen demo.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 510
diff changeset
79 def mouseReleased(self, event):
6ddb1eb9dfa6 Added the Scene which loads the town map. It is no longer a black screen demo.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 510
diff changeset
80 pass
6ddb1eb9dfa6 Added the Scene which loads the town map. It is no longer a black screen demo.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 510
diff changeset
81 def mouseEntered(self, event):
6ddb1eb9dfa6 Added the Scene which loads the town map. It is no longer a black screen demo.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 510
diff changeset
82 pass
6ddb1eb9dfa6 Added the Scene which loads the town map. It is no longer a black screen demo.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 510
diff changeset
83 def mouseExited(self, event):
6ddb1eb9dfa6 Added the Scene which loads the town map. It is no longer a black screen demo.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 510
diff changeset
84 pass
6ddb1eb9dfa6 Added the Scene which loads the town map. It is no longer a black screen demo.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 510
diff changeset
85 def mouseClicked(self, event):
6ddb1eb9dfa6 Added the Scene which loads the town map. It is no longer a black screen demo.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 510
diff changeset
86 pass
6ddb1eb9dfa6 Added the Scene which loads the town map. It is no longer a black screen demo.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 510
diff changeset
87 def mouseWheelMovedUp(self, event):
6ddb1eb9dfa6 Added the Scene which loads the town map. It is no longer a black screen demo.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 510
diff changeset
88 pass
6ddb1eb9dfa6 Added the Scene which loads the town map. It is no longer a black screen demo.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 510
diff changeset
89 def mouseWheelMovedDown(self, event):
6ddb1eb9dfa6 Added the Scene which loads the town map. It is no longer a black screen demo.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 510
diff changeset
90 pass
6ddb1eb9dfa6 Added the Scene which loads the town map. It is no longer a black screen demo.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 510
diff changeset
91 def mouseMoved(self, event):
6ddb1eb9dfa6 Added the Scene which loads the town map. It is no longer a black screen demo.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 510
diff changeset
92 pass
6ddb1eb9dfa6 Added the Scene which loads the town map. It is no longer a black screen demo.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 510
diff changeset
93 def mouseDragged(self, event):
6ddb1eb9dfa6 Added the Scene which loads the town map. It is no longer a black screen demo.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 510
diff changeset
94 pass
6ddb1eb9dfa6 Added the Scene which loads the town map. It is no longer a black screen demo.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 510
diff changeset
95 def keyPressed(self, event):
6ddb1eb9dfa6 Added the Scene which loads the town map. It is no longer a black screen demo.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 510
diff changeset
96 keyval = event.getKey().getValue()
6ddb1eb9dfa6 Added the Scene which loads the town map. It is no longer a black screen demo.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 510
diff changeset
97 keystr = event.getKey().getAsString().lower()
6ddb1eb9dfa6 Added the Scene which loads the town map. It is no longer a black screen demo.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 510
diff changeset
98 if keyval == fife.Key.ESCAPE:
6ddb1eb9dfa6 Added the Scene which loads the town map. It is no longer a black screen demo.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 510
diff changeset
99 self.detach()
6ddb1eb9dfa6 Added the Scene which loads the town map. It is no longer a black screen demo.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 510
diff changeset
100 self._gamecontroller.guicontroller.showMainMenu()
6ddb1eb9dfa6 Added the Scene which loads the town map. It is no longer a black screen demo.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 510
diff changeset
101 event.consume()
513
edf5c0cf52f3 Added the Actor and Player classes. Actor is the base class that the player and all enemies + NPCs will inherit.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 512
diff changeset
102
edf5c0cf52f3 Added the Actor and Player classes. Actor is the base class that the player and all enemies + NPCs will inherit.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 512
diff changeset
103 self._gamecontroller.keystate.updateKey(keyval, True)
512
6ddb1eb9dfa6 Added the Scene which loads the town map. It is no longer a black screen demo.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 510
diff changeset
104
6ddb1eb9dfa6 Added the Scene which loads the town map. It is no longer a black screen demo.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 510
diff changeset
105 def keyReleased(self, event):
513
edf5c0cf52f3 Added the Actor and Player classes. Actor is the base class that the player and all enemies + NPCs will inherit.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 512
diff changeset
106 keyval = event.getKey().getValue()
edf5c0cf52f3 Added the Actor and Player classes. Actor is the base class that the player and all enemies + NPCs will inherit.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 512
diff changeset
107 keystr = event.getKey().getAsString().lower()
edf5c0cf52f3 Added the Actor and Player classes. Actor is the base class that the player and all enemies + NPCs will inherit.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 512
diff changeset
108
edf5c0cf52f3 Added the Actor and Player classes. Actor is the base class that the player and all enemies + NPCs will inherit.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 512
diff changeset
109 self._gamecontroller.keystate.updateKey(keyval, False)
edf5c0cf52f3 Added the Actor and Player classes. Actor is the base class that the player and all enemies + NPCs will inherit.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 512
diff changeset
110
512
6ddb1eb9dfa6 Added the Scene which loads the town map. It is no longer a black screen demo.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 510
diff changeset
111
509
3951042a701e Adding the RPG demo. This is basically empty at the moment. Currently it will start with a black screen.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
112 class GameController(object):
3951042a701e Adding the RPG demo. This is basically empty at the moment. Currently it will start with a black screen.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
113 def __init__(self, application, engine, settings):
3951042a701e Adding the RPG demo. This is basically empty at the moment. Currently it will start with a black screen.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
114 self._application = application
3951042a701e Adding the RPG demo. This is basically empty at the moment. Currently it will start with a black screen.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
115 self._engine = engine
3951042a701e Adding the RPG demo. This is basically empty at the moment. Currently it will start with a black screen.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
116 self._settings = settings
3951042a701e Adding the RPG demo. This is basically empty at the moment. Currently it will start with a black screen.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
117
513
edf5c0cf52f3 Added the Actor and Player classes. Actor is the base class that the player and all enemies + NPCs will inherit.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 512
diff changeset
118 self._keystate = KeyState()
edf5c0cf52f3 Added the Actor and Player classes. Actor is the base class that the player and all enemies + NPCs will inherit.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 512
diff changeset
119
512
6ddb1eb9dfa6 Added the Scene which loads the town map. It is no longer a black screen demo.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 510
diff changeset
120 self._guicontroller = GUIController(self)
6ddb1eb9dfa6 Added the Scene which loads the town map. It is no longer a black screen demo.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 510
diff changeset
121
6ddb1eb9dfa6 Added the Scene which loads the town map. It is no longer a black screen demo.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 510
diff changeset
122 self._listener = GameListener(self)
510
cd959b05a262 There is now a main menu. You can also view the credits. Taking a screenshot and opening the console should also work.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 509
diff changeset
123
cd959b05a262 There is now a main menu. You can also view the credits. Taking a screenshot and opening the console should also work.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 509
diff changeset
124 self._guicontroller.showMainMenu()
512
6ddb1eb9dfa6 Added the Scene which loads the town map. It is no longer a black screen demo.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 510
diff changeset
125
6ddb1eb9dfa6 Added the Scene which loads the town map. It is no longer a black screen demo.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 510
diff changeset
126 self._scene = None
510
cd959b05a262 There is now a main menu. You can also view the credits. Taking a screenshot and opening the console should also work.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 509
diff changeset
127
cd959b05a262 There is now a main menu. You can also view the credits. Taking a screenshot and opening the console should also work.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 509
diff changeset
128 def onConsoleCommand(self, command):
cd959b05a262 There is now a main menu. You can also view the credits. Taking a screenshot and opening the console should also work.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 509
diff changeset
129 """
512
6ddb1eb9dfa6 Added the Scene which loads the town map. It is no longer a black screen demo.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 510
diff changeset
130 Might be useful if you want to have the game parse a command.
6ddb1eb9dfa6 Added the Scene which loads the town map. It is no longer a black screen demo.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 510
diff changeset
131 Not sure if I am going to keep this or not.
510
cd959b05a262 There is now a main menu. You can also view the credits. Taking a screenshot and opening the console should also work.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 509
diff changeset
132 """
cd959b05a262 There is now a main menu. You can also view the credits. Taking a screenshot and opening the console should also work.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 509
diff changeset
133 result = ""
cd959b05a262 There is now a main menu. You can also view the credits. Taking a screenshot and opening the console should also work.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 509
diff changeset
134 return result
cd959b05a262 There is now a main menu. You can also view the credits. Taking a screenshot and opening the console should also work.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 509
diff changeset
135
cd959b05a262 There is now a main menu. You can also view the credits. Taking a screenshot and opening the console should also work.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 509
diff changeset
136 def newGame(self):
512
6ddb1eb9dfa6 Added the Scene which loads the town map. It is no longer a black screen demo.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 510
diff changeset
137 self._guicontroller.hideMainMenu()
6ddb1eb9dfa6 Added the Scene which loads the town map. It is no longer a black screen demo.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 510
diff changeset
138
513
edf5c0cf52f3 Added the Actor and Player classes. Actor is the base class that the player and all enemies + NPCs will inherit.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 512
diff changeset
139 self._keystate.reset()
edf5c0cf52f3 Added the Actor and Player classes. Actor is the base class that the player and all enemies + NPCs will inherit.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 512
diff changeset
140
512
6ddb1eb9dfa6 Added the Scene which loads the town map. It is no longer a black screen demo.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 510
diff changeset
141 if self._scene:
6ddb1eb9dfa6 Added the Scene which loads the town map. It is no longer a black screen demo.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 510
diff changeset
142 self._scene.destroyScene()
6ddb1eb9dfa6 Added the Scene which loads the town map. It is no longer a black screen demo.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 510
diff changeset
143 self._scene = None
6ddb1eb9dfa6 Added the Scene which loads the town map. It is no longer a black screen demo.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 510
diff changeset
144
6ddb1eb9dfa6 Added the Scene which loads the town map. It is no longer a black screen demo.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 510
diff changeset
145 self._scene = Scene(self)
6ddb1eb9dfa6 Added the Scene which loads the town map. It is no longer a black screen demo.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 510
diff changeset
146 self._scene.createScene(self._settings.get("RPG", "TownMapFile", "maps/town.xml"))
6ddb1eb9dfa6 Added the Scene which loads the town map. It is no longer a black screen demo.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 510
diff changeset
147
6ddb1eb9dfa6 Added the Scene which loads the town map. It is no longer a black screen demo.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 510
diff changeset
148 #start listening to events
6ddb1eb9dfa6 Added the Scene which loads the town map. It is no longer a black screen demo.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 510
diff changeset
149 self._listener.attach()
510
cd959b05a262 There is now a main menu. You can also view the credits. Taking a screenshot and opening the console should also work.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 509
diff changeset
150
513
edf5c0cf52f3 Added the Actor and Player classes. Actor is the base class that the player and all enemies + NPCs will inherit.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 512
diff changeset
151 def endGame(self):
edf5c0cf52f3 Added the Actor and Player classes. Actor is the base class that the player and all enemies + NPCs will inherit.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 512
diff changeset
152 if self._scene:
edf5c0cf52f3 Added the Actor and Player classes. Actor is the base class that the player and all enemies + NPCs will inherit.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 512
diff changeset
153 self._scene.destroyScene()
edf5c0cf52f3 Added the Actor and Player classes. Actor is the base class that the player and all enemies + NPCs will inherit.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 512
diff changeset
154 self._scene = None
edf5c0cf52f3 Added the Actor and Player classes. Actor is the base class that the player and all enemies + NPCs will inherit.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 512
diff changeset
155
510
cd959b05a262 There is now a main menu. You can also view the credits. Taking a screenshot and opening the console should also work.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 509
diff changeset
156 def quit(self):
513
edf5c0cf52f3 Added the Actor and Player classes. Actor is the base class that the player and all enemies + NPCs will inherit.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 512
diff changeset
157 self.endGame()
510
cd959b05a262 There is now a main menu. You can also view the credits. Taking a screenshot and opening the console should also work.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 509
diff changeset
158 self._application.requestQuit()
cd959b05a262 There is now a main menu. You can also view the credits. Taking a screenshot and opening the console should also work.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 509
diff changeset
159
509
3951042a701e Adding the RPG demo. This is basically empty at the moment. Currently it will start with a black screen.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
160 def pump(self):
512
6ddb1eb9dfa6 Added the Scene which loads the town map. It is no longer a black screen demo.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 510
diff changeset
161 if self._scene:
6ddb1eb9dfa6 Added the Scene which loads the town map. It is no longer a black screen demo.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 510
diff changeset
162 self._scene.updateScene()
6ddb1eb9dfa6 Added the Scene which loads the town map. It is no longer a black screen demo.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 510
diff changeset
163
6ddb1eb9dfa6 Added the Scene which loads the town map. It is no longer a black screen demo.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 510
diff changeset
164
6ddb1eb9dfa6 Added the Scene which loads the town map. It is no longer a black screen demo.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 510
diff changeset
165 def _getGUIController(self):
6ddb1eb9dfa6 Added the Scene which loads the town map. It is no longer a black screen demo.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 510
diff changeset
166 return self._guicontroller
6ddb1eb9dfa6 Added the Scene which loads the town map. It is no longer a black screen demo.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 510
diff changeset
167
6ddb1eb9dfa6 Added the Scene which loads the town map. It is no longer a black screen demo.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 510
diff changeset
168 def _getEngine(self):
6ddb1eb9dfa6 Added the Scene which loads the town map. It is no longer a black screen demo.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 510
diff changeset
169 return self._engine
6ddb1eb9dfa6 Added the Scene which loads the town map. It is no longer a black screen demo.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 510
diff changeset
170
6ddb1eb9dfa6 Added the Scene which loads the town map. It is no longer a black screen demo.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 510
diff changeset
171 def _getSettings(self):
6ddb1eb9dfa6 Added the Scene which loads the town map. It is no longer a black screen demo.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 510
diff changeset
172 return self._settings
6ddb1eb9dfa6 Added the Scene which loads the town map. It is no longer a black screen demo.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 510
diff changeset
173
513
edf5c0cf52f3 Added the Actor and Player classes. Actor is the base class that the player and all enemies + NPCs will inherit.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 512
diff changeset
174 def _getScene(self):
edf5c0cf52f3 Added the Actor and Player classes. Actor is the base class that the player and all enemies + NPCs will inherit.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 512
diff changeset
175 return self._scene
edf5c0cf52f3 Added the Actor and Player classes. Actor is the base class that the player and all enemies + NPCs will inherit.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 512
diff changeset
176
edf5c0cf52f3 Added the Actor and Player classes. Actor is the base class that the player and all enemies + NPCs will inherit.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 512
diff changeset
177 def _getKeyState(self):
edf5c0cf52f3 Added the Actor and Player classes. Actor is the base class that the player and all enemies + NPCs will inherit.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 512
diff changeset
178 return self._keystate
edf5c0cf52f3 Added the Actor and Player classes. Actor is the base class that the player and all enemies + NPCs will inherit.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 512
diff changeset
179
512
6ddb1eb9dfa6 Added the Scene which loads the town map. It is no longer a black screen demo.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 510
diff changeset
180 guicontroller = property(_getGUIController)
6ddb1eb9dfa6 Added the Scene which loads the town map. It is no longer a black screen demo.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 510
diff changeset
181 engine = property(_getEngine)
6ddb1eb9dfa6 Added the Scene which loads the town map. It is no longer a black screen demo.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 510
diff changeset
182 settings = property(_getSettings)
513
edf5c0cf52f3 Added the Actor and Player classes. Actor is the base class that the player and all enemies + NPCs will inherit.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 512
diff changeset
183 scene = property(_getScene)
edf5c0cf52f3 Added the Actor and Player classes. Actor is the base class that the player and all enemies + NPCs will inherit.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 512
diff changeset
184 keystate = property(_getKeyState)