Mercurial > parpg-core
annotate src/parpg/gui/inventorygui.py @ 150:3fc7cfa80771
Modified InventoryGrid to set a name for each slot containing the index.
Added getSlot method to InventoryGrid.
Renamed InventoryGUI class to CharacterGUI.
Added InventoryGUI class which handles the inventory part of the CharacterGUI.
An InventoryGUI instance is now created in CharacterGUI.
author | KarstenBock@gmx.net |
---|---|
date | Wed, 05 Oct 2011 12:59:22 +0200 |
parents | eab3e1e52497 |
children | 2ba7c6d8f738 |
rev | line source |
---|---|
0
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
1 # This file is part of PARPG. |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
2 |
1fd2201f5c36
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 |
1fd2201f5c36
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 |
1fd2201f5c36
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 |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
6 # (at your option) any later version. |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
7 |
1fd2201f5c36
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, |
1fd2201f5c36
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 |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
10 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
11 # GNU General Public License for more details. |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
12 |
1fd2201f5c36
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 |
1fd2201f5c36
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/>. |
149
eab3e1e52497
Modified EquipmentSlot to display an image instead of a text.
KarstenBock@gmx.net
parents:
142
diff
changeset
|
15 import logging |
150
3fc7cfa80771
Modified InventoryGrid to set a name for each slot containing the index.
KarstenBock@gmx.net
parents:
149
diff
changeset
|
16 from types import StringTypes |
0
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
17 |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
18 from fife.extensions.pychan.tools import callbackWithArguments as cbwa |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
19 from fife.extensions import pychan |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
20 from fife.extensions.pychan.attrs import UnicodeAttr |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
21 |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
22 from parpg.gui import drag_drop_data as data_drag |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
23 from parpg.gui.containergui_base import ContainerGUIBase |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
24 from parpg.objects.action import ACTIONS |
149
eab3e1e52497
Modified EquipmentSlot to display an image instead of a text.
KarstenBock@gmx.net
parents:
142
diff
changeset
|
25 from parpg.components import equip |
0
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
26 |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
27 logger = logging.getLogger('action') |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
28 |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
29 class EquipmentSlot(pychan.VBox): |
149
eab3e1e52497
Modified EquipmentSlot to display an image instead of a text.
KarstenBock@gmx.net
parents:
142
diff
changeset
|
30 def __init__(self, min_size=(50, 50), |
0
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
31 max_size=(50, 50), margins=None, |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
32 **kwargs): |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
33 pychan.VBox.__init__(self, min_size=min_size, max_size=max_size, |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
34 **kwargs) |
12
d60f1dab8469
Fixed resource path dependencies issue that caused PARPG to crash on start.
M. George Hansen <technopolitica@gmail.com>
parents:
0
diff
changeset
|
35 self.background_image = 'gui/inv_images/inv_background.png' |
149
eab3e1e52497
Modified EquipmentSlot to display an image instead of a text.
KarstenBock@gmx.net
parents:
142
diff
changeset
|
36 icon = pychan.Icon(name="Icon") |
eab3e1e52497
Modified EquipmentSlot to display an image instead of a text.
KarstenBock@gmx.net
parents:
142
diff
changeset
|
37 self.addChild(icon) |
0
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
38 self.adaptLayout() |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
39 if self.parent is not None: |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
40 self.beforeShow() |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
41 |
149
eab3e1e52497
Modified EquipmentSlot to display an image instead of a text.
KarstenBock@gmx.net
parents:
142
diff
changeset
|
42 @property |
eab3e1e52497
Modified EquipmentSlot to display an image instead of a text.
KarstenBock@gmx.net
parents:
142
diff
changeset
|
43 def image(self): |
eab3e1e52497
Modified EquipmentSlot to display an image instead of a text.
KarstenBock@gmx.net
parents:
142
diff
changeset
|
44 icon = self.findChildByName("Icon") |
eab3e1e52497
Modified EquipmentSlot to display an image instead of a text.
KarstenBock@gmx.net
parents:
142
diff
changeset
|
45 return icon.image |
eab3e1e52497
Modified EquipmentSlot to display an image instead of a text.
KarstenBock@gmx.net
parents:
142
diff
changeset
|
46 |
eab3e1e52497
Modified EquipmentSlot to display an image instead of a text.
KarstenBock@gmx.net
parents:
142
diff
changeset
|
47 @image.setter |
eab3e1e52497
Modified EquipmentSlot to display an image instead of a text.
KarstenBock@gmx.net
parents:
142
diff
changeset
|
48 def image(self, image): |
eab3e1e52497
Modified EquipmentSlot to display an image instead of a text.
KarstenBock@gmx.net
parents:
142
diff
changeset
|
49 icon = self.findChildByName("Icon") |
eab3e1e52497
Modified EquipmentSlot to display an image instead of a text.
KarstenBock@gmx.net
parents:
142
diff
changeset
|
50 icon.image = image |
0
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
51 |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
52 class InventoryGrid(pychan.VBox): |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
53 ATTRIBUTES = pychan.VBox.ATTRIBUTES + [pychan.attrs.PointAttr('grid_size')] |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
54 |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
55 def _setNColumns(self, n_columns): |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
56 n_rows = self.grid_size[1] |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
57 self.grid_size = (n_columns, n_rows) |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
58 |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
59 def _getNColumns(self): |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
60 n_columns = self.grid_size[0] |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
61 return n_columns |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
62 n_columns = property(fget=_getNColumns, fset=_setNColumns) |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
63 |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
64 def _setNRows(self, n_rows): |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
65 n_columns = self.grid_size[0] |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
66 self.grid_size = (n_columns, n_rows) |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
67 |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
68 def _getNRows(self): |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
69 n_rows = self.grid_size[1] |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
70 return n_rows |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
71 n_rows = property(fget=_getNRows, fset=_getNColumns) |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
72 |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
73 def _setGridSize(self, grid_size): |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
74 n_columns, n_rows = grid_size |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
75 self.removeAllChildren() |
150
3fc7cfa80771
Modified InventoryGrid to set a name for each slot containing the index.
KarstenBock@gmx.net
parents:
149
diff
changeset
|
76 for row_n in xrange(n_rows): |
0
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
77 row_size = (n_columns * 50, 50) |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
78 row = pychan.HBox(min_size=row_size, max_size=row_size, |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
79 padding=self.padding) |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
80 row.border_size = 1 |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
81 row.opaque = 0 |
150
3fc7cfa80771
Modified InventoryGrid to set a name for each slot containing the index.
KarstenBock@gmx.net
parents:
149
diff
changeset
|
82 for column_n in xrange(n_columns): |
0
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
83 slot = pychan.Icon(min_size=(50, 50), max_size=(50, 50)) |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
84 slot.border_size = 1 |
150
3fc7cfa80771
Modified InventoryGrid to set a name for each slot containing the index.
KarstenBock@gmx.net
parents:
149
diff
changeset
|
85 slot.name = "Slot_%d" % (row_n * n_columns + column_n) |
0
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
86 row.addChild(slot) |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
87 self.addChild(row) |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
88 self.min_size = ((n_columns * 50) + 2, (n_rows * 50) + 2) |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
89 self.max_size = self.min_size |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
90 |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
91 def _getGridSize(self): |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
92 n_rows = len(self.children) |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
93 n_columns = len(self.children[0].children) |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
94 return (n_rows, n_columns) |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
95 grid_size = property(fget=_getGridSize, fset=_setGridSize) |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
96 |
150
3fc7cfa80771
Modified InventoryGrid to set a name for each slot containing the index.
KarstenBock@gmx.net
parents:
149
diff
changeset
|
97 def getSlot(self, row_or_index, col=None): |
3fc7cfa80771
Modified InventoryGrid to set a name for each slot containing the index.
KarstenBock@gmx.net
parents:
149
diff
changeset
|
98 if col: |
3fc7cfa80771
Modified InventoryGrid to set a name for each slot containing the index.
KarstenBock@gmx.net
parents:
149
diff
changeset
|
99 index = row * self.n_columns + col |
3fc7cfa80771
Modified InventoryGrid to set a name for each slot containing the index.
KarstenBock@gmx.net
parents:
149
diff
changeset
|
100 else: |
3fc7cfa80771
Modified InventoryGrid to set a name for each slot containing the index.
KarstenBock@gmx.net
parents:
149
diff
changeset
|
101 index = row_or_index |
3fc7cfa80771
Modified InventoryGrid to set a name for each slot containing the index.
KarstenBock@gmx.net
parents:
149
diff
changeset
|
102 return self.findChildByName("Slot_%d" % index) |
3fc7cfa80771
Modified InventoryGrid to set a name for each slot containing the index.
KarstenBock@gmx.net
parents:
149
diff
changeset
|
103 |
0
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
104 def __init__(self, grid_size=(2, 2), padding=0, **kwargs): |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
105 pychan.VBox.__init__(self, padding=padding, **kwargs) |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
106 self.opaque = 0 |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
107 self.grid_size = grid_size |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
108 self.border_size = 1 |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
109 |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
110 |
150
3fc7cfa80771
Modified InventoryGrid to set a name for each slot containing the index.
KarstenBock@gmx.net
parents:
149
diff
changeset
|
111 class EquipmentGUI(ContainerGUIBase): |
149
eab3e1e52497
Modified EquipmentSlot to display an image instead of a text.
KarstenBock@gmx.net
parents:
142
diff
changeset
|
112 def __init__(self, controller, gui, equip, callbacks): |
eab3e1e52497
Modified EquipmentSlot to display an image instead of a text.
KarstenBock@gmx.net
parents:
142
diff
changeset
|
113 ContainerGUIBase.__init__(self, controller, gui) |
eab3e1e52497
Modified EquipmentSlot to display an image instead of a text.
KarstenBock@gmx.net
parents:
142
diff
changeset
|
114 self.equip = equip |
eab3e1e52497
Modified EquipmentSlot to display an image instead of a text.
KarstenBock@gmx.net
parents:
142
diff
changeset
|
115 self.equip_to_gui = { |
eab3e1e52497
Modified EquipmentSlot to display an image instead of a text.
KarstenBock@gmx.net
parents:
142
diff
changeset
|
116 "head": "headSlot", |
eab3e1e52497
Modified EquipmentSlot to display an image instead of a text.
KarstenBock@gmx.net
parents:
142
diff
changeset
|
117 "neck": "neckSlot", |
eab3e1e52497
Modified EquipmentSlot to display an image instead of a text.
KarstenBock@gmx.net
parents:
142
diff
changeset
|
118 "body": "shirtSlot", |
eab3e1e52497
Modified EquipmentSlot to display an image instead of a text.
KarstenBock@gmx.net
parents:
142
diff
changeset
|
119 "belt": "beltSlot", |
eab3e1e52497
Modified EquipmentSlot to display an image instead of a text.
KarstenBock@gmx.net
parents:
142
diff
changeset
|
120 "leg": "pantsSlot", |
eab3e1e52497
Modified EquipmentSlot to display an image instead of a text.
KarstenBock@gmx.net
parents:
142
diff
changeset
|
121 "feet": "bootsSlot", |
eab3e1e52497
Modified EquipmentSlot to display an image instead of a text.
KarstenBock@gmx.net
parents:
142
diff
changeset
|
122 "l_arm": "leftHandSlot", |
eab3e1e52497
Modified EquipmentSlot to display an image instead of a text.
KarstenBock@gmx.net
parents:
142
diff
changeset
|
123 "r_arm": "rightHandSlot", |
eab3e1e52497
Modified EquipmentSlot to display an image instead of a text.
KarstenBock@gmx.net
parents:
142
diff
changeset
|
124 } |
eab3e1e52497
Modified EquipmentSlot to display an image instead of a text.
KarstenBock@gmx.net
parents:
142
diff
changeset
|
125 |
eab3e1e52497
Modified EquipmentSlot to display an image instead of a text.
KarstenBock@gmx.net
parents:
142
diff
changeset
|
126 def updateImages(self): |
eab3e1e52497
Modified EquipmentSlot to display an image instead of a text.
KarstenBock@gmx.net
parents:
142
diff
changeset
|
127 for eq_slot, gui_slot in self.equip_to_gui.iteritems(): |
eab3e1e52497
Modified EquipmentSlot to display an image instead of a text.
KarstenBock@gmx.net
parents:
142
diff
changeset
|
128 widget = self.gui.findChild(name=gui_slot) |
eab3e1e52497
Modified EquipmentSlot to display an image instead of a text.
KarstenBock@gmx.net
parents:
142
diff
changeset
|
129 equipable = equip.get_equipable(self.equip, eq_slot) |
eab3e1e52497
Modified EquipmentSlot to display an image instead of a text.
KarstenBock@gmx.net
parents:
142
diff
changeset
|
130 widget.item = equipable.entity if equipable else None |
eab3e1e52497
Modified EquipmentSlot to display an image instead of a text.
KarstenBock@gmx.net
parents:
142
diff
changeset
|
131 self.updateImage(widget) |
eab3e1e52497
Modified EquipmentSlot to display an image instead of a text.
KarstenBock@gmx.net
parents:
142
diff
changeset
|
132 |
eab3e1e52497
Modified EquipmentSlot to display an image instead of a text.
KarstenBock@gmx.net
parents:
142
diff
changeset
|
133 def updateImage(self, slot): |
eab3e1e52497
Modified EquipmentSlot to display an image instead of a text.
KarstenBock@gmx.net
parents:
142
diff
changeset
|
134 assert(isinstance(slot, EquipmentSlot)) |
eab3e1e52497
Modified EquipmentSlot to display an image instead of a text.
KarstenBock@gmx.net
parents:
142
diff
changeset
|
135 if (slot.item): |
eab3e1e52497
Modified EquipmentSlot to display an image instead of a text.
KarstenBock@gmx.net
parents:
142
diff
changeset
|
136 image = slot.item.containable.image |
eab3e1e52497
Modified EquipmentSlot to display an image instead of a text.
KarstenBock@gmx.net
parents:
142
diff
changeset
|
137 else: |
eab3e1e52497
Modified EquipmentSlot to display an image instead of a text.
KarstenBock@gmx.net
parents:
142
diff
changeset
|
138 image = None |
eab3e1e52497
Modified EquipmentSlot to display an image instead of a text.
KarstenBock@gmx.net
parents:
142
diff
changeset
|
139 slot.image = image |
eab3e1e52497
Modified EquipmentSlot to display an image instead of a text.
KarstenBock@gmx.net
parents:
142
diff
changeset
|
140 |
0
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
141 class InventoryGUI(ContainerGUIBase): |
150
3fc7cfa80771
Modified InventoryGrid to set a name for each slot containing the index.
KarstenBock@gmx.net
parents:
149
diff
changeset
|
142 def __init__(self, controller, gui, container, callbacks): |
3fc7cfa80771
Modified InventoryGrid to set a name for each slot containing the index.
KarstenBock@gmx.net
parents:
149
diff
changeset
|
143 ContainerGUIBase.__init__(self, controller, gui) |
3fc7cfa80771
Modified InventoryGrid to set a name for each slot containing the index.
KarstenBock@gmx.net
parents:
149
diff
changeset
|
144 self.container = container |
3fc7cfa80771
Modified InventoryGrid to set a name for each slot containing the index.
KarstenBock@gmx.net
parents:
149
diff
changeset
|
145 |
3fc7cfa80771
Modified InventoryGrid to set a name for each slot containing the index.
KarstenBock@gmx.net
parents:
149
diff
changeset
|
146 def updateImages(self): |
3fc7cfa80771
Modified InventoryGrid to set a name for each slot containing the index.
KarstenBock@gmx.net
parents:
149
diff
changeset
|
147 grid = self.gui.findChildByName("Grid") |
3fc7cfa80771
Modified InventoryGrid to set a name for each slot containing the index.
KarstenBock@gmx.net
parents:
149
diff
changeset
|
148 assert(isinstance(grid, InventoryGrid)) |
3fc7cfa80771
Modified InventoryGrid to set a name for each slot containing the index.
KarstenBock@gmx.net
parents:
149
diff
changeset
|
149 for index, child in enumerate(self.container.children): |
3fc7cfa80771
Modified InventoryGrid to set a name for each slot containing the index.
KarstenBock@gmx.net
parents:
149
diff
changeset
|
150 slot = grid.getSlot(index) |
3fc7cfa80771
Modified InventoryGrid to set a name for each slot containing the index.
KarstenBock@gmx.net
parents:
149
diff
changeset
|
151 if child: |
3fc7cfa80771
Modified InventoryGrid to set a name for each slot containing the index.
KarstenBock@gmx.net
parents:
149
diff
changeset
|
152 slot.item = child.entity |
3fc7cfa80771
Modified InventoryGrid to set a name for each slot containing the index.
KarstenBock@gmx.net
parents:
149
diff
changeset
|
153 else: |
3fc7cfa80771
Modified InventoryGrid to set a name for each slot containing the index.
KarstenBock@gmx.net
parents:
149
diff
changeset
|
154 slot.item = None |
3fc7cfa80771
Modified InventoryGrid to set a name for each slot containing the index.
KarstenBock@gmx.net
parents:
149
diff
changeset
|
155 self.updateImage(slot) |
3fc7cfa80771
Modified InventoryGrid to set a name for each slot containing the index.
KarstenBock@gmx.net
parents:
149
diff
changeset
|
156 |
3fc7cfa80771
Modified InventoryGrid to set a name for each slot containing the index.
KarstenBock@gmx.net
parents:
149
diff
changeset
|
157 def updateImage(self, slot): |
3fc7cfa80771
Modified InventoryGrid to set a name for each slot containing the index.
KarstenBock@gmx.net
parents:
149
diff
changeset
|
158 assert(isinstance(slot, pychan.Icon)) |
3fc7cfa80771
Modified InventoryGrid to set a name for each slot containing the index.
KarstenBock@gmx.net
parents:
149
diff
changeset
|
159 if (slot.item): |
3fc7cfa80771
Modified InventoryGrid to set a name for each slot containing the index.
KarstenBock@gmx.net
parents:
149
diff
changeset
|
160 image = slot.item.containable.image |
3fc7cfa80771
Modified InventoryGrid to set a name for each slot containing the index.
KarstenBock@gmx.net
parents:
149
diff
changeset
|
161 else: |
3fc7cfa80771
Modified InventoryGrid to set a name for each slot containing the index.
KarstenBock@gmx.net
parents:
149
diff
changeset
|
162 image = None |
3fc7cfa80771
Modified InventoryGrid to set a name for each slot containing the index.
KarstenBock@gmx.net
parents:
149
diff
changeset
|
163 slot.image = image |
3fc7cfa80771
Modified InventoryGrid to set a name for each slot containing the index.
KarstenBock@gmx.net
parents:
149
diff
changeset
|
164 |
3fc7cfa80771
Modified InventoryGrid to set a name for each slot containing the index.
KarstenBock@gmx.net
parents:
149
diff
changeset
|
165 class CharacterGUI(object): |
149
eab3e1e52497
Modified EquipmentSlot to display an image instead of a text.
KarstenBock@gmx.net
parents:
142
diff
changeset
|
166 def __init__(self, controller, gui, container, equip, callbacks): |
0
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
167 self.engine = controller.engine |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
168 self.inventory_shown = False |
150
3fc7cfa80771
Modified InventoryGrid to set a name for each slot containing the index.
KarstenBock@gmx.net
parents:
149
diff
changeset
|
169 if isinstance(gui, pychan.Widget): |
3fc7cfa80771
Modified InventoryGrid to set a name for each slot containing the index.
KarstenBock@gmx.net
parents:
149
diff
changeset
|
170 self.gui = gui |
3fc7cfa80771
Modified InventoryGrid to set a name for each slot containing the index.
KarstenBock@gmx.net
parents:
149
diff
changeset
|
171 elif isinstance(gui, StringTypes): |
3fc7cfa80771
Modified InventoryGrid to set a name for each slot containing the index.
KarstenBock@gmx.net
parents:
149
diff
changeset
|
172 xml_file = vfs.VFS.open(gui) |
3fc7cfa80771
Modified InventoryGrid to set a name for each slot containing the index.
KarstenBock@gmx.net
parents:
149
diff
changeset
|
173 self.gui = pychan.loadXML(xml_file) |
3fc7cfa80771
Modified InventoryGrid to set a name for each slot containing the index.
KarstenBock@gmx.net
parents:
149
diff
changeset
|
174 else: |
3fc7cfa80771
Modified InventoryGrid to set a name for each slot containing the index.
KarstenBock@gmx.net
parents:
149
diff
changeset
|
175 self.gui = pychan.loadXML(gui) |
3fc7cfa80771
Modified InventoryGrid to set a name for each slot containing the index.
KarstenBock@gmx.net
parents:
149
diff
changeset
|
176 |
0
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
177 render_backend = self.engine.getRenderBackend() |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
178 screen_mode = render_backend.getCurrentScreenMode() |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
179 screen_width, screen_height = (screen_mode.getWidth(), |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
180 screen_mode.getHeight()) |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
181 widget_width, widget_height = self.gui.size |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
182 self.gui.position = ((screen_width - widget_width) / 2, |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
183 (screen_height - widget_height) / 2) |
150
3fc7cfa80771
Modified InventoryGrid to set a name for each slot containing the index.
KarstenBock@gmx.net
parents:
149
diff
changeset
|
184 self.equip_gui = EquipmentGUI( |
149
eab3e1e52497
Modified EquipmentSlot to display an image instead of a text.
KarstenBock@gmx.net
parents:
142
diff
changeset
|
185 controller, |
eab3e1e52497
Modified EquipmentSlot to display an image instead of a text.
KarstenBock@gmx.net
parents:
142
diff
changeset
|
186 self.gui.findChildByName("equipmentPage"), |
eab3e1e52497
Modified EquipmentSlot to display an image instead of a text.
KarstenBock@gmx.net
parents:
142
diff
changeset
|
187 equip, callbacks |
eab3e1e52497
Modified EquipmentSlot to display an image instead of a text.
KarstenBock@gmx.net
parents:
142
diff
changeset
|
188 ) |
150
3fc7cfa80771
Modified InventoryGrid to set a name for each slot containing the index.
KarstenBock@gmx.net
parents:
149
diff
changeset
|
189 self.inv_gui = InventoryGUI( |
3fc7cfa80771
Modified InventoryGrid to set a name for each slot containing the index.
KarstenBock@gmx.net
parents:
149
diff
changeset
|
190 controller, |
3fc7cfa80771
Modified InventoryGrid to set a name for each slot containing the index.
KarstenBock@gmx.net
parents:
149
diff
changeset
|
191 self.gui.findChildByName("inventoryPage"), |
3fc7cfa80771
Modified InventoryGrid to set a name for each slot containing the index.
KarstenBock@gmx.net
parents:
149
diff
changeset
|
192 container, callbacks |
3fc7cfa80771
Modified InventoryGrid to set a name for each slot containing the index.
KarstenBock@gmx.net
parents:
149
diff
changeset
|
193 ) |
0
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
194 |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
195 def toggleInventory(self, toggleImage=True): |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
196 """Pause the game and enter the inventory screen, or close the |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
197 inventory screen and resume the game. |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
198 @type toggleImage: bool |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
199 @param toggleImage: |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
200 Call toggleInventoryCallback if True. Toggling via a |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
201 keypress requires that we toggle the Hud inventory image |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
202 explicitly. Clicking on the Hud inventory button toggles the |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
203 image implicitly, so we don't change it. |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
204 @return: None""" |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
205 if not self.inventory_shown: |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
206 self.showInventory() |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
207 self.inventory_shown = True |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
208 else: |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
209 self.closeInventory() |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
210 self.inventory_shown = False |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
211 |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
212 def showInventory(self): |
149
eab3e1e52497
Modified EquipmentSlot to display an image instead of a text.
KarstenBock@gmx.net
parents:
142
diff
changeset
|
213 self.equip_gui.updateImages() |
150
3fc7cfa80771
Modified InventoryGrid to set a name for each slot containing the index.
KarstenBock@gmx.net
parents:
149
diff
changeset
|
214 self.inv_gui.updateImages() |
0
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
215 self.gui.show() |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
216 |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
217 def closeInventory(self): |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
218 self.gui.hide() |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
219 |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
220 |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
221 class _InventoryGUI(ContainerGUIBase): |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
222 """Inventory GUI class""" |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
223 def __init__(self, controller, inventory, callbacks): |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
224 """Initialise the instance. |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
225 @param controller: Current Controller |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
226 @type controller: Class derived from ControllerBase |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
227 @type inventory: Inventory |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
228 @param inventory: An inventory object to be displayed and manipulated |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
229 @type callbacks: dict |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
230 @param callbacks: a dict of callbacks |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
231 refreshReadyImages: |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
232 Function that will make the ready slots on the HUD |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
233 reflect those within the inventory |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
234 toggleInventoryButton: |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
235 Function that will toggle the state of the inventory button |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
236 @return: None""" |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
237 super(InventoryGUI, self).__init__(controller, "gui/inventory.xml") |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
238 self.engine = controller.engine |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
239 self.readyCallback = callbacks['refreshReadyImages'] |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
240 self.toggleInventoryButtonCallback = callbacks['toggleInventoryButton'] |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
241 self.original_cursor_id = self.engine.getCursor().getId() |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
242 |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
243 self.inventory_shown = False |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
244 events_to_map = {} |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
245 self.inventory_storage = inventory |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
246 |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
247 # Buttons of inventory arranged by slots |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
248 |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
249 self.slot_buttons = {'head': ('Head',), 'chest': ('Body',), |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
250 'left_arm': ('LeftHand',), |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
251 'right_arm': ('RightHand',), |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
252 'hips' : ('Belt',), 'left_leg': ('LeftFoot',), |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
253 'right_leg': ('RightFoot',), |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
254 'left_hand': ('LeftHeld',), |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
255 'right_hand': ('RightHeld',), |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
256 'backpack': ('A1', 'A2', 'A3', 'A4', 'A5', |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
257 'B1', 'B2', 'B3', 'B4', 'B5', |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
258 'C1', 'C2', 'C3', 'C4', 'C5', |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
259 'D1', 'D2', 'D3', 'D4', 'D5'), |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
260 'ready': ('Ready1', 'Ready2', 'Ready3', 'Ready4') |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
261 } |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
262 # the images that should be used for the buttons when they are "empty" |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
263 self.slot_empty_images = {'head':'gui/inv_images/inv_head.png', |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
264 'chest':'gui/inv_images/inv_torso.png', |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
265 'left_arm':'gui/inv_images/inv_lhand.png', |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
266 'right_arm':'gui/inv_images/inv_rhand.png', |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
267 'hips':'gui/inv_images/inv_belt.png', |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
268 'left_leg':'gui/inv_images/inv_lfoot.png', |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
269 'right_leg':'gui/inv_images/inv_rfoot.png', |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
270 'left_hand':'gui/inv_images/inv_litem.png', |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
271 'right_hand':'gui/inv_images/inv_ritem.png', |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
272 'backpack':'gui/inv_images/inv_backpack.png', |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
273 'ready':'gui/inv_images/inv_belt_pouches.png', |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
274 } |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
275 self.updateInventoryButtons() |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
276 |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
277 for slot in self.slot_buttons: |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
278 for _, button in enumerate(self.slot_buttons[slot]): |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
279 events_to_map[button] = cbwa(self.dragDrop, button) |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
280 events_to_map[button + "/mouseReleased"] = \ |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
281 self.showContextMenu |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
282 events_to_map['close_button'] = self.closeInventoryAndToggle |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
283 self.gui.mapEvents(events_to_map) |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
284 # TODO: Why the commented out code? |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
285 # self.resetMouseCursor() |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
286 |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
287 def updateImages(self): |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
288 self.updateInventoryButtons() |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
289 |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
290 def updateInventoryButtons (self): |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
291 for slot in self.slot_buttons: |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
292 for index, button in enumerate(self.slot_buttons[slot]): |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
293 widget = self.gui.findChild(name=button) |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
294 widget.slot = slot |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
295 widget.index = index |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
296 widget.item = self.inventory_storage.getItemsInSlot(widget.slot, |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
297 widget.index) |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
298 self.updateImage(widget) |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
299 |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
300 def updateImage(self, button): |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
301 if (button.item == None): |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
302 image = self.slot_empty_images[button.slot] |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
303 else: |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
304 image = button.item.getInventoryThumbnail() |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
305 button.up_image = image |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
306 button.down_image = image |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
307 button.hover_image = image |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
308 |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
309 def closeInventory(self): |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
310 """Close the inventory. |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
311 @return: None""" |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
312 self.gui.hide() |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
313 |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
314 def closeInventoryAndToggle(self): |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
315 """Close the inventory screen. |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
316 @return: None""" |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
317 self.closeInventory() |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
318 self.toggleInventoryButtonCallback() |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
319 self.inventory_shown = False |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
320 |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
321 def toggleInventory(self, toggleImage=True): |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
322 """Pause the game and enter the inventory screen, or close the |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
323 inventory screen and resume the game. |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
324 @type toggleImage: bool |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
325 @param toggleImage: |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
326 Call toggleInventoryCallback if True. Toggling via a |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
327 keypress requires that we toggle the Hud inventory image |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
328 explicitly. Clicking on the Hud inventory button toggles the |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
329 image implicitly, so we don't change it. |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
330 @return: None""" |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
331 if not self.inventory_shown: |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
332 self.showInventory() |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
333 self.inventory_shown = True |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
334 else: |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
335 self.closeInventory() |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
336 self.inventory_shown = False |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
337 |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
338 if toggleImage: |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
339 self.toggleInventoryButtonCallback() |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
340 |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
341 def showInventory(self): |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
342 """Show the inventory. |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
343 @return: None""" |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
344 self.updateInventoryButtons() |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
345 self.gui.show() |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
346 |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
347 def dragObject(self, obj): |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
348 """Drag the selected object. |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
349 @type obj: string |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
350 @param obj: The name of the object within |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
351 the dictionary 'self.buttons' |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
352 @return: None""" |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
353 # get the widget from the inventory with the name obj |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
354 drag_widget = self.gui.findChild(name = obj) |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
355 drag_item = drag_widget.item |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
356 # only drag if the widget is not empty |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
357 if (drag_item != None): |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
358 # get the item that the widget is 'storing' |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
359 data_drag.dragged_item = drag_widget.item |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
360 # get the up and down images of the widget |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
361 up_image = drag_widget.up_image |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
362 down_image = drag_widget.down_image |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
363 # set the mouse cursor to be the widget's image |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
364 self.controller.setMouseCursor(up_image.source,down_image.source) |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
365 data_drag.dragged_image = up_image.source |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
366 data_drag.dragging = True |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
367 data_drag.dragged_widget = drag_widget |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
368 data_drag.source_container = self.inventory_storage |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
369 |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
370 self.inventory_storage.takeItem(drag_widget.item) |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
371 # after dragging the 'item', set the widgets' images |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
372 # so that it has it's default 'empty' images |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
373 drag_widget.item = None |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
374 self.updateImage(drag_widget) |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
375 |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
376 |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
377 def dropObject(self, obj): |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
378 """Drops the object being dropped |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
379 @type obj: string |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
380 @param obj: The name of the object within |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
381 the dictionary 'self.buttons' |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
382 @return: None""" |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
383 drop_widget = self.gui.findChild(name = obj) |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
384 drop_slot, drop_index = drop_widget.slot, drop_widget.index |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
385 replace_item = None |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
386 try : |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
387 if data_drag.dragging: |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
388 inventory = self.inventory_storage |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
389 drag_item = data_drag.dragged_item |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
390 #this will get the replacement item and data for drag_drop if |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
391 ## there is an item All ready occupying the slot |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
392 if not inventory.isSlotEmpty(drop_slot, drop_index): |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
393 #get the item and then remove it from the inventory |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
394 replace_item = inventory.getItemsInSlot \ |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
395 (drop_slot, drop_index) |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
396 self.dragObject(obj) |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
397 self.inventory_storage.moveItemToSlot(drag_item, |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
398 drop_slot, |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
399 drop_index) |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
400 |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
401 if drop_widget.slot == 'ready': |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
402 self.readyCallback() |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
403 |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
404 if replace_item == None: |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
405 self.controller.resetMouseCursor() |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
406 data_drag.dragging = False |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
407 except Container.TooBig : |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
408 logger.warning("%s too big to fit " |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
409 "into %s" % (data_drag.dragged_item, |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
410 drop_widget.slot)) |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
411 except (Container.SlotBusy, Container.ItemSelf): |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
412 pass |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
413 self.updateInventoryButtons() |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
414 |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
415 def createMenuItems(self, item, actions): |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
416 """Creates context menu items for the InventoryGUI""" |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
417 menu_actions = super(InventoryGUI, self).createMenuItems(item, actions) |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
418 param_dict = {} |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
419 param_dict["controller"] = self.controller |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
420 param_dict["commands"] = {} |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
421 param_dict["item"] = item |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
422 param_dict["container_gui"] = self |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
423 menu_actions.append(["Drop", |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
424 "Drop", |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
425 self.executeMenuItem, |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
426 ACTIONS["DropFromInventory"](**param_dict)]) |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
427 return menu_actions |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
428 |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
429 def getImage(self, name): |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
430 """Return a current image from the inventory |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
431 @type name: string |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
432 @param name: name of image to get |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
433 @return: None""" |
1fd2201f5c36
Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
434 return self.gui.findChild(name = name) |