Mercurial > parpg-source
annotate gamescenecontroller.py @ 115:26e65f27dbd7
"Open" will now not be shown in the context menu when the lockable is locked.
"Lock" will not not be shown in the context menu when the lockable is open.
author | KarstenBock@gmx.net |
---|---|
date | Mon, 03 Oct 2011 14:12:17 +0200 |
parents | 81b51b9d861e |
children | 7f7f54c4077b |
rev | line source |
---|---|
0
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
1 # This file is part of PARPG. |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
2 |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
3 # PARPG is free software: you can redistribute it and/or modify |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
4 # it under the terms of the GNU General Public License as published by |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
5 # the Free Software Foundation, either version 3 of the License, or |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
6 # (at your option) any later version. |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
7 |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
8 # PARPG is distributed in the hope that it will be useful, |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
9 # but WITHOUT ANY WARRANTY; without even the implied warranty of |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
10 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
11 # GNU General Public License for more details. |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
12 |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
13 # You should have received a copy of the GNU General Public License |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
14 # along with PARPG. If not, see <http://www.gnu.org/licenses/>. |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
15 """This file contains the GameSceneController that handles input when the game |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
16 is exploring a scene""" |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
17 |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
18 |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
19 from datetime import datetime |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
20 import random |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
21 import glob |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
22 import os |
57
ba85e5aff370
Removed the pos value from the fifeagent component. getItemActions of Gamescenecontroller gets the position by calling a method of the behaviour.
KarstenBock@gmx.net
parents:
53
diff
changeset
|
23 import logging |
0
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
24 |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
25 from fife import fife |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
26 from fife import extensions |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
27 |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
28 from controllerbase import ControllerBase |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
29 from parpg.gui.hud import Hud |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
30 from parpg.gui import drag_drop_data as data_drag |
104
c9afad46091b
Added actions for lockable components (Open, Close, Lock and Unlock).
KarstenBock@gmx.net
parents:
101
diff
changeset
|
31 from objects.action import (ChangeMapAction, ExamineAction, TalkAction, |
c9afad46091b
Added actions for lockable components (Open, Close, Lock and Unlock).
KarstenBock@gmx.net
parents:
101
diff
changeset
|
32 OpenAction, CloseAction, UnlockAction, LockAction, |
107 | 33 PickUpAction, DropItemAction, |
34 ExamineContentsAction, | |
104
c9afad46091b
Added actions for lockable components (Open, Close, Lock and Unlock).
KarstenBock@gmx.net
parents:
101
diff
changeset
|
35 ) |
0
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
36 |
88 | 37 from parpg.world import World |
38 | |
0
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
39 #For debugging/code analysis |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
40 if False: |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
41 from gamesceneview import GameSceneView |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
42 from gamemodel import GameModel |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
43 from parpg import PARPGApplication |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
44 |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
45 |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
46 logger = logging.getLogger('gamescenecontroller') |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
47 |
88 | 48 class GameSceneController(World, ControllerBase): |
0
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
49 ''' |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
50 This controller handles inputs when the game is in "scene" state. |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
51 "Scene" state is when the player can move around and interact |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
52 with objects. Like, talking to a npc or examining the contents of a box. |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
53 ''' |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
54 |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
55 |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
56 def __init__(self, engine, view, model, application): |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
57 ''' |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
58 Constructor |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
59 @param engine: Instance of the active fife engine |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
60 @type engine: fife.Engine |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
61 @param view: Instance of a GameSceneView |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
62 @param type: parpg.GameSceneView |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
63 @param model: The model that has the current gamestate |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
64 @type model: parpg.GameModel |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
65 @param application: The application that created this controller |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
66 @type application: parpg.PARPGApplication |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
67 @param settings: The current settings of the application |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
68 @type settings: fife.extensions.fife_settings.Setting |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
69 ''' |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
70 ControllerBase.__init__(self, |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
71 engine, |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
72 view, |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
73 model, |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
74 application) |
88 | 75 World.__init__(self) |
0
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
76 #this can be helpful for IDEs code analysis |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
77 if False: |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
78 assert(isinstance(self.engine, fife.Engine)) |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
79 assert(isinstance(self.view, GameSceneView)) |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
80 assert(isinstance(self.view, GameModel)) |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
81 assert(isinstance(self.application, PARPGApplication)) |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
82 assert(isinstance(self.event_manager, fife.EventManager)) |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
83 |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
84 # Last saved mouse coords |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
85 self.action_number = 1 |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
86 |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
87 self.has_mouse_focus = True |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
88 self.last_mousecoords = None |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
89 self.mouse_callback = None |
4 | 90 self.original_cursor_id = self.engine.getCursor().getId() |
91 self.scroll_data = {"mouse":[], "kb":[], "offset":[0,0]} | |
92 self.scroll_timer = extensions.fife_timer.Timer( | |
93 100, | |
94 lambda: self.view.moveCamera(self.scroll_data["offset"]), | |
95 ) | |
0
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
96 |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
97 #this is temporary until we can set the native cursor |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
98 self.resetMouseCursor() |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
99 self.paused = False |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
100 |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
101 if model.settings.fife.EnableSound: |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
102 if not self.view.sounds.music_init: |
2
06145a6ee387
Fixed resource path dependencies issue that caused PARPG to crash on start.
M. George Hansen <technopolitica@gmail.com>
parents:
0
diff
changeset
|
103 music_path = 'music' |
06145a6ee387
Fixed resource path dependencies issue that caused PARPG to crash on start.
M. George Hansen <technopolitica@gmail.com>
parents:
0
diff
changeset
|
104 music_file = random.choice( |
06145a6ee387
Fixed resource path dependencies issue that caused PARPG to crash on start.
M. George Hansen <technopolitica@gmail.com>
parents:
0
diff
changeset
|
105 glob.glob('/'.join([music_path, '*.ogg'])) |
06145a6ee387
Fixed resource path dependencies issue that caused PARPG to crash on start.
M. George Hansen <technopolitica@gmail.com>
parents:
0
diff
changeset
|
106 ) |
0
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
107 self.view.sounds.playMusic(music_file) |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
108 self.initHud() |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
109 |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
110 |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
111 def initHud(self): |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
112 """Initialize the hud member |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
113 @return: None""" |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
114 hud_callbacks = { |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
115 'saveGame': self.saveGame, |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
116 'loadGame': self.loadGame, |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
117 'quitGame': self.quitGame, |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
118 } |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
119 self.view.hud = Hud(self, |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
120 self.model.settings, |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
121 hud_callbacks) |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
122 |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
123 def keyPressed(self, evt): |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
124 """Whenever a key is pressed, fife calls this routine. |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
125 @type evt: fife.event |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
126 @param evt: The event that fife caught |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
127 @return: None""" |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
128 key = evt.getKey() |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
129 key_val = key.getValue() |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
130 |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
131 if(key_val == key.Q): |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
132 # we need to quit the game |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
133 self.view.hud.quitGame() |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
134 if(key_val == key.T): |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
135 self.model.active_map.toggleRenderer('GridRenderer') |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
136 if(key_val == key.F1): |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
137 # display the help screen and pause the game |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
138 self.view.hud.displayHelp() |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
139 if(key_val == key.F5): |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
140 self.model.active_map.toggleRenderer('CoordinateRenderer') |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
141 if(key_val == key.F7): |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
142 # F7 saves a screenshot to screenshots directory |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
143 |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
144 settings = self.model.settings |
2
06145a6ee387
Fixed resource path dependencies issue that caused PARPG to crash on start.
M. George Hansen <technopolitica@gmail.com>
parents:
0
diff
changeset
|
145 # FIXME M. George Hansen 2011-06-06: Not sure that user_path is set |
06145a6ee387
Fixed resource path dependencies issue that caused PARPG to crash on start.
M. George Hansen <technopolitica@gmail.com>
parents:
0
diff
changeset
|
146 # correctly atm. |
0
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
147 screenshot_directory = os.path.join(settings.user_path, |
2
06145a6ee387
Fixed resource path dependencies issue that caused PARPG to crash on start.
M. George Hansen <technopolitica@gmail.com>
parents:
0
diff
changeset
|
148 'screenshots') |
0
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
149 # try to create the screenshots directory |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
150 try: |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
151 os.mkdir(screenshot_directory) |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
152 #TODO: distinguish between already existing permissions error |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
153 except OSError: |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
154 logger.warning("screenshot directory wasn't created.") |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
155 |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
156 screenshot_file = os.path.join(screenshot_directory, |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
157 'screen-{0}.png'.format( |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
158 datetime.now().strftime( |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
159 '%Y-%m-%d-%H-%M-%S'))) |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
160 self.engine.getRenderBackend().captureScreen(screenshot_file) |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
161 logger.info("PARPG: Saved: {0}".format(screenshot_file)) |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
162 if(key_val == key.F10): |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
163 # F10 shows/hides the console |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
164 self.engine.getGuiManager().getConsole().toggleShowHide() |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
165 if(key_val == key.C): |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
166 # C opens and closes the character screen. |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
167 self.view.hud.toggleCharacterScreen() |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
168 if(key_val == key.I): |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
169 # I opens and closes the inventory |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
170 self.view.hud.toggleInventory() |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
171 if(key_val == key.A): |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
172 # A adds a test action to the action box |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
173 # The test actions will follow this format: Action 1, |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
174 # Action 2, etc. |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
175 self.view.hud.addAction("Action " + str(self.action_number)) |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
176 self.action_number += 1 |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
177 if(key_val == key.ESCAPE): |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
178 # Escape brings up the main menu |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
179 self.view.hud.displayMenu() |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
180 # Hide the quit menu |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
181 self.view.hud.quit_window.hide() |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
182 if(key_val == key.M): |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
183 self.view.sounds.toggleMusic() |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
184 if(key_val == key.PAUSE): |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
185 # Pause pause/unpause the game |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
186 self.model.togglePause() |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
187 self.pause(False) |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
188 if(key_val == key.SPACE): |
4 | 189 self.model.active_map.centerCameraOnPlayer() |
190 | |
191 #alter scroll data if a directional key is hit | |
192 if(key_val == key.UP): | |
193 if not "up" in self.scroll_data["kb"]: | |
194 self.scroll_data["kb"].append("up") | |
195 | |
196 if(key_val == key.RIGHT): | |
197 if not "right" in self.scroll_data["kb"]: | |
198 self.scroll_data["kb"].append("right") | |
199 | |
200 if(key_val == key.DOWN): | |
201 if not "down" in self.scroll_data["kb"]: | |
202 self.scroll_data["kb"].append("down") | |
203 | |
204 if(key_val == key.LEFT): | |
205 if not "left" in self.scroll_data["kb"]: | |
206 self.scroll_data["kb"].append("left") | |
0
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
207 |
4 | 208 def keyReleased(self, evt): |
209 """Whenever a key is pressed, fife calls this routine. | |
210 @type evt: fife.event | |
211 @param evt: The event that fife caught | |
212 @return: None""" | |
213 key = evt.getKey() | |
214 key_val = key.getValue() | |
215 | |
216 #alter scroll data if a directional key is released | |
217 if(key_val == key.UP): | |
218 if "up" in self.scroll_data["kb"]: | |
219 self.scroll_data["kb"].remove("up") | |
220 | |
221 if(key_val == key.RIGHT): | |
222 if "right" in self.scroll_data["kb"]: | |
223 self.scroll_data["kb"].remove("right") | |
224 | |
225 if(key_val == key.DOWN): | |
226 if "down" in self.scroll_data["kb"]: | |
227 self.scroll_data["kb"].remove("down") | |
228 | |
229 if(key_val == key.LEFT): | |
230 if "left" in self.scroll_data["kb"]: | |
231 self.scroll_data["kb"].remove("left") | |
232 | |
0
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
233 def mouseReleased(self, evt): |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
234 """If a mouse button is released, fife calls this routine. |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
235 We want to wait until the button is released, because otherwise |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
236 pychan captures the release if a menu is opened. |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
237 @type evt: fife.event |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
238 @param evt: The event that fife caught |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
239 @return: None""" |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
240 self.view.hud.hideContextMenu() |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
241 scr_point = fife.ScreenPoint(evt.getX(), evt.getY()) |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
242 if(evt.getButton() == fife.MouseEvent.LEFT): |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
243 if(data_drag.dragging): |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
244 coord = self.model.getCoords(scr_point)\ |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
245 .getExactLayerCoordinates() |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
246 commands = ({"Command": "ResetMouseCursor"}, |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
247 {"Command": "StopDragging"}) |
44
98f26f7636d8
Changes to make PARPG "runable" with grease. (With the correct modified assets)
KarstenBock@gmx.net
parents:
39
diff
changeset
|
248 self.model.game_state.getObjectById("PlayerCharacter").fifeagent.approach([coord.x, |
0
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
249 coord.y], |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
250 DropItemAction(self, |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
251 data_drag.dragged_item, |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
252 commands)) |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
253 else: |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
254 self.model.movePlayer(self.model.getCoords(scr_point)) |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
255 elif(evt.getButton() == fife.MouseEvent.RIGHT): |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
256 # is there an object here? |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
257 tmp_active_map = self.model.active_map |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
258 instances = tmp_active_map.cameras[tmp_active_map.my_cam_id].\ |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
259 getMatchingInstances(scr_point, |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
260 tmp_active_map.agent_layer) |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
261 info = None |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
262 for inst in instances: |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
263 # check to see if this is an active item |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
264 if(self.model.objectActive(inst.getId())): |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
265 # yes, get the model |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
266 info = self.getItemActions(inst.getId()) |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
267 break |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
268 |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
269 # take the menu items returned by the engine or show a |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
270 # default menu if no items |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
271 data = info or \ |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
272 [["Walk", "Walk here", self.view.onWalk, |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
273 self.model.getCoords(scr_point)]] |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
274 # show the menu |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
275 self.view.hud.showContextMenu(data, (scr_point.x, scr_point.y)) |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
276 |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
277 |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
278 def updateMouse(self): |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
279 """Updates the mouse values""" |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
280 if self.paused: |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
281 return |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
282 cursor = self.engine.getCursor() |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
283 #this can be helpful for IDEs code analysis |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
284 if False: |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
285 assert(isinstance(cursor, fife.Cursor)) |
4 | 286 self.last_mousecoords = fife.ScreenPoint(cursor.getX(), cursor.getY()) |
287 self.view.highlightFrontObject(self.last_mousecoords) | |
0
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
288 |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
289 #set the trigger area in pixles |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
290 pixle_edge = 20 |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
291 |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
292 mouse_x = self.last_mousecoords.x |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
293 screen_width = self.model.engine.getSettings().getScreenWidth() |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
294 mouse_y = self.last_mousecoords.y |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
295 screen_height = self.model.engine.getSettings().getScreenHeight() |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
296 |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
297 image = None |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
298 settings = self.model.settings |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
299 |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
300 |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
301 #edge logic |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
302 if self.has_mouse_focus: |
4 | 303 direction = self.scroll_data["mouse"] = [] |
304 | |
0
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
305 #up |
4 | 306 if mouse_y <= pixle_edge: |
307 direction.append("up") | |
2
06145a6ee387
Fixed resource path dependencies issue that caused PARPG to crash on start.
M. George Hansen <technopolitica@gmail.com>
parents:
0
diff
changeset
|
308 image = '/'.join(['gui/cursors', settings.parpg.CursorUp]) |
0
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
309 |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
310 #right |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
311 if mouse_x >= screen_width - pixle_edge: |
4 | 312 direction.append("right") |
2
06145a6ee387
Fixed resource path dependencies issue that caused PARPG to crash on start.
M. George Hansen <technopolitica@gmail.com>
parents:
0
diff
changeset
|
313 image = '/'.join(['gui/cursors', settings.parpg.CursorRight]) |
0
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
314 |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
315 #down |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
316 if mouse_y >= screen_height - pixle_edge: |
4 | 317 direction.append("down") |
2
06145a6ee387
Fixed resource path dependencies issue that caused PARPG to crash on start.
M. George Hansen <technopolitica@gmail.com>
parents:
0
diff
changeset
|
318 image = '/'.join(['gui/cursors', settings.parpg.CursorDown]) |
0
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
319 |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
320 #left |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
321 if mouse_x <= pixle_edge: |
4 | 322 direction.append("left") |
2
06145a6ee387
Fixed resource path dependencies issue that caused PARPG to crash on start.
M. George Hansen <technopolitica@gmail.com>
parents:
0
diff
changeset
|
323 image = '/'.join(['gui/cursors', settings.parpg.CursorLeft]) |
4 | 324 |
0
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
325 if image is not None and not data_drag.dragging: |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
326 self.setMouseCursor(image, image) |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
327 |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
328 |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
329 def handleCommands(self): |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
330 """Check if a command is to be executed |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
331 """ |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
332 if self.model.map_change: |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
333 self.pause(True) |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
334 if self.model.active_map: |
88 | 335 self.model.updateObjectDB(self) |
336 player_char = self.model.game_state.\ | |
337 getObjectById("PlayerCharacter").fifeagent | |
338 pc_agent = self.model.agents\ | |
339 [self.model.ALL_AGENTS_KEY]["PlayerCharacter"] | |
0
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
340 pc_agent["Map"] = self.model.target_map_name |
101 | 341 pc_agent["Position"] = (self.model.target_position or |
342 pc_agent["Position"]) | |
0
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
343 player_agent = self.model.active_map.\ |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
344 agent_layer.getInstance("PlayerCharacter") |
101 | 345 self.model.game_state.deleteObject("PlayerCharacter").delete() |
346 deleted = self.model.game_state.deleteObjectsFromMap( | |
88 | 347 self.model.game_state.current_map_name |
348 ) | |
101 | 349 deleted.extend( |
350 self.model.game_state.deleteObjectsFromMap(None) | |
351 ) | |
352 for obj in deleted: | |
353 obj.delete() | |
2
06145a6ee387
Fixed resource path dependencies issue that caused PARPG to crash on start.
M. George Hansen <technopolitica@gmail.com>
parents:
0
diff
changeset
|
354 |
0
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
355 self.model.loadMap(self.model.target_map_name) |
2
06145a6ee387
Fixed resource path dependencies issue that caused PARPG to crash on start.
M. George Hansen <technopolitica@gmail.com>
parents:
0
diff
changeset
|
356 |
0
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
357 self.model.setActiveMap(self.model.target_map_name) |
2
06145a6ee387
Fixed resource path dependencies issue that caused PARPG to crash on start.
M. George Hansen <technopolitica@gmail.com>
parents:
0
diff
changeset
|
358 |
39
3011bc71ab20
Added funcionality to load Entities from file
KarstenBock@gmx.net
parents:
8
diff
changeset
|
359 self.model.placeAgents(self) |
44
98f26f7636d8
Changes to make PARPG "runable" with grease. (With the correct modified assets)
KarstenBock@gmx.net
parents:
39
diff
changeset
|
360 self.model.placePC(self) |
0
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
361 self.model.map_change = False |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
362 # The PlayerCharacter has an inventory, and also some |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
363 # filling of the ready slots in the HUD. |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
364 # At this point we sync the contents of the ready slots |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
365 # with the contents of the inventory. |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
366 self.view.hud.inventory = None |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
367 self.view.hud.initializeInventory() |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
368 self.pause(False) |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
369 |
4 | 370 def handleScrolling(self): |
371 """ | |
372 Merge kb and mouse related scroll data, limit the speed and | |
373 move the camera. | |
374 """ | |
375 #this is how many pxls the camera is moved in one time frame | |
376 scroll_offset = self.scroll_data["offset"] = [0,0] | |
377 | |
378 mouse = self.scroll_data["mouse"] | |
379 keyboard = self.scroll_data["kb"] | |
380 speed = self.model.settings.parpg.ScrollSpeed | |
381 | |
382 #adds a value to the offset depending on the contents of each | |
383 # of the controllers: set() removes doubles | |
384 scroll_direction = set(mouse+keyboard) | |
385 for direction in scroll_direction: | |
386 if direction == "up": | |
387 scroll_offset[0] +=1 | |
388 scroll_offset[1] -=1 | |
389 elif direction == "right": | |
390 scroll_offset[0] +=1 | |
391 scroll_offset[1] +=1 | |
392 elif direction == "down": | |
393 scroll_offset[0] -=1 | |
394 scroll_offset[1] +=1 | |
395 elif direction == "left": | |
396 scroll_offset[0] -=1 | |
397 scroll_offset[1] -=1 | |
398 | |
399 #keep the speed within bounds | |
400 if scroll_offset[0] > 0: scroll_offset[0] = speed | |
401 if scroll_offset[0] < 0: scroll_offset[0] = -speed | |
402 | |
403 if scroll_offset[1] > 0: scroll_offset[1] = speed | |
404 if scroll_offset[1] < 0: scroll_offset[1] = -speed | |
405 | |
406 #de/activate scrolling | |
407 if scroll_offset != [0, 0]: | |
408 self.scroll_timer.start() | |
409 else: | |
410 self.scroll_timer.stop() | |
411 if not data_drag.dragging: | |
412 self.resetMouseCursor() | |
413 | |
0
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
414 def nullFunc(self, userdata): |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
415 """Sample callback for the context menus.""" |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
416 logger.info(userdata) |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
417 |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
418 def initTalk(self, npc_info): |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
419 """ Starts the PlayerCharacter talking to an NPC. """ |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
420 # TODO: work more on this when we get NPCData and HeroData straightened |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
421 # out |
51
d3a9caba067b
Modifications to make talking with npcs possible again. Special actions won't work yet though.
KarstenBock@gmx.net
parents:
44
diff
changeset
|
422 npc = self.model.game_state.getObjectById( |
86
a9cc5559ec2a
Move the identifier field from the FifeAgent component to the new General component.
KarstenBock@gmx.net
parents:
82
diff
changeset
|
423 npc_info.general.identifier, |
51
d3a9caba067b
Modifications to make talking with npcs possible again. Special actions won't work yet though.
KarstenBock@gmx.net
parents:
44
diff
changeset
|
424 self.model.game_state.current_map_name |
d3a9caba067b
Modifications to make talking with npcs possible again. Special actions won't work yet though.
KarstenBock@gmx.net
parents:
44
diff
changeset
|
425 ) |
d3a9caba067b
Modifications to make talking with npcs possible again. Special actions won't work yet though.
KarstenBock@gmx.net
parents:
44
diff
changeset
|
426 npc_pos = npc.fifeagent.behaviour.getLocation().getLayerCoordinates() |
d3a9caba067b
Modifications to make talking with npcs possible again. Special actions won't work yet though.
KarstenBock@gmx.net
parents:
44
diff
changeset
|
427 self.model.game_state.getObjectById("PlayerCharacter").fifeagent.\ |
d3a9caba067b
Modifications to make talking with npcs possible again. Special actions won't work yet though.
KarstenBock@gmx.net
parents:
44
diff
changeset
|
428 behaviour.approach([npc_pos.x, |
d3a9caba067b
Modifications to make talking with npcs possible again. Special actions won't work yet though.
KarstenBock@gmx.net
parents:
44
diff
changeset
|
429 npc_pos.y], |
d3a9caba067b
Modifications to make talking with npcs possible again. Special actions won't work yet though.
KarstenBock@gmx.net
parents:
44
diff
changeset
|
430 TalkAction(self, npc)) |
0
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
431 |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
432 def getItemActions(self, obj_id): |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
433 """Given the objects ID, return the text strings and callbacks. |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
434 @type obj_id: string |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
435 @param obj_id: ID of object |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
436 @rtype: list |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
437 @return: List of text and callbacks""" |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
438 actions = [] |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
439 obj = self.model.game_state.\ |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
440 getObjectById(obj_id, |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
441 self.model.game_state.current_map_name) |
57
ba85e5aff370
Removed the pos value from the fifeagent component. getItemActions of Gamescenecontroller gets the position by calling a method of the behaviour.
KarstenBock@gmx.net
parents:
53
diff
changeset
|
442 obj_pos = obj.fifeagent.behaviour.getLocation().getLayerCoordinates() |
51
d3a9caba067b
Modifications to make talking with npcs possible again. Special actions won't work yet though.
KarstenBock@gmx.net
parents:
44
diff
changeset
|
443 player = self.model.game_state.getObjectById("PlayerCharacter") |
86
a9cc5559ec2a
Move the identifier field from the FifeAgent component to the new General component.
KarstenBock@gmx.net
parents:
82
diff
changeset
|
444 is_player = obj.general.identifier == player.general.identifier |
51
d3a9caba067b
Modifications to make talking with npcs possible again. Special actions won't work yet though.
KarstenBock@gmx.net
parents:
44
diff
changeset
|
445 |
57
ba85e5aff370
Removed the pos value from the fifeagent component. getItemActions of Gamescenecontroller gets the position by calling a method of the behaviour.
KarstenBock@gmx.net
parents:
53
diff
changeset
|
446 |
51
d3a9caba067b
Modifications to make talking with npcs possible again. Special actions won't work yet though.
KarstenBock@gmx.net
parents:
44
diff
changeset
|
447 #TODO: Check all actions to be compatible with the grease components |
0
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
448 if obj is not None: |
53
7b9f6e3513d4
Added code that checks if the object is the player so certain actions (talk, attack) will not appear in the menu.
KarstenBock@gmx.net
parents:
51
diff
changeset
|
449 if obj.dialogue and not is_player: |
0
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
450 actions.append(["Talk", "Talk", self.initTalk, obj]) |
53
7b9f6e3513d4
Added code that checks if the object is the player so certain actions (talk, attack) will not appear in the menu.
KarstenBock@gmx.net
parents:
51
diff
changeset
|
451 if obj.characterstats and not is_player: |
0
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
452 actions.append(["Attack", "Attack", self.nullFunc, obj]) |
82
e864b704dd59
The Examine action in the context menu will now only be shown when the Entity actually has a description text.
KarstenBock@gmx.net
parents:
81
diff
changeset
|
453 if obj.description and obj.description.desc: |
0
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
454 actions.append(["Examine", "Examine", |
51
d3a9caba067b
Modifications to make talking with npcs possible again. Special actions won't work yet though.
KarstenBock@gmx.net
parents:
44
diff
changeset
|
455 player.fifeagent.behaviour.approach, |
57
ba85e5aff370
Removed the pos value from the fifeagent component. getItemActions of Gamescenecontroller gets the position by calling a method of the behaviour.
KarstenBock@gmx.net
parents:
53
diff
changeset
|
456 [obj_pos.x, obj_pos.y], |
0
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
457 ExamineAction(self, |
51
d3a9caba067b
Modifications to make talking with npcs possible again. Special actions won't work yet though.
KarstenBock@gmx.net
parents:
44
diff
changeset
|
458 obj_id, obj.description.view_name, |
d3a9caba067b
Modifications to make talking with npcs possible again. Special actions won't work yet though.
KarstenBock@gmx.net
parents:
44
diff
changeset
|
459 obj.description.desc)]) |
81
28561412c7e7
Fixed bug in "getItemActions" when the Entity has a change_map component.
KarstenBock@gmx.net
parents:
57
diff
changeset
|
460 |
51
d3a9caba067b
Modifications to make talking with npcs possible again. Special actions won't work yet though.
KarstenBock@gmx.net
parents:
44
diff
changeset
|
461 if obj.change_map: |
d3a9caba067b
Modifications to make talking with npcs possible again. Special actions won't work yet though.
KarstenBock@gmx.net
parents:
44
diff
changeset
|
462 actions.append(["Change Map", "Change Map", |
d3a9caba067b
Modifications to make talking with npcs possible again. Special actions won't work yet though.
KarstenBock@gmx.net
parents:
44
diff
changeset
|
463 player.fifeagent.behaviour.approach, |
57
ba85e5aff370
Removed the pos value from the fifeagent component. getItemActions of Gamescenecontroller gets the position by calling a method of the behaviour.
KarstenBock@gmx.net
parents:
53
diff
changeset
|
464 [obj_pos.x, obj_pos.y], |
81
28561412c7e7
Fixed bug in "getItemActions" when the Entity has a change_map component.
KarstenBock@gmx.net
parents:
57
diff
changeset
|
465 ChangeMapAction(self, obj.change_map.target_map, |
28561412c7e7
Fixed bug in "getItemActions" when the Entity has a change_map component.
KarstenBock@gmx.net
parents:
57
diff
changeset
|
466 obj.change_map.target_position)]) |
51
d3a9caba067b
Modifications to make talking with npcs possible again. Special actions won't work yet though.
KarstenBock@gmx.net
parents:
44
diff
changeset
|
467 |
d3a9caba067b
Modifications to make talking with npcs possible again. Special actions won't work yet though.
KarstenBock@gmx.net
parents:
44
diff
changeset
|
468 if obj.lockable: |
104
c9afad46091b
Added actions for lockable components (Open, Close, Lock and Unlock).
KarstenBock@gmx.net
parents:
101
diff
changeset
|
469 if obj.lockable.closed: |
115
26e65f27dbd7
"Open" will now not be shown in the context menu when the lockable is locked.
KarstenBock@gmx.net
parents:
108
diff
changeset
|
470 if not obj.lockable.locked: |
26e65f27dbd7
"Open" will now not be shown in the context menu when the lockable is locked.
KarstenBock@gmx.net
parents:
108
diff
changeset
|
471 actions.append(["Open", "Open", |
26e65f27dbd7
"Open" will now not be shown in the context menu when the lockable is locked.
KarstenBock@gmx.net
parents:
108
diff
changeset
|
472 player.fifeagent.behaviour.approach, |
26e65f27dbd7
"Open" will now not be shown in the context menu when the lockable is locked.
KarstenBock@gmx.net
parents:
108
diff
changeset
|
473 [obj_pos.x, obj_pos.y], |
26e65f27dbd7
"Open" will now not be shown in the context menu when the lockable is locked.
KarstenBock@gmx.net
parents:
108
diff
changeset
|
474 OpenAction(self, obj)]) |
104
c9afad46091b
Added actions for lockable components (Open, Close, Lock and Unlock).
KarstenBock@gmx.net
parents:
101
diff
changeset
|
475 else: |
c9afad46091b
Added actions for lockable components (Open, Close, Lock and Unlock).
KarstenBock@gmx.net
parents:
101
diff
changeset
|
476 actions.append(["Close", "Close", |
c9afad46091b
Added actions for lockable components (Open, Close, Lock and Unlock).
KarstenBock@gmx.net
parents:
101
diff
changeset
|
477 player.fifeagent.behaviour.approach, |
c9afad46091b
Added actions for lockable components (Open, Close, Lock and Unlock).
KarstenBock@gmx.net
parents:
101
diff
changeset
|
478 [obj_pos.x, obj_pos.y], |
c9afad46091b
Added actions for lockable components (Open, Close, Lock and Unlock).
KarstenBock@gmx.net
parents:
101
diff
changeset
|
479 CloseAction(self, obj)]) |
c9afad46091b
Added actions for lockable components (Open, Close, Lock and Unlock).
KarstenBock@gmx.net
parents:
101
diff
changeset
|
480 if obj.lockable.locked: |
c9afad46091b
Added actions for lockable components (Open, Close, Lock and Unlock).
KarstenBock@gmx.net
parents:
101
diff
changeset
|
481 actions.append(["Unlock", "Unlock", |
c9afad46091b
Added actions for lockable components (Open, Close, Lock and Unlock).
KarstenBock@gmx.net
parents:
101
diff
changeset
|
482 player.fifeagent.behaviour.approach, |
c9afad46091b
Added actions for lockable components (Open, Close, Lock and Unlock).
KarstenBock@gmx.net
parents:
101
diff
changeset
|
483 [obj_pos.x, obj_pos.y], |
c9afad46091b
Added actions for lockable components (Open, Close, Lock and Unlock).
KarstenBock@gmx.net
parents:
101
diff
changeset
|
484 UnlockAction(self, obj)]) |
c9afad46091b
Added actions for lockable components (Open, Close, Lock and Unlock).
KarstenBock@gmx.net
parents:
101
diff
changeset
|
485 else: |
115
26e65f27dbd7
"Open" will now not be shown in the context menu when the lockable is locked.
KarstenBock@gmx.net
parents:
108
diff
changeset
|
486 if obj.lockable.closed: |
26e65f27dbd7
"Open" will now not be shown in the context menu when the lockable is locked.
KarstenBock@gmx.net
parents:
108
diff
changeset
|
487 actions.append(["Lock", "Lock", |
26e65f27dbd7
"Open" will now not be shown in the context menu when the lockable is locked.
KarstenBock@gmx.net
parents:
108
diff
changeset
|
488 player.fifeagent.behaviour.approach, |
26e65f27dbd7
"Open" will now not be shown in the context menu when the lockable is locked.
KarstenBock@gmx.net
parents:
108
diff
changeset
|
489 [obj_pos.x, obj_pos.y], |
26e65f27dbd7
"Open" will now not be shown in the context menu when the lockable is locked.
KarstenBock@gmx.net
parents:
108
diff
changeset
|
490 LockAction(self, obj)]) |
107 | 491 if obj.container: |
492 if obj.characterstats: | |
493 #TODO: This is reserved for a possible "Steal" action. | |
494 pass | |
495 elif not obj.lockable or not obj.lockable.closed: | |
496 actions.append(["Examine contents", "Examine Contents", | |
497 player.fifeagent.behaviour.approach, | |
498 [obj_pos.x, obj_pos.y], | |
499 ExamineContentsAction(self, obj)]) | |
51
d3a9caba067b
Modifications to make talking with npcs possible again. Special actions won't work yet though.
KarstenBock@gmx.net
parents:
44
diff
changeset
|
500 if obj.containable: |
d3a9caba067b
Modifications to make talking with npcs possible again. Special actions won't work yet though.
KarstenBock@gmx.net
parents:
44
diff
changeset
|
501 actions.append(["Pick Up", "Pick Up", |
d3a9caba067b
Modifications to make talking with npcs possible again. Special actions won't work yet though.
KarstenBock@gmx.net
parents:
44
diff
changeset
|
502 player.fifeagent.behaviour.approach, |
57
ba85e5aff370
Removed the pos value from the fifeagent component. getItemActions of Gamescenecontroller gets the position by calling a method of the behaviour.
KarstenBock@gmx.net
parents:
53
diff
changeset
|
503 [obj_pos.x, obj_pos.y], |
51
d3a9caba067b
Modifications to make talking with npcs possible again. Special actions won't work yet though.
KarstenBock@gmx.net
parents:
44
diff
changeset
|
504 PickUpAction(self, obj)]) |
0
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
505 |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
506 return actions |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
507 |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
508 def saveGame(self, *args, **kwargs): |
101 | 509 """Saves the game state, delegates call to gamemodel.GameModel |
0
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
510 @return: None""" |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
511 self.model.pause(False) |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
512 self.pause(False) |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
513 self.view.hud.enabled = True |
101 | 514 self.model.updateObjectDB(self) |
0
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
515 self.model.save(*args, **kwargs) |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
516 |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
517 def loadGame(self, *args, **kwargs): |
101 | 518 """Loads the game state, delegates call to gamemodel.GameModel |
0
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
519 @return: None""" |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
520 # Remove all currently loaded maps so we can start fresh |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
521 self.model.pause(False) |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
522 self.pause(False) |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
523 self.view.hud.enabled = True |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
524 self.model.deleteMaps() |
101 | 525 for entity in self.entities.copy(): |
526 entity.delete() | |
0
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
527 self.view.hud.inventory = None |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
528 |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
529 self.model.load(*args, **kwargs) |
101 | 530 # Load the current map |
531 if self.model.game_state.current_map_name: | |
532 self.model.loadMap(self.model.game_state.current_map_name) | |
533 self.model.placeAgents(self) | |
534 self.model.placePC(self) | |
0
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
535 self.view.hud.initializeInventory() |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
536 |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
537 def quitGame(self): |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
538 """Quits the game |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
539 @return: None""" |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
540 self.application.listener.quitGame() |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
541 |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
542 def pause(self, paused): |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
543 """Pauses the controller""" |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
544 super(GameSceneController, self).pause(paused) |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
545 self.paused = paused |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
546 if paused: |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
547 self.scroll_timer.stop() |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
548 self.resetMouseCursor() |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
549 |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
550 def onCommand(self, command): |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
551 if(command.getCommandType() == fife.CMD_MOUSE_FOCUS_GAINED): |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
552 self.has_mouse_focus = True |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
553 elif(command.getCommandType() == fife.CMD_MOUSE_FOCUS_LOST): |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
554 self.has_mouse_focus = False |
4 | 555 |
8
708a6f651c31
Modifications to use the grease manager and modes
KarstenBock@gmx.net
parents:
4
diff
changeset
|
556 def pump(self, dt): |
0
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
557 """Routine called during each frame. Our main loop is in ./run.py""" |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
558 # uncomment to instrument |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
559 # t0 = time.time() |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
560 if self.paused: |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
561 return |
8
708a6f651c31
Modifications to use the grease manager and modes
KarstenBock@gmx.net
parents:
4
diff
changeset
|
562 ControllerBase.pump(self, dt) |
0
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
563 self.updateMouse() |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
564 if self.model.active_map: |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
565 self.view.highlightFrontObject(self.last_mousecoords) |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
566 self.view.refreshTopLayerTransparencies() |
4 | 567 self.handleScrolling() |
0
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
568 self.handleCommands() |
7a89ea5404b1
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
569 # print "%05f" % (time.time()-t0,) |