Mercurial > libervia-web
annotate src/browser/sat_browser/game_tarot.py @ 676:849ffb24d5bf frontends_multi_profiles
browser side: menus refactorisation:
- use of the new quick_frontends.quick_menus module, resulting in a big code simplification in Libervia
- menu are added in there respective modules: main menus are done directely in libervia_main, while tarot and radiocol menus are done in game_tarot and game_radiocol
- launchAction has the same signature as in QuickApp
- base_menu: there are now 2 classes to launch an action: MenuCmd which manage quick_menus classes, and SimpleCmd to launch a generic callback
- base_menu: MenuNode has been removed as logic is now in quick_menus
- base_menu: GenericMenuBar.update method can be called to fully (re)build the menus
- base_widget: removed WidgetSubMenuBar which is no more useful (GenericMenuBar do the same thing)
- plugin_menu_context is used in LiberviaWidget and other classes with menus to indicate which menu types must be used
- otr menus hooks are temporarily removed, will be fixed soon
author | Goffi <goffi@goffi.org> |
---|---|
date | Tue, 17 Mar 2015 20:42:02 +0100 |
parents | b39a9eddfe56 |
children | e876f493dccc |
rev | line source |
---|---|
36 | 1 #!/usr/bin/python |
2 # -*- coding: utf-8 -*- | |
3 | |
339
2067d6241927
fixed docstrings wrong usage for licence informations
Goffi <goffi@goffi.org>
parents:
334
diff
changeset
|
4 # Libervia: a Salut à Toi frontend |
340 | 5 # Copyright (C) 2011, 2012, 2013, 2014 Jérôme Poisson <goffi@goffi.org> |
36 | 6 |
339
2067d6241927
fixed docstrings wrong usage for licence informations
Goffi <goffi@goffi.org>
parents:
334
diff
changeset
|
7 # This program is free software: you can redistribute it and/or modify |
2067d6241927
fixed docstrings wrong usage for licence informations
Goffi <goffi@goffi.org>
parents:
334
diff
changeset
|
8 # it under the terms of the GNU Affero General Public License as published by |
2067d6241927
fixed docstrings wrong usage for licence informations
Goffi <goffi@goffi.org>
parents:
334
diff
changeset
|
9 # the Free Software Foundation, either version 3 of the License, or |
2067d6241927
fixed docstrings wrong usage for licence informations
Goffi <goffi@goffi.org>
parents:
334
diff
changeset
|
10 # (at your option) any later version. |
36 | 11 |
339
2067d6241927
fixed docstrings wrong usage for licence informations
Goffi <goffi@goffi.org>
parents:
334
diff
changeset
|
12 # This program is distributed in the hope that it will be useful, |
2067d6241927
fixed docstrings wrong usage for licence informations
Goffi <goffi@goffi.org>
parents:
334
diff
changeset
|
13 # but WITHOUT ANY WARRANTY; without even the implied warranty of |
2067d6241927
fixed docstrings wrong usage for licence informations
Goffi <goffi@goffi.org>
parents:
334
diff
changeset
|
14 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
2067d6241927
fixed docstrings wrong usage for licence informations
Goffi <goffi@goffi.org>
parents:
334
diff
changeset
|
15 # GNU Affero General Public License for more details. |
36 | 16 |
339
2067d6241927
fixed docstrings wrong usage for licence informations
Goffi <goffi@goffi.org>
parents:
334
diff
changeset
|
17 # You should have received a copy of the GNU Affero General Public License |
2067d6241927
fixed docstrings wrong usage for licence informations
Goffi <goffi@goffi.org>
parents:
334
diff
changeset
|
18 # along with this program. If not, see <http://www.gnu.org/licenses/>. |
36 | 19 |
243
63e9b680d3e7
browser_side, blog: better PEP8 compliance
souliane <souliane@mailoo.org>
parents:
238
diff
changeset
|
20 import pyjd # this is dummy in pyjs |
439
d52f529a6d42
browser side: use of new log system (first draft):
Goffi <goffi@goffi.org>
parents:
381
diff
changeset
|
21 from sat.core.log import getLogger |
d52f529a6d42
browser side: use of new log system (first draft):
Goffi <goffi@goffi.org>
parents:
381
diff
changeset
|
22 log = getLogger(__name__) |
672
b39a9eddfe56
browser_side: fixes room games:
souliane <souliane@mailoo.org>
parents:
580
diff
changeset
|
23 |
676
849ffb24d5bf
browser side: menus refactorisation:
Goffi <goffi@goffi.org>
parents:
672
diff
changeset
|
24 from sat.core.i18n import _, D_ |
449
981ed669d3b3
/!\ reorganize all the file hierarchy, move the code and launching script to src:
souliane <souliane@mailoo.org>
parents:
439
diff
changeset
|
25 from sat_frontends.tools.games import TarotCard |
676
849ffb24d5bf
browser side: menus refactorisation:
Goffi <goffi@goffi.org>
parents:
672
diff
changeset
|
26 from sat_frontends.tools import host_listener |
449
981ed669d3b3
/!\ reorganize all the file hierarchy, move the code and launching script to src:
souliane <souliane@mailoo.org>
parents:
439
diff
changeset
|
27 |
36 | 28 from pyjamas.ui.AbsolutePanel import AbsolutePanel |
37
b306aa090438
Tarot game: game launching (first hand showed), and contract selection
Goffi <goffi@goffi.org>
parents:
36
diff
changeset
|
29 from pyjamas.ui.DockPanel import DockPanel |
38
7bea2ae0c4fb
Tarot game: center_panel layout + chien can now be showed + fixed click event inheritance + card selection first draft
Goffi <goffi@goffi.org>
parents:
37
diff
changeset
|
30 from pyjamas.ui.SimplePanel import SimplePanel |
36 | 31 from pyjamas.ui.Image import Image |
37
b306aa090438
Tarot game: game launching (first hand showed), and contract selection
Goffi <goffi@goffi.org>
parents:
36
diff
changeset
|
32 from pyjamas.ui.Label import Label |
38
7bea2ae0c4fb
Tarot game: center_panel layout + chien can now be showed + fixed click event inheritance + card selection first draft
Goffi <goffi@goffi.org>
parents:
37
diff
changeset
|
33 from pyjamas.ui.ClickListener import ClickHandler |
7bea2ae0c4fb
Tarot game: center_panel layout + chien can now be showed + fixed click event inheritance + card selection first draft
Goffi <goffi@goffi.org>
parents:
37
diff
changeset
|
34 from pyjamas.ui.MouseListener import MouseHandler |
37
b306aa090438
Tarot game: game launching (first hand showed), and contract selection
Goffi <goffi@goffi.org>
parents:
36
diff
changeset
|
35 from pyjamas.ui import HasAlignment |
38
7bea2ae0c4fb
Tarot game: center_panel layout + chien can now be showed + fixed click event inheritance + card selection first draft
Goffi <goffi@goffi.org>
parents:
37
diff
changeset
|
36 from pyjamas import Window |
7bea2ae0c4fb
Tarot game: center_panel layout + chien can now be showed + fixed click event inheritance + card selection first draft
Goffi <goffi@goffi.org>
parents:
37
diff
changeset
|
37 from pyjamas import DOM |
676
849ffb24d5bf
browser side: menus refactorisation:
Goffi <goffi@goffi.org>
parents:
672
diff
changeset
|
38 from constants import Const as C |
36 | 39 |
467 | 40 import dialog |
41 import xmlui | |
36 | 42 |
43 | |
44 CARD_WIDTH = 74 | |
45 CARD_HEIGHT = 136 | |
39
305e81c7a32c
Tarot game: a game can now be finished
Goffi <goffi@goffi.org>
parents:
38
diff
changeset
|
46 CARD_DELTA_Y = 30 |
243
63e9b680d3e7
browser_side, blog: better PEP8 compliance
souliane <souliane@mailoo.org>
parents:
238
diff
changeset
|
47 MIN_WIDTH = 950 # Minimum size of the panel |
36 | 48 MIN_HEIGHT = 500 |
49 | |
243
63e9b680d3e7
browser_side, blog: better PEP8 compliance
souliane <souliane@mailoo.org>
parents:
238
diff
changeset
|
50 |
38
7bea2ae0c4fb
Tarot game: center_panel layout + chien can now be showed + fixed click event inheritance + card selection first draft
Goffi <goffi@goffi.org>
parents:
37
diff
changeset
|
51 class CardWidget(TarotCard, Image, MouseHandler): |
36 | 52 """This class is used to represent a card, graphically and logically""" |
53 | |
243
63e9b680d3e7
browser_side, blog: better PEP8 compliance
souliane <souliane@mailoo.org>
parents:
238
diff
changeset
|
54 def __init__(self, parent, file_): |
36 | 55 """@param file: path of the PNG file""" |
38
7bea2ae0c4fb
Tarot game: center_panel layout + chien can now be showed + fixed click event inheritance + card selection first draft
Goffi <goffi@goffi.org>
parents:
37
diff
changeset
|
56 self._parent = parent |
243
63e9b680d3e7
browser_side, blog: better PEP8 compliance
souliane <souliane@mailoo.org>
parents:
238
diff
changeset
|
57 Image.__init__(self, file_) |
63e9b680d3e7
browser_side, blog: better PEP8 compliance
souliane <souliane@mailoo.org>
parents:
238
diff
changeset
|
58 root_name = file_[file_.rfind("/") + 1:-4] |
63e9b680d3e7
browser_side, blog: better PEP8 compliance
souliane <souliane@mailoo.org>
parents:
238
diff
changeset
|
59 suit, value = root_name.split('_') |
36 | 60 TarotCard.__init__(self, (suit, value)) |
38
7bea2ae0c4fb
Tarot game: center_panel layout + chien can now be showed + fixed click event inheritance + card selection first draft
Goffi <goffi@goffi.org>
parents:
37
diff
changeset
|
61 MouseHandler.__init__(self) |
7bea2ae0c4fb
Tarot game: center_panel layout + chien can now be showed + fixed click event inheritance + card selection first draft
Goffi <goffi@goffi.org>
parents:
37
diff
changeset
|
62 self.addMouseListener(self) |
36 | 63 |
38
7bea2ae0c4fb
Tarot game: center_panel layout + chien can now be showed + fixed click event inheritance + card selection first draft
Goffi <goffi@goffi.org>
parents:
37
diff
changeset
|
64 def onMouseEnter(self, sender): |
39
305e81c7a32c
Tarot game: a game can now be finished
Goffi <goffi@goffi.org>
parents:
38
diff
changeset
|
65 if self._parent.state == "ecart" or self._parent.state == "play": |
38
7bea2ae0c4fb
Tarot game: center_panel layout + chien can now be showed + fixed click event inheritance + card selection first draft
Goffi <goffi@goffi.org>
parents:
37
diff
changeset
|
66 DOM.setStyleAttribute(self.getElement(), "top", "0px") |
36 | 67 |
38
7bea2ae0c4fb
Tarot game: center_panel layout + chien can now be showed + fixed click event inheritance + card selection first draft
Goffi <goffi@goffi.org>
parents:
37
diff
changeset
|
68 def onMouseLeave(self, sender): |
39
305e81c7a32c
Tarot game: a game can now be finished
Goffi <goffi@goffi.org>
parents:
38
diff
changeset
|
69 if not self in self._parent.hand: |
305e81c7a32c
Tarot game: a game can now be finished
Goffi <goffi@goffi.org>
parents:
38
diff
changeset
|
70 return |
243
63e9b680d3e7
browser_side, blog: better PEP8 compliance
souliane <souliane@mailoo.org>
parents:
238
diff
changeset
|
71 if not self in list(self._parent.selected): # FIXME: Workaround pyjs bug, must report it |
39
305e81c7a32c
Tarot game: a game can now be finished
Goffi <goffi@goffi.org>
parents:
38
diff
changeset
|
72 DOM.setStyleAttribute(self.getElement(), "top", "%dpx" % CARD_DELTA_Y) |
305e81c7a32c
Tarot game: a game can now be finished
Goffi <goffi@goffi.org>
parents:
38
diff
changeset
|
73 |
305e81c7a32c
Tarot game: a game can now be finished
Goffi <goffi@goffi.org>
parents:
38
diff
changeset
|
74 def onMouseUp(self, sender, x, y): |
305e81c7a32c
Tarot game: a game can now be finished
Goffi <goffi@goffi.org>
parents:
38
diff
changeset
|
75 if self._parent.state == "ecart": |
305e81c7a32c
Tarot game: a game can now be finished
Goffi <goffi@goffi.org>
parents:
38
diff
changeset
|
76 if self not in list(self._parent.selected): |
305e81c7a32c
Tarot game: a game can now be finished
Goffi <goffi@goffi.org>
parents:
38
diff
changeset
|
77 self._parent.addToSelection(self) |
305e81c7a32c
Tarot game: a game can now be finished
Goffi <goffi@goffi.org>
parents:
38
diff
changeset
|
78 else: |
305e81c7a32c
Tarot game: a game can now be finished
Goffi <goffi@goffi.org>
parents:
38
diff
changeset
|
79 self._parent.removeFromSelection(self) |
305e81c7a32c
Tarot game: a game can now be finished
Goffi <goffi@goffi.org>
parents:
38
diff
changeset
|
80 elif self._parent.state == "play": |
305e81c7a32c
Tarot game: a game can now be finished
Goffi <goffi@goffi.org>
parents:
38
diff
changeset
|
81 self._parent.playCard(self) |
38
7bea2ae0c4fb
Tarot game: center_panel layout + chien can now be showed + fixed click event inheritance + card selection first draft
Goffi <goffi@goffi.org>
parents:
37
diff
changeset
|
82 |
243
63e9b680d3e7
browser_side, blog: better PEP8 compliance
souliane <souliane@mailoo.org>
parents:
238
diff
changeset
|
83 |
672
b39a9eddfe56
browser_side: fixes room games:
souliane <souliane@mailoo.org>
parents:
580
diff
changeset
|
84 class TarotPanel(DockPanel, ClickHandler): |
36 | 85 |
672
b39a9eddfe56
browser_side: fixes room games:
souliane <souliane@mailoo.org>
parents:
580
diff
changeset
|
86 def __init__(self, parent, referee, players): |
38
7bea2ae0c4fb
Tarot game: center_panel layout + chien can now be showed + fixed click event inheritance + card selection first draft
Goffi <goffi@goffi.org>
parents:
37
diff
changeset
|
87 DockPanel.__init__(self) |
7bea2ae0c4fb
Tarot game: center_panel layout + chien can now be showed + fixed click event inheritance + card selection first draft
Goffi <goffi@goffi.org>
parents:
37
diff
changeset
|
88 ClickHandler.__init__(self) |
36 | 89 self._parent = parent |
243
63e9b680d3e7
browser_side, blog: better PEP8 compliance
souliane <souliane@mailoo.org>
parents:
238
diff
changeset
|
90 self._autoplay = None # XXX: use 0 to activate fake play, None else |
36 | 91 self.referee = referee |
92 self.players = players | |
672
b39a9eddfe56
browser_side: fixes room games:
souliane <souliane@mailoo.org>
parents:
580
diff
changeset
|
93 self.player_nick = parent.nick |
36 | 94 self.bottom_nick = self.player_nick |
95 idx = self.players.index(self.player_nick) | |
96 idx = (idx + 1) % len(self.players) | |
97 self.right_nick = self.players[idx] | |
98 idx = (idx + 1) % len(self.players) | |
99 self.top_nick = self.players[idx] | |
100 idx = (idx + 1) % len(self.players) | |
101 self.left_nick = self.players[idx] | |
672
b39a9eddfe56
browser_side: fixes room games:
souliane <souliane@mailoo.org>
parents:
580
diff
changeset
|
102 self.bottom_nick = self.player_nick |
243
63e9b680d3e7
browser_side, blog: better PEP8 compliance
souliane <souliane@mailoo.org>
parents:
238
diff
changeset
|
103 self.selected = set() # Card choosed by the player (e.g. during ecart) |
63e9b680d3e7
browser_side, blog: better PEP8 compliance
souliane <souliane@mailoo.org>
parents:
238
diff
changeset
|
104 self.hand_size = 13 # number of cards in a hand |
36 | 105 self.hand = [] |
106 self.to_show = [] | |
107 self.state = None | |
38
7bea2ae0c4fb
Tarot game: center_panel layout + chien can now be showed + fixed click event inheritance + card selection first draft
Goffi <goffi@goffi.org>
parents:
37
diff
changeset
|
108 self.setSize("%dpx" % MIN_WIDTH, "%dpx" % MIN_HEIGHT) |
36 | 109 self.setStyleName("cardPanel") |
243
63e9b680d3e7
browser_side, blog: better PEP8 compliance
souliane <souliane@mailoo.org>
parents:
238
diff
changeset
|
110 |
38
7bea2ae0c4fb
Tarot game: center_panel layout + chien can now be showed + fixed click event inheritance + card selection first draft
Goffi <goffi@goffi.org>
parents:
37
diff
changeset
|
111 # Now we set up the layout |
37
b306aa090438
Tarot game: game launching (first hand showed), and contract selection
Goffi <goffi@goffi.org>
parents:
36
diff
changeset
|
112 _label = Label(self.top_nick) |
b306aa090438
Tarot game: game launching (first hand showed), and contract selection
Goffi <goffi@goffi.org>
parents:
36
diff
changeset
|
113 _label.setStyleName('cardGamePlayerNick') |
b306aa090438
Tarot game: game launching (first hand showed), and contract selection
Goffi <goffi@goffi.org>
parents:
36
diff
changeset
|
114 self.add(_label, DockPanel.NORTH) |
b306aa090438
Tarot game: game launching (first hand showed), and contract selection
Goffi <goffi@goffi.org>
parents:
36
diff
changeset
|
115 self.setCellWidth(_label, '100%') |
243
63e9b680d3e7
browser_side, blog: better PEP8 compliance
souliane <souliane@mailoo.org>
parents:
238
diff
changeset
|
116 self.setCellHorizontalAlignment(_label, HasAlignment.ALIGN_CENTER) |
63e9b680d3e7
browser_side, blog: better PEP8 compliance
souliane <souliane@mailoo.org>
parents:
238
diff
changeset
|
117 |
37
b306aa090438
Tarot game: game launching (first hand showed), and contract selection
Goffi <goffi@goffi.org>
parents:
36
diff
changeset
|
118 self.hand_panel = AbsolutePanel() |
b306aa090438
Tarot game: game launching (first hand showed), and contract selection
Goffi <goffi@goffi.org>
parents:
36
diff
changeset
|
119 self.add(self.hand_panel, DockPanel.SOUTH) |
b306aa090438
Tarot game: game launching (first hand showed), and contract selection
Goffi <goffi@goffi.org>
parents:
36
diff
changeset
|
120 self.setCellWidth(self.hand_panel, '100%') |
b306aa090438
Tarot game: game launching (first hand showed), and contract selection
Goffi <goffi@goffi.org>
parents:
36
diff
changeset
|
121 self.setCellHorizontalAlignment(self.hand_panel, HasAlignment.ALIGN_CENTER) |
b306aa090438
Tarot game: game launching (first hand showed), and contract selection
Goffi <goffi@goffi.org>
parents:
36
diff
changeset
|
122 |
b306aa090438
Tarot game: game launching (first hand showed), and contract selection
Goffi <goffi@goffi.org>
parents:
36
diff
changeset
|
123 _label = Label(self.left_nick) |
b306aa090438
Tarot game: game launching (first hand showed), and contract selection
Goffi <goffi@goffi.org>
parents:
36
diff
changeset
|
124 _label.setStyleName('cardGamePlayerNick') |
b306aa090438
Tarot game: game launching (first hand showed), and contract selection
Goffi <goffi@goffi.org>
parents:
36
diff
changeset
|
125 self.add(_label, DockPanel.WEST) |
b306aa090438
Tarot game: game launching (first hand showed), and contract selection
Goffi <goffi@goffi.org>
parents:
36
diff
changeset
|
126 self.setCellHeight(_label, '100%') |
243
63e9b680d3e7
browser_side, blog: better PEP8 compliance
souliane <souliane@mailoo.org>
parents:
238
diff
changeset
|
127 self.setCellVerticalAlignment(_label, HasAlignment.ALIGN_MIDDLE) |
38
7bea2ae0c4fb
Tarot game: center_panel layout + chien can now be showed + fixed click event inheritance + card selection first draft
Goffi <goffi@goffi.org>
parents:
37
diff
changeset
|
128 |
37
b306aa090438
Tarot game: game launching (first hand showed), and contract selection
Goffi <goffi@goffi.org>
parents:
36
diff
changeset
|
129 _label = Label(self.right_nick) |
b306aa090438
Tarot game: game launching (first hand showed), and contract selection
Goffi <goffi@goffi.org>
parents:
36
diff
changeset
|
130 _label.setStyleName('cardGamePlayerNick') |
b306aa090438
Tarot game: game launching (first hand showed), and contract selection
Goffi <goffi@goffi.org>
parents:
36
diff
changeset
|
131 self.add(_label, DockPanel.EAST) |
b306aa090438
Tarot game: game launching (first hand showed), and contract selection
Goffi <goffi@goffi.org>
parents:
36
diff
changeset
|
132 self.setCellHeight(_label, '100%') |
243
63e9b680d3e7
browser_side, blog: better PEP8 compliance
souliane <souliane@mailoo.org>
parents:
238
diff
changeset
|
133 self.setCellHorizontalAlignment(_label, HasAlignment.ALIGN_RIGHT) |
63e9b680d3e7
browser_side, blog: better PEP8 compliance
souliane <souliane@mailoo.org>
parents:
238
diff
changeset
|
134 self.setCellVerticalAlignment(_label, HasAlignment.ALIGN_MIDDLE) |
38
7bea2ae0c4fb
Tarot game: center_panel layout + chien can now be showed + fixed click event inheritance + card selection first draft
Goffi <goffi@goffi.org>
parents:
37
diff
changeset
|
135 |
37
b306aa090438
Tarot game: game launching (first hand showed), and contract selection
Goffi <goffi@goffi.org>
parents:
36
diff
changeset
|
136 self.center_panel = DockPanel() |
38
7bea2ae0c4fb
Tarot game: center_panel layout + chien can now be showed + fixed click event inheritance + card selection first draft
Goffi <goffi@goffi.org>
parents:
37
diff
changeset
|
137 self.inner_left = SimplePanel() |
39
305e81c7a32c
Tarot game: a game can now be finished
Goffi <goffi@goffi.org>
parents:
38
diff
changeset
|
138 self.inner_left.setSize("%dpx" % CARD_WIDTH, "%dpx" % CARD_HEIGHT) |
38
7bea2ae0c4fb
Tarot game: center_panel layout + chien can now be showed + fixed click event inheritance + card selection first draft
Goffi <goffi@goffi.org>
parents:
37
diff
changeset
|
139 self.center_panel.add(self.inner_left, DockPanel.WEST) |
7bea2ae0c4fb
Tarot game: center_panel layout + chien can now be showed + fixed click event inheritance + card selection first draft
Goffi <goffi@goffi.org>
parents:
37
diff
changeset
|
140 self.center_panel.setCellHeight(self.inner_left, '100%') |
7bea2ae0c4fb
Tarot game: center_panel layout + chien can now be showed + fixed click event inheritance + card selection first draft
Goffi <goffi@goffi.org>
parents:
37
diff
changeset
|
141 self.center_panel.setCellHorizontalAlignment(self.inner_left, HasAlignment.ALIGN_RIGHT) |
7bea2ae0c4fb
Tarot game: center_panel layout + chien can now be showed + fixed click event inheritance + card selection first draft
Goffi <goffi@goffi.org>
parents:
37
diff
changeset
|
142 self.center_panel.setCellVerticalAlignment(self.inner_left, HasAlignment.ALIGN_MIDDLE) |
7bea2ae0c4fb
Tarot game: center_panel layout + chien can now be showed + fixed click event inheritance + card selection first draft
Goffi <goffi@goffi.org>
parents:
37
diff
changeset
|
143 |
7bea2ae0c4fb
Tarot game: center_panel layout + chien can now be showed + fixed click event inheritance + card selection first draft
Goffi <goffi@goffi.org>
parents:
37
diff
changeset
|
144 self.inner_right = SimplePanel() |
39
305e81c7a32c
Tarot game: a game can now be finished
Goffi <goffi@goffi.org>
parents:
38
diff
changeset
|
145 self.inner_right.setSize("%dpx" % CARD_WIDTH, "%dpx" % CARD_HEIGHT) |
38
7bea2ae0c4fb
Tarot game: center_panel layout + chien can now be showed + fixed click event inheritance + card selection first draft
Goffi <goffi@goffi.org>
parents:
37
diff
changeset
|
146 self.center_panel.add(self.inner_right, DockPanel.EAST) |
7bea2ae0c4fb
Tarot game: center_panel layout + chien can now be showed + fixed click event inheritance + card selection first draft
Goffi <goffi@goffi.org>
parents:
37
diff
changeset
|
147 self.center_panel.setCellHeight(self.inner_right, '100%') |
7bea2ae0c4fb
Tarot game: center_panel layout + chien can now be showed + fixed click event inheritance + card selection first draft
Goffi <goffi@goffi.org>
parents:
37
diff
changeset
|
148 self.center_panel.setCellVerticalAlignment(self.inner_right, HasAlignment.ALIGN_MIDDLE) |
243
63e9b680d3e7
browser_side, blog: better PEP8 compliance
souliane <souliane@mailoo.org>
parents:
238
diff
changeset
|
149 |
38
7bea2ae0c4fb
Tarot game: center_panel layout + chien can now be showed + fixed click event inheritance + card selection first draft
Goffi <goffi@goffi.org>
parents:
37
diff
changeset
|
150 self.inner_top = SimplePanel() |
39
305e81c7a32c
Tarot game: a game can now be finished
Goffi <goffi@goffi.org>
parents:
38
diff
changeset
|
151 self.inner_top.setSize("%dpx" % CARD_WIDTH, "%dpx" % CARD_HEIGHT) |
38
7bea2ae0c4fb
Tarot game: center_panel layout + chien can now be showed + fixed click event inheritance + card selection first draft
Goffi <goffi@goffi.org>
parents:
37
diff
changeset
|
152 self.center_panel.add(self.inner_top, DockPanel.NORTH) |
7bea2ae0c4fb
Tarot game: center_panel layout + chien can now be showed + fixed click event inheritance + card selection first draft
Goffi <goffi@goffi.org>
parents:
37
diff
changeset
|
153 self.center_panel.setCellHorizontalAlignment(self.inner_top, HasAlignment.ALIGN_CENTER) |
7bea2ae0c4fb
Tarot game: center_panel layout + chien can now be showed + fixed click event inheritance + card selection first draft
Goffi <goffi@goffi.org>
parents:
37
diff
changeset
|
154 self.center_panel.setCellVerticalAlignment(self.inner_top, HasAlignment.ALIGN_BOTTOM) |
243
63e9b680d3e7
browser_side, blog: better PEP8 compliance
souliane <souliane@mailoo.org>
parents:
238
diff
changeset
|
155 |
38
7bea2ae0c4fb
Tarot game: center_panel layout + chien can now be showed + fixed click event inheritance + card selection first draft
Goffi <goffi@goffi.org>
parents:
37
diff
changeset
|
156 self.inner_bottom = SimplePanel() |
39
305e81c7a32c
Tarot game: a game can now be finished
Goffi <goffi@goffi.org>
parents:
38
diff
changeset
|
157 self.inner_bottom.setSize("%dpx" % CARD_WIDTH, "%dpx" % CARD_HEIGHT) |
38
7bea2ae0c4fb
Tarot game: center_panel layout + chien can now be showed + fixed click event inheritance + card selection first draft
Goffi <goffi@goffi.org>
parents:
37
diff
changeset
|
158 self.center_panel.add(self.inner_bottom, DockPanel.SOUTH) |
7bea2ae0c4fb
Tarot game: center_panel layout + chien can now be showed + fixed click event inheritance + card selection first draft
Goffi <goffi@goffi.org>
parents:
37
diff
changeset
|
159 self.center_panel.setCellHorizontalAlignment(self.inner_bottom, HasAlignment.ALIGN_CENTER) |
7bea2ae0c4fb
Tarot game: center_panel layout + chien can now be showed + fixed click event inheritance + card selection first draft
Goffi <goffi@goffi.org>
parents:
37
diff
changeset
|
160 self.center_panel.setCellVerticalAlignment(self.inner_bottom, HasAlignment.ALIGN_TOP) |
243
63e9b680d3e7
browser_side, blog: better PEP8 compliance
souliane <souliane@mailoo.org>
parents:
238
diff
changeset
|
161 |
38
7bea2ae0c4fb
Tarot game: center_panel layout + chien can now be showed + fixed click event inheritance + card selection first draft
Goffi <goffi@goffi.org>
parents:
37
diff
changeset
|
162 self.inner_center = SimplePanel() |
7bea2ae0c4fb
Tarot game: center_panel layout + chien can now be showed + fixed click event inheritance + card selection first draft
Goffi <goffi@goffi.org>
parents:
37
diff
changeset
|
163 self.center_panel.add(self.inner_center, DockPanel.CENTER) |
7bea2ae0c4fb
Tarot game: center_panel layout + chien can now be showed + fixed click event inheritance + card selection first draft
Goffi <goffi@goffi.org>
parents:
37
diff
changeset
|
164 self.center_panel.setCellHorizontalAlignment(self.inner_center, HasAlignment.ALIGN_CENTER) |
7bea2ae0c4fb
Tarot game: center_panel layout + chien can now be showed + fixed click event inheritance + card selection first draft
Goffi <goffi@goffi.org>
parents:
37
diff
changeset
|
165 self.center_panel.setCellVerticalAlignment(self.inner_center, HasAlignment.ALIGN_MIDDLE) |
7bea2ae0c4fb
Tarot game: center_panel layout + chien can now be showed + fixed click event inheritance + card selection first draft
Goffi <goffi@goffi.org>
parents:
37
diff
changeset
|
166 |
37
b306aa090438
Tarot game: game launching (first hand showed), and contract selection
Goffi <goffi@goffi.org>
parents:
36
diff
changeset
|
167 self.add(self.center_panel, DockPanel.CENTER) |
b306aa090438
Tarot game: game launching (first hand showed), and contract selection
Goffi <goffi@goffi.org>
parents:
36
diff
changeset
|
168 self.setCellWidth(self.center_panel, '100%') |
38
7bea2ae0c4fb
Tarot game: center_panel layout + chien can now be showed + fixed click event inheritance + card selection first draft
Goffi <goffi@goffi.org>
parents:
37
diff
changeset
|
169 self.setCellHeight(self.center_panel, '100%') |
7bea2ae0c4fb
Tarot game: center_panel layout + chien can now be showed + fixed click event inheritance + card selection first draft
Goffi <goffi@goffi.org>
parents:
37
diff
changeset
|
170 self.setCellVerticalAlignment(self.center_panel, HasAlignment.ALIGN_MIDDLE) |
7bea2ae0c4fb
Tarot game: center_panel layout + chien can now be showed + fixed click event inheritance + card selection first draft
Goffi <goffi@goffi.org>
parents:
37
diff
changeset
|
171 self.setCellHorizontalAlignment(self.center_panel, HasAlignment.ALIGN_CENTER) |
37
b306aa090438
Tarot game: game launching (first hand showed), and contract selection
Goffi <goffi@goffi.org>
parents:
36
diff
changeset
|
172 |
36 | 173 self.loadCards() |
243
63e9b680d3e7
browser_side, blog: better PEP8 compliance
souliane <souliane@mailoo.org>
parents:
238
diff
changeset
|
174 self.mouse_over_card = None # contain the card to highlight |
63e9b680d3e7
browser_side, blog: better PEP8 compliance
souliane <souliane@mailoo.org>
parents:
238
diff
changeset
|
175 self.visible_size = CARD_WIDTH / 2 # number of pixels visible for cards |
38
7bea2ae0c4fb
Tarot game: center_panel layout + chien can now be showed + fixed click event inheritance + card selection first draft
Goffi <goffi@goffi.org>
parents:
37
diff
changeset
|
176 self.addClickListener(self) |
36 | 177 |
77 | 178 def loadCards(self): |
179 """Load all the cards in memory""" | |
37
b306aa090438
Tarot game: game launching (first hand showed), and contract selection
Goffi <goffi@goffi.org>
parents:
36
diff
changeset
|
180 def _getTarotCardsPathsCb(paths): |
439
d52f529a6d42
browser side: use of new log system (first draft):
Goffi <goffi@goffi.org>
parents:
381
diff
changeset
|
181 log.debug("_getTarotCardsPathsCb") |
243
63e9b680d3e7
browser_side, blog: better PEP8 compliance
souliane <souliane@mailoo.org>
parents:
238
diff
changeset
|
182 for file_ in paths: |
580
79fbc20c786b
browser_side: fixes call to logging method with more than one argument
souliane <souliane@mailoo.org>
parents:
500
diff
changeset
|
183 log.debug("path: %s" % file_) |
243
63e9b680d3e7
browser_side, blog: better PEP8 compliance
souliane <souliane@mailoo.org>
parents:
238
diff
changeset
|
184 card = CardWidget(self, file_) |
580
79fbc20c786b
browser_side: fixes call to logging method with more than one argument
souliane <souliane@mailoo.org>
parents:
500
diff
changeset
|
185 log.debug("card: %s" % card) |
243
63e9b680d3e7
browser_side, blog: better PEP8 compliance
souliane <souliane@mailoo.org>
parents:
238
diff
changeset
|
186 self.cards[(card.suit, card.value)] = card |
37
b306aa090438
Tarot game: game launching (first hand showed), and contract selection
Goffi <goffi@goffi.org>
parents:
36
diff
changeset
|
187 self.deck.append(card) |
b306aa090438
Tarot game: game launching (first hand showed), and contract selection
Goffi <goffi@goffi.org>
parents:
36
diff
changeset
|
188 self._parent.host.bridge.call('tarotGameReady', None, self.player_nick, self.referee) |
243
63e9b680d3e7
browser_side, blog: better PEP8 compliance
souliane <souliane@mailoo.org>
parents:
238
diff
changeset
|
189 self.cards = {} |
63e9b680d3e7
browser_side, blog: better PEP8 compliance
souliane <souliane@mailoo.org>
parents:
238
diff
changeset
|
190 self.deck = [] |
63e9b680d3e7
browser_side, blog: better PEP8 compliance
souliane <souliane@mailoo.org>
parents:
238
diff
changeset
|
191 self.cards["atout"] = {} # As Tarot is a french game, it's more handy & logical to keep french names |
63e9b680d3e7
browser_side, blog: better PEP8 compliance
souliane <souliane@mailoo.org>
parents:
238
diff
changeset
|
192 self.cards["pique"] = {} # spade |
63e9b680d3e7
browser_side, blog: better PEP8 compliance
souliane <souliane@mailoo.org>
parents:
238
diff
changeset
|
193 self.cards["coeur"] = {} # heart |
63e9b680d3e7
browser_side, blog: better PEP8 compliance
souliane <souliane@mailoo.org>
parents:
238
diff
changeset
|
194 self.cards["carreau"] = {} # diamond |
63e9b680d3e7
browser_side, blog: better PEP8 compliance
souliane <souliane@mailoo.org>
parents:
238
diff
changeset
|
195 self.cards["trefle"] = {} # club |
37
b306aa090438
Tarot game: game launching (first hand showed), and contract selection
Goffi <goffi@goffi.org>
parents:
36
diff
changeset
|
196 self._parent.host.bridge.call('getTarotCardsPaths', _getTarotCardsPathsCb) |
b306aa090438
Tarot game: game launching (first hand showed), and contract selection
Goffi <goffi@goffi.org>
parents:
36
diff
changeset
|
197 |
38
7bea2ae0c4fb
Tarot game: center_panel layout + chien can now be showed + fixed click event inheritance + card selection first draft
Goffi <goffi@goffi.org>
parents:
37
diff
changeset
|
198 def onClick(self, sender): |
7bea2ae0c4fb
Tarot game: center_panel layout + chien can now be showed + fixed click event inheritance + card selection first draft
Goffi <goffi@goffi.org>
parents:
37
diff
changeset
|
199 if self.state == "chien": |
7bea2ae0c4fb
Tarot game: center_panel layout + chien can now be showed + fixed click event inheritance + card selection first draft
Goffi <goffi@goffi.org>
parents:
37
diff
changeset
|
200 self.to_show = [] |
7bea2ae0c4fb
Tarot game: center_panel layout + chien can now be showed + fixed click event inheritance + card selection first draft
Goffi <goffi@goffi.org>
parents:
37
diff
changeset
|
201 self.state = "wait" |
7bea2ae0c4fb
Tarot game: center_panel layout + chien can now be showed + fixed click event inheritance + card selection first draft
Goffi <goffi@goffi.org>
parents:
37
diff
changeset
|
202 self.updateToShow() |
7bea2ae0c4fb
Tarot game: center_panel layout + chien can now be showed + fixed click event inheritance + card selection first draft
Goffi <goffi@goffi.org>
parents:
37
diff
changeset
|
203 elif self.state == "wait_for_ecart": |
7bea2ae0c4fb
Tarot game: center_panel layout + chien can now be showed + fixed click event inheritance + card selection first draft
Goffi <goffi@goffi.org>
parents:
37
diff
changeset
|
204 self.state = "ecart" |
7bea2ae0c4fb
Tarot game: center_panel layout + chien can now be showed + fixed click event inheritance + card selection first draft
Goffi <goffi@goffi.org>
parents:
37
diff
changeset
|
205 self.hand.extend(self.to_show) |
7bea2ae0c4fb
Tarot game: center_panel layout + chien can now be showed + fixed click event inheritance + card selection first draft
Goffi <goffi@goffi.org>
parents:
37
diff
changeset
|
206 self.hand.sort() |
7bea2ae0c4fb
Tarot game: center_panel layout + chien can now be showed + fixed click event inheritance + card selection first draft
Goffi <goffi@goffi.org>
parents:
37
diff
changeset
|
207 self.to_show = [] |
7bea2ae0c4fb
Tarot game: center_panel layout + chien can now be showed + fixed click event inheritance + card selection first draft
Goffi <goffi@goffi.org>
parents:
37
diff
changeset
|
208 self.updateToShow() |
7bea2ae0c4fb
Tarot game: center_panel layout + chien can now be showed + fixed click event inheritance + card selection first draft
Goffi <goffi@goffi.org>
parents:
37
diff
changeset
|
209 self.updateHand() |
7bea2ae0c4fb
Tarot game: center_panel layout + chien can now be showed + fixed click event inheritance + card selection first draft
Goffi <goffi@goffi.org>
parents:
37
diff
changeset
|
210 |
672
b39a9eddfe56
browser_side: fixes room games:
souliane <souliane@mailoo.org>
parents:
580
diff
changeset
|
211 def tarotGameNewHandler(self, hand): |
37
b306aa090438
Tarot game: game launching (first hand showed), and contract selection
Goffi <goffi@goffi.org>
parents:
36
diff
changeset
|
212 """Start a new game, with given hand""" |
381
b96b8b666d17
plugin card_game: update to use the new XMLUI mechanism + copy the autoplay mode from QuickFrontend:
souliane <souliane@mailoo.org>
parents:
372
diff
changeset
|
213 if hand is []: # reset the display after the scores have been showed |
b96b8b666d17
plugin card_game: update to use the new XMLUI mechanism + copy the autoplay mode from QuickFrontend:
souliane <souliane@mailoo.org>
parents:
372
diff
changeset
|
214 self.selected.clear() |
b96b8b666d17
plugin card_game: update to use the new XMLUI mechanism + copy the autoplay mode from QuickFrontend:
souliane <souliane@mailoo.org>
parents:
372
diff
changeset
|
215 del self.hand[:] |
b96b8b666d17
plugin card_game: update to use the new XMLUI mechanism + copy the autoplay mode from QuickFrontend:
souliane <souliane@mailoo.org>
parents:
372
diff
changeset
|
216 del self.to_show[:] |
b96b8b666d17
plugin card_game: update to use the new XMLUI mechanism + copy the autoplay mode from QuickFrontend:
souliane <souliane@mailoo.org>
parents:
372
diff
changeset
|
217 self.state = None |
b96b8b666d17
plugin card_game: update to use the new XMLUI mechanism + copy the autoplay mode from QuickFrontend:
souliane <souliane@mailoo.org>
parents:
372
diff
changeset
|
218 #empty hand |
b96b8b666d17
plugin card_game: update to use the new XMLUI mechanism + copy the autoplay mode from QuickFrontend:
souliane <souliane@mailoo.org>
parents:
372
diff
changeset
|
219 self.updateHand() |
b96b8b666d17
plugin card_game: update to use the new XMLUI mechanism + copy the autoplay mode from QuickFrontend:
souliane <souliane@mailoo.org>
parents:
372
diff
changeset
|
220 #nothing on the table |
b96b8b666d17
plugin card_game: update to use the new XMLUI mechanism + copy the autoplay mode from QuickFrontend:
souliane <souliane@mailoo.org>
parents:
372
diff
changeset
|
221 self.updateToShow() |
b96b8b666d17
plugin card_game: update to use the new XMLUI mechanism + copy the autoplay mode from QuickFrontend:
souliane <souliane@mailoo.org>
parents:
372
diff
changeset
|
222 for pos in ['top', 'left', 'bottom', 'right']: |
b96b8b666d17
plugin card_game: update to use the new XMLUI mechanism + copy the autoplay mode from QuickFrontend:
souliane <souliane@mailoo.org>
parents:
372
diff
changeset
|
223 getattr(self, "inner_%s" % pos).setWidget(None) |
b96b8b666d17
plugin card_game: update to use the new XMLUI mechanism + copy the autoplay mode from QuickFrontend:
souliane <souliane@mailoo.org>
parents:
372
diff
changeset
|
224 self._parent.host.bridge.call('tarotGameReady', None, self.player_nick, self.referee) |
b96b8b666d17
plugin card_game: update to use the new XMLUI mechanism + copy the autoplay mode from QuickFrontend:
souliane <souliane@mailoo.org>
parents:
372
diff
changeset
|
225 return |
37
b306aa090438
Tarot game: game launching (first hand showed), and contract selection
Goffi <goffi@goffi.org>
parents:
36
diff
changeset
|
226 for suit, value in hand: |
b306aa090438
Tarot game: game launching (first hand showed), and contract selection
Goffi <goffi@goffi.org>
parents:
36
diff
changeset
|
227 self.hand.append(self.cards[(suit, value)]) |
b306aa090438
Tarot game: game launching (first hand showed), and contract selection
Goffi <goffi@goffi.org>
parents:
36
diff
changeset
|
228 self.hand.sort() |
b306aa090438
Tarot game: game launching (first hand showed), and contract selection
Goffi <goffi@goffi.org>
parents:
36
diff
changeset
|
229 self.state = "init" |
b306aa090438
Tarot game: game launching (first hand showed), and contract selection
Goffi <goffi@goffi.org>
parents:
36
diff
changeset
|
230 self.updateHand() |
36 | 231 |
37
b306aa090438
Tarot game: game launching (first hand showed), and contract selection
Goffi <goffi@goffi.org>
parents:
36
diff
changeset
|
232 def updateHand(self): |
b306aa090438
Tarot game: game launching (first hand showed), and contract selection
Goffi <goffi@goffi.org>
parents:
36
diff
changeset
|
233 """Show the cards in the hand in the hand_panel (SOUTH panel)""" |
b306aa090438
Tarot game: game launching (first hand showed), and contract selection
Goffi <goffi@goffi.org>
parents:
36
diff
changeset
|
234 self.hand_panel.clear() |
243
63e9b680d3e7
browser_side, blog: better PEP8 compliance
souliane <souliane@mailoo.org>
parents:
238
diff
changeset
|
235 self.hand_panel.setSize("%dpx" % (self.visible_size * (len(self.hand) + 1)), "%dpx" % (CARD_HEIGHT + CARD_DELTA_Y + 10)) |
37
b306aa090438
Tarot game: game launching (first hand showed), and contract selection
Goffi <goffi@goffi.org>
parents:
36
diff
changeset
|
236 x_pos = 0 |
38
7bea2ae0c4fb
Tarot game: center_panel layout + chien can now be showed + fixed click event inheritance + card selection first draft
Goffi <goffi@goffi.org>
parents:
37
diff
changeset
|
237 y_pos = CARD_DELTA_Y |
37
b306aa090438
Tarot game: game launching (first hand showed), and contract selection
Goffi <goffi@goffi.org>
parents:
36
diff
changeset
|
238 for card in self.hand: |
b306aa090438
Tarot game: game launching (first hand showed), and contract selection
Goffi <goffi@goffi.org>
parents:
36
diff
changeset
|
239 self.hand_panel.add(card, x_pos, y_pos) |
243
63e9b680d3e7
browser_side, blog: better PEP8 compliance
souliane <souliane@mailoo.org>
parents:
238
diff
changeset
|
240 x_pos += self.visible_size |
63e9b680d3e7
browser_side, blog: better PEP8 compliance
souliane <souliane@mailoo.org>
parents:
238
diff
changeset
|
241 |
38
7bea2ae0c4fb
Tarot game: center_panel layout + chien can now be showed + fixed click event inheritance + card selection first draft
Goffi <goffi@goffi.org>
parents:
37
diff
changeset
|
242 def updateToShow(self): |
7bea2ae0c4fb
Tarot game: center_panel layout + chien can now be showed + fixed click event inheritance + card selection first draft
Goffi <goffi@goffi.org>
parents:
37
diff
changeset
|
243 """Show cards in the center panel""" |
7bea2ae0c4fb
Tarot game: center_panel layout + chien can now be showed + fixed click event inheritance + card selection first draft
Goffi <goffi@goffi.org>
parents:
37
diff
changeset
|
244 if not self.to_show: |
7bea2ae0c4fb
Tarot game: center_panel layout + chien can now be showed + fixed click event inheritance + card selection first draft
Goffi <goffi@goffi.org>
parents:
37
diff
changeset
|
245 _widget = self.inner_center.getWidget() |
243
63e9b680d3e7
browser_side, blog: better PEP8 compliance
souliane <souliane@mailoo.org>
parents:
238
diff
changeset
|
246 if _widget: |
38
7bea2ae0c4fb
Tarot game: center_panel layout + chien can now be showed + fixed click event inheritance + card selection first draft
Goffi <goffi@goffi.org>
parents:
37
diff
changeset
|
247 self.inner_center.remove(_widget) |
7bea2ae0c4fb
Tarot game: center_panel layout + chien can now be showed + fixed click event inheritance + card selection first draft
Goffi <goffi@goffi.org>
parents:
37
diff
changeset
|
248 return |
7bea2ae0c4fb
Tarot game: center_panel layout + chien can now be showed + fixed click event inheritance + card selection first draft
Goffi <goffi@goffi.org>
parents:
37
diff
changeset
|
249 panel = AbsolutePanel() |
7bea2ae0c4fb
Tarot game: center_panel layout + chien can now be showed + fixed click event inheritance + card selection first draft
Goffi <goffi@goffi.org>
parents:
37
diff
changeset
|
250 panel.setSize("%dpx" % ((CARD_WIDTH + 5) * len(self.to_show) - 5), "%dpx" % (CARD_HEIGHT)) |
7bea2ae0c4fb
Tarot game: center_panel layout + chien can now be showed + fixed click event inheritance + card selection first draft
Goffi <goffi@goffi.org>
parents:
37
diff
changeset
|
251 x_pos = 0 |
7bea2ae0c4fb
Tarot game: center_panel layout + chien can now be showed + fixed click event inheritance + card selection first draft
Goffi <goffi@goffi.org>
parents:
37
diff
changeset
|
252 y_pos = 0 |
7bea2ae0c4fb
Tarot game: center_panel layout + chien can now be showed + fixed click event inheritance + card selection first draft
Goffi <goffi@goffi.org>
parents:
37
diff
changeset
|
253 for card in self.to_show: |
7bea2ae0c4fb
Tarot game: center_panel layout + chien can now be showed + fixed click event inheritance + card selection first draft
Goffi <goffi@goffi.org>
parents:
37
diff
changeset
|
254 panel.add(card, x_pos, y_pos) |
243
63e9b680d3e7
browser_side, blog: better PEP8 compliance
souliane <souliane@mailoo.org>
parents:
238
diff
changeset
|
255 x_pos += CARD_WIDTH + 5 |
38
7bea2ae0c4fb
Tarot game: center_panel layout + chien can now be showed + fixed click event inheritance + card selection first draft
Goffi <goffi@goffi.org>
parents:
37
diff
changeset
|
256 self.inner_center.setWidget(panel) |
7bea2ae0c4fb
Tarot game: center_panel layout + chien can now be showed + fixed click event inheritance + card selection first draft
Goffi <goffi@goffi.org>
parents:
37
diff
changeset
|
257 |
39
305e81c7a32c
Tarot game: a game can now be finished
Goffi <goffi@goffi.org>
parents:
38
diff
changeset
|
258 def _ecartConfirm(self, confirm): |
305e81c7a32c
Tarot game: a game can now be finished
Goffi <goffi@goffi.org>
parents:
38
diff
changeset
|
259 if not confirm: |
305e81c7a32c
Tarot game: a game can now be finished
Goffi <goffi@goffi.org>
parents:
38
diff
changeset
|
260 return |
305e81c7a32c
Tarot game: a game can now be finished
Goffi <goffi@goffi.org>
parents:
38
diff
changeset
|
261 ecart = [] |
305e81c7a32c
Tarot game: a game can now be finished
Goffi <goffi@goffi.org>
parents:
38
diff
changeset
|
262 for card in self.selected: |
305e81c7a32c
Tarot game: a game can now be finished
Goffi <goffi@goffi.org>
parents:
38
diff
changeset
|
263 ecart.append((card.suit, card.value)) |
305e81c7a32c
Tarot game: a game can now be finished
Goffi <goffi@goffi.org>
parents:
38
diff
changeset
|
264 self.hand.remove(card) |
305e81c7a32c
Tarot game: a game can now be finished
Goffi <goffi@goffi.org>
parents:
38
diff
changeset
|
265 self.selected.clear() |
305e81c7a32c
Tarot game: a game can now be finished
Goffi <goffi@goffi.org>
parents:
38
diff
changeset
|
266 self._parent.host.bridge.call('tarotGamePlayCards', None, self.player_nick, self.referee, ecart) |
305e81c7a32c
Tarot game: a game can now be finished
Goffi <goffi@goffi.org>
parents:
38
diff
changeset
|
267 self.state = "wait" |
305e81c7a32c
Tarot game: a game can now be finished
Goffi <goffi@goffi.org>
parents:
38
diff
changeset
|
268 self.updateHand() |
243
63e9b680d3e7
browser_side, blog: better PEP8 compliance
souliane <souliane@mailoo.org>
parents:
238
diff
changeset
|
269 |
39
305e81c7a32c
Tarot game: a game can now be finished
Goffi <goffi@goffi.org>
parents:
38
diff
changeset
|
270 def addToSelection(self, card): |
305e81c7a32c
Tarot game: a game can now be finished
Goffi <goffi@goffi.org>
parents:
38
diff
changeset
|
271 self.selected.add(card) |
305e81c7a32c
Tarot game: a game can now be finished
Goffi <goffi@goffi.org>
parents:
38
diff
changeset
|
272 if len(self.selected) == 6: |
467 | 273 dialog.ConfirmDialog(self._ecartConfirm, "Put these cards into chien ?").show() |
39
305e81c7a32c
Tarot game: a game can now be finished
Goffi <goffi@goffi.org>
parents:
38
diff
changeset
|
274 |
672
b39a9eddfe56
browser_side: fixes room games:
souliane <souliane@mailoo.org>
parents:
580
diff
changeset
|
275 def tarotGameInvalidCardsHandler(self, phase, played_cards, invalid_cards): |
39
305e81c7a32c
Tarot game: a game can now be finished
Goffi <goffi@goffi.org>
parents:
38
diff
changeset
|
276 """Invalid cards have been played |
305e81c7a32c
Tarot game: a game can now be finished
Goffi <goffi@goffi.org>
parents:
38
diff
changeset
|
277 @param phase: phase of the game |
305e81c7a32c
Tarot game: a game can now be finished
Goffi <goffi@goffi.org>
parents:
38
diff
changeset
|
278 @param played_cards: all the cards played |
305e81c7a32c
Tarot game: a game can now be finished
Goffi <goffi@goffi.org>
parents:
38
diff
changeset
|
279 @param invalid_cards: cards which are invalid""" |
305e81c7a32c
Tarot game: a game can now be finished
Goffi <goffi@goffi.org>
parents:
38
diff
changeset
|
280 |
305e81c7a32c
Tarot game: a game can now be finished
Goffi <goffi@goffi.org>
parents:
38
diff
changeset
|
281 if phase == "play": |
305e81c7a32c
Tarot game: a game can now be finished
Goffi <goffi@goffi.org>
parents:
38
diff
changeset
|
282 self.state = "play" |
305e81c7a32c
Tarot game: a game can now be finished
Goffi <goffi@goffi.org>
parents:
38
diff
changeset
|
283 elif phase == "ecart": |
305e81c7a32c
Tarot game: a game can now be finished
Goffi <goffi@goffi.org>
parents:
38
diff
changeset
|
284 self.state = "ecart" |
305e81c7a32c
Tarot game: a game can now be finished
Goffi <goffi@goffi.org>
parents:
38
diff
changeset
|
285 else: |
451 | 286 log.error("INTERNAL ERROR: unmanaged game phase") # FIXME: raise an exception here |
243
63e9b680d3e7
browser_side, blog: better PEP8 compliance
souliane <souliane@mailoo.org>
parents:
238
diff
changeset
|
287 |
39
305e81c7a32c
Tarot game: a game can now be finished
Goffi <goffi@goffi.org>
parents:
38
diff
changeset
|
288 for suit, value in played_cards: |
305e81c7a32c
Tarot game: a game can now be finished
Goffi <goffi@goffi.org>
parents:
38
diff
changeset
|
289 self.hand.append(self.cards[(suit, value)]) |
243
63e9b680d3e7
browser_side, blog: better PEP8 compliance
souliane <souliane@mailoo.org>
parents:
238
diff
changeset
|
290 |
39
305e81c7a32c
Tarot game: a game can now be finished
Goffi <goffi@goffi.org>
parents:
38
diff
changeset
|
291 self.hand.sort() |
305e81c7a32c
Tarot game: a game can now be finished
Goffi <goffi@goffi.org>
parents:
38
diff
changeset
|
292 self.updateHand() |
381
b96b8b666d17
plugin card_game: update to use the new XMLUI mechanism + copy the autoplay mode from QuickFrontend:
souliane <souliane@mailoo.org>
parents:
372
diff
changeset
|
293 if self._autoplay == None: # No dialog if there is autoplay |
b96b8b666d17
plugin card_game: update to use the new XMLUI mechanism + copy the autoplay mode from QuickFrontend:
souliane <souliane@mailoo.org>
parents:
372
diff
changeset
|
294 Window.alert('Cards played are invalid !') |
b96b8b666d17
plugin card_game: update to use the new XMLUI mechanism + copy the autoplay mode from QuickFrontend:
souliane <souliane@mailoo.org>
parents:
372
diff
changeset
|
295 self.__fakePlay() |
39
305e81c7a32c
Tarot game: a game can now be finished
Goffi <goffi@goffi.org>
parents:
38
diff
changeset
|
296 |
305e81c7a32c
Tarot game: a game can now be finished
Goffi <goffi@goffi.org>
parents:
38
diff
changeset
|
297 def removeFromSelection(self, card): |
305e81c7a32c
Tarot game: a game can now be finished
Goffi <goffi@goffi.org>
parents:
38
diff
changeset
|
298 self.selected.remove(card) |
305e81c7a32c
Tarot game: a game can now be finished
Goffi <goffi@goffi.org>
parents:
38
diff
changeset
|
299 if len(self.selected) == 6: |
467 | 300 dialog.ConfirmDialog(self._ecartConfirm, "Put these cards into chien ?").show() |
38
7bea2ae0c4fb
Tarot game: center_panel layout + chien can now be showed + fixed click event inheritance + card selection first draft
Goffi <goffi@goffi.org>
parents:
37
diff
changeset
|
301 |
672
b39a9eddfe56
browser_side: fixes room games:
souliane <souliane@mailoo.org>
parents:
580
diff
changeset
|
302 def tarotGameChooseContratHandler(self, xml_data): |
381
b96b8b666d17
plugin card_game: update to use the new XMLUI mechanism + copy the autoplay mode from QuickFrontend:
souliane <souliane@mailoo.org>
parents:
372
diff
changeset
|
303 """Called when the player has to select his contrat |
37
b306aa090438
Tarot game: game launching (first hand showed), and contract selection
Goffi <goffi@goffi.org>
parents:
36
diff
changeset
|
304 @param xml_data: SàT xml representation of the form""" |
500
67a4e8383b70
browser side (XMLUI): XMLUI update to follow core changes:
Goffi <goffi@goffi.org>
parents:
467
diff
changeset
|
305 body = xmlui.create(self._parent.host, xml_data, flags=['NO_CANCEL']) |
467 | 306 _dialog = dialog.GenericDialog(_('Please choose your contrat'), body, options=['NO_CLOSE']) |
381
b96b8b666d17
plugin card_game: update to use the new XMLUI mechanism + copy the autoplay mode from QuickFrontend:
souliane <souliane@mailoo.org>
parents:
372
diff
changeset
|
307 body.setCloseCb(_dialog.close) |
b96b8b666d17
plugin card_game: update to use the new XMLUI mechanism + copy the autoplay mode from QuickFrontend:
souliane <souliane@mailoo.org>
parents:
372
diff
changeset
|
308 _dialog.show() |
38
7bea2ae0c4fb
Tarot game: center_panel layout + chien can now be showed + fixed click event inheritance + card selection first draft
Goffi <goffi@goffi.org>
parents:
37
diff
changeset
|
309 |
672
b39a9eddfe56
browser_side: fixes room games:
souliane <souliane@mailoo.org>
parents:
580
diff
changeset
|
310 def tarotGameShowCardsHandler(self, game_stage, cards, data): |
38
7bea2ae0c4fb
Tarot game: center_panel layout + chien can now be showed + fixed click event inheritance + card selection first draft
Goffi <goffi@goffi.org>
parents:
37
diff
changeset
|
311 """Display cards in the middle of the game (to show for e.g. chien ou poignée)""" |
7bea2ae0c4fb
Tarot game: center_panel layout + chien can now be showed + fixed click event inheritance + card selection first draft
Goffi <goffi@goffi.org>
parents:
37
diff
changeset
|
312 self.to_show = [] |
7bea2ae0c4fb
Tarot game: center_panel layout + chien can now be showed + fixed click event inheritance + card selection first draft
Goffi <goffi@goffi.org>
parents:
37
diff
changeset
|
313 for suit, value in cards: |
7bea2ae0c4fb
Tarot game: center_panel layout + chien can now be showed + fixed click event inheritance + card selection first draft
Goffi <goffi@goffi.org>
parents:
37
diff
changeset
|
314 self.to_show.append(self.cards[(suit, value)]) |
7bea2ae0c4fb
Tarot game: center_panel layout + chien can now be showed + fixed click event inheritance + card selection first draft
Goffi <goffi@goffi.org>
parents:
37
diff
changeset
|
315 self.updateToShow() |
7bea2ae0c4fb
Tarot game: center_panel layout + chien can now be showed + fixed click event inheritance + card selection first draft
Goffi <goffi@goffi.org>
parents:
37
diff
changeset
|
316 if game_stage == "chien" and data['attaquant'] == self.player_nick: |
7bea2ae0c4fb
Tarot game: center_panel layout + chien can now be showed + fixed click event inheritance + card selection first draft
Goffi <goffi@goffi.org>
parents:
37
diff
changeset
|
317 self.state = "wait_for_ecart" |
7bea2ae0c4fb
Tarot game: center_panel layout + chien can now be showed + fixed click event inheritance + card selection first draft
Goffi <goffi@goffi.org>
parents:
37
diff
changeset
|
318 else: |
7bea2ae0c4fb
Tarot game: center_panel layout + chien can now be showed + fixed click event inheritance + card selection first draft
Goffi <goffi@goffi.org>
parents:
37
diff
changeset
|
319 self.state = "chien" |
7bea2ae0c4fb
Tarot game: center_panel layout + chien can now be showed + fixed click event inheritance + card selection first draft
Goffi <goffi@goffi.org>
parents:
37
diff
changeset
|
320 |
39
305e81c7a32c
Tarot game: a game can now be finished
Goffi <goffi@goffi.org>
parents:
38
diff
changeset
|
321 def getPlayerLocation(self, nick): |
305e81c7a32c
Tarot game: a game can now be finished
Goffi <goffi@goffi.org>
parents:
38
diff
changeset
|
322 """return player location (top,bottom,left or right)""" |
243
63e9b680d3e7
browser_side, blog: better PEP8 compliance
souliane <souliane@mailoo.org>
parents:
238
diff
changeset
|
323 for location in ['top', 'left', 'bottom', 'right']: |
63e9b680d3e7
browser_side, blog: better PEP8 compliance
souliane <souliane@mailoo.org>
parents:
238
diff
changeset
|
324 if getattr(self, '%s_nick' % location) == nick: |
39
305e81c7a32c
Tarot game: a game can now be finished
Goffi <goffi@goffi.org>
parents:
38
diff
changeset
|
325 return location |
439
d52f529a6d42
browser side: use of new log system (first draft):
Goffi <goffi@goffi.org>
parents:
381
diff
changeset
|
326 log.error("This line should not be reached") |
39
305e81c7a32c
Tarot game: a game can now be finished
Goffi <goffi@goffi.org>
parents:
38
diff
changeset
|
327 |
672
b39a9eddfe56
browser_side: fixes room games:
souliane <souliane@mailoo.org>
parents:
580
diff
changeset
|
328 def tarotGameCardsPlayedHandler(self, player, cards): |
39
305e81c7a32c
Tarot game: a game can now be finished
Goffi <goffi@goffi.org>
parents:
38
diff
changeset
|
329 """A card has been played by player""" |
305e81c7a32c
Tarot game: a game can now be finished
Goffi <goffi@goffi.org>
parents:
38
diff
changeset
|
330 if not len(cards): |
439
d52f529a6d42
browser side: use of new log system (first draft):
Goffi <goffi@goffi.org>
parents:
381
diff
changeset
|
331 log.warning("cards should not be empty") |
39
305e81c7a32c
Tarot game: a game can now be finished
Goffi <goffi@goffi.org>
parents:
38
diff
changeset
|
332 return |
305e81c7a32c
Tarot game: a game can now be finished
Goffi <goffi@goffi.org>
parents:
38
diff
changeset
|
333 if len(cards) > 1: |
439
d52f529a6d42
browser side: use of new log system (first draft):
Goffi <goffi@goffi.org>
parents:
381
diff
changeset
|
334 log.error("can't manage several cards played") |
39
305e81c7a32c
Tarot game: a game can now be finished
Goffi <goffi@goffi.org>
parents:
38
diff
changeset
|
335 if self.to_show: |
305e81c7a32c
Tarot game: a game can now be finished
Goffi <goffi@goffi.org>
parents:
38
diff
changeset
|
336 self.to_show = [] |
305e81c7a32c
Tarot game: a game can now be finished
Goffi <goffi@goffi.org>
parents:
38
diff
changeset
|
337 self.updateToShow() |
305e81c7a32c
Tarot game: a game can now be finished
Goffi <goffi@goffi.org>
parents:
38
diff
changeset
|
338 suit, value = cards[0] |
305e81c7a32c
Tarot game: a game can now be finished
Goffi <goffi@goffi.org>
parents:
38
diff
changeset
|
339 player_pos = self.getPlayerLocation(player) |
305e81c7a32c
Tarot game: a game can now be finished
Goffi <goffi@goffi.org>
parents:
38
diff
changeset
|
340 player_panel = getattr(self, "inner_%s" % player_pos) |
305e81c7a32c
Tarot game: a game can now be finished
Goffi <goffi@goffi.org>
parents:
38
diff
changeset
|
341 |
305e81c7a32c
Tarot game: a game can now be finished
Goffi <goffi@goffi.org>
parents:
38
diff
changeset
|
342 if player_panel.getWidget() != None: |
305e81c7a32c
Tarot game: a game can now be finished
Goffi <goffi@goffi.org>
parents:
38
diff
changeset
|
343 #We have already cards on the table, we remove them |
243
63e9b680d3e7
browser_side, blog: better PEP8 compliance
souliane <souliane@mailoo.org>
parents:
238
diff
changeset
|
344 for pos in ['top', 'left', 'bottom', 'right']: |
39
305e81c7a32c
Tarot game: a game can now be finished
Goffi <goffi@goffi.org>
parents:
38
diff
changeset
|
345 getattr(self, "inner_%s" % pos).setWidget(None) |
243
63e9b680d3e7
browser_side, blog: better PEP8 compliance
souliane <souliane@mailoo.org>
parents:
238
diff
changeset
|
346 |
39
305e81c7a32c
Tarot game: a game can now be finished
Goffi <goffi@goffi.org>
parents:
38
diff
changeset
|
347 card = self.cards[(suit, value)] |
305e81c7a32c
Tarot game: a game can now be finished
Goffi <goffi@goffi.org>
parents:
38
diff
changeset
|
348 DOM.setElemAttribute(card.getElement(), "style", "") |
305e81c7a32c
Tarot game: a game can now be finished
Goffi <goffi@goffi.org>
parents:
38
diff
changeset
|
349 player_panel.setWidget(card) |
243
63e9b680d3e7
browser_side, blog: better PEP8 compliance
souliane <souliane@mailoo.org>
parents:
238
diff
changeset
|
350 |
672
b39a9eddfe56
browser_side: fixes room games:
souliane <souliane@mailoo.org>
parents:
580
diff
changeset
|
351 def tarotGameYourTurnHandler(self): |
39
305e81c7a32c
Tarot game: a game can now be finished
Goffi <goffi@goffi.org>
parents:
38
diff
changeset
|
352 """Called when we have to play :)""" |
305e81c7a32c
Tarot game: a game can now be finished
Goffi <goffi@goffi.org>
parents:
38
diff
changeset
|
353 if self.state == "chien": |
305e81c7a32c
Tarot game: a game can now be finished
Goffi <goffi@goffi.org>
parents:
38
diff
changeset
|
354 self.to_show = [] |
305e81c7a32c
Tarot game: a game can now be finished
Goffi <goffi@goffi.org>
parents:
38
diff
changeset
|
355 self.updateToShow() |
305e81c7a32c
Tarot game: a game can now be finished
Goffi <goffi@goffi.org>
parents:
38
diff
changeset
|
356 self.state = "play" |
381
b96b8b666d17
plugin card_game: update to use the new XMLUI mechanism + copy the autoplay mode from QuickFrontend:
souliane <souliane@mailoo.org>
parents:
372
diff
changeset
|
357 self.__fakePlay() |
b96b8b666d17
plugin card_game: update to use the new XMLUI mechanism + copy the autoplay mode from QuickFrontend:
souliane <souliane@mailoo.org>
parents:
372
diff
changeset
|
358 |
b96b8b666d17
plugin card_game: update to use the new XMLUI mechanism + copy the autoplay mode from QuickFrontend:
souliane <souliane@mailoo.org>
parents:
372
diff
changeset
|
359 def __fakePlay(self): |
b96b8b666d17
plugin card_game: update to use the new XMLUI mechanism + copy the autoplay mode from QuickFrontend:
souliane <souliane@mailoo.org>
parents:
372
diff
changeset
|
360 """Convenience method for stupid autoplay |
b96b8b666d17
plugin card_game: update to use the new XMLUI mechanism + copy the autoplay mode from QuickFrontend:
souliane <souliane@mailoo.org>
parents:
372
diff
changeset
|
361 /!\ don't forgot to comment any interactive dialog for invalid card""" |
b96b8b666d17
plugin card_game: update to use the new XMLUI mechanism + copy the autoplay mode from QuickFrontend:
souliane <souliane@mailoo.org>
parents:
372
diff
changeset
|
362 if self._autoplay == None: |
b96b8b666d17
plugin card_game: update to use the new XMLUI mechanism + copy the autoplay mode from QuickFrontend:
souliane <souliane@mailoo.org>
parents:
372
diff
changeset
|
363 return |
b96b8b666d17
plugin card_game: update to use the new XMLUI mechanism + copy the autoplay mode from QuickFrontend:
souliane <souliane@mailoo.org>
parents:
372
diff
changeset
|
364 if self._autoplay >= len(self.hand): |
b96b8b666d17
plugin card_game: update to use the new XMLUI mechanism + copy the autoplay mode from QuickFrontend:
souliane <souliane@mailoo.org>
parents:
372
diff
changeset
|
365 self._autoplay = 0 |
b96b8b666d17
plugin card_game: update to use the new XMLUI mechanism + copy the autoplay mode from QuickFrontend:
souliane <souliane@mailoo.org>
parents:
372
diff
changeset
|
366 card = self.hand[self._autoplay] |
b96b8b666d17
plugin card_game: update to use the new XMLUI mechanism + copy the autoplay mode from QuickFrontend:
souliane <souliane@mailoo.org>
parents:
372
diff
changeset
|
367 self._parent.host.bridge.call('tarotGamePlayCards', None, self.player_nick, self.referee, [(card.suit, card.value)]) |
b96b8b666d17
plugin card_game: update to use the new XMLUI mechanism + copy the autoplay mode from QuickFrontend:
souliane <souliane@mailoo.org>
parents:
372
diff
changeset
|
368 del self.hand[self._autoplay] |
b96b8b666d17
plugin card_game: update to use the new XMLUI mechanism + copy the autoplay mode from QuickFrontend:
souliane <souliane@mailoo.org>
parents:
372
diff
changeset
|
369 self.state = "wait" |
b96b8b666d17
plugin card_game: update to use the new XMLUI mechanism + copy the autoplay mode from QuickFrontend:
souliane <souliane@mailoo.org>
parents:
372
diff
changeset
|
370 self._autoplay += 1 |
39
305e81c7a32c
Tarot game: a game can now be finished
Goffi <goffi@goffi.org>
parents:
38
diff
changeset
|
371 |
305e81c7a32c
Tarot game: a game can now be finished
Goffi <goffi@goffi.org>
parents:
38
diff
changeset
|
372 def playCard(self, card): |
305e81c7a32c
Tarot game: a game can now be finished
Goffi <goffi@goffi.org>
parents:
38
diff
changeset
|
373 self.hand.remove(card) |
305e81c7a32c
Tarot game: a game can now be finished
Goffi <goffi@goffi.org>
parents:
38
diff
changeset
|
374 self._parent.host.bridge.call('tarotGamePlayCards', None, self.player_nick, self.referee, [(card.suit, card.value)]) |
305e81c7a32c
Tarot game: a game can now be finished
Goffi <goffi@goffi.org>
parents:
38
diff
changeset
|
375 self.state = "wait" |
305e81c7a32c
Tarot game: a game can now be finished
Goffi <goffi@goffi.org>
parents:
38
diff
changeset
|
376 self.updateHand() |
41
7782a786b2f0
Tarot game: score is now shown (need to use XMLUI later)
Goffi <goffi@goffi.org>
parents:
39
diff
changeset
|
377 |
672
b39a9eddfe56
browser_side: fixes room games:
souliane <souliane@mailoo.org>
parents:
580
diff
changeset
|
378 def tarotGameScoreHandler(self, xml_data, winners, loosers): |
381
b96b8b666d17
plugin card_game: update to use the new XMLUI mechanism + copy the autoplay mode from QuickFrontend:
souliane <souliane@mailoo.org>
parents:
372
diff
changeset
|
379 """Show score at the end of a round""" |
42 | 380 if not winners and not loosers: |
381 title = "Draw game" | |
41
7782a786b2f0
Tarot game: score is now shown (need to use XMLUI later)
Goffi <goffi@goffi.org>
parents:
39
diff
changeset
|
382 else: |
42 | 383 if self.player_nick in winners: |
384 title = "You <b>win</b> !" | |
385 else: | |
386 title = "You <b>loose</b> :(" | |
500
67a4e8383b70
browser side (XMLUI): XMLUI update to follow core changes:
Goffi <goffi@goffi.org>
parents:
467
diff
changeset
|
387 body = xmlui.create(self._parent.host, xml_data, title=title, flags=['NO_CANCEL']) |
467 | 388 _dialog = dialog.GenericDialog(title, body, options=['NO_CLOSE']) |
381
b96b8b666d17
plugin card_game: update to use the new XMLUI mechanism + copy the autoplay mode from QuickFrontend:
souliane <souliane@mailoo.org>
parents:
372
diff
changeset
|
389 body.setCloseCb(_dialog.close) |
b96b8b666d17
plugin card_game: update to use the new XMLUI mechanism + copy the autoplay mode from QuickFrontend:
souliane <souliane@mailoo.org>
parents:
372
diff
changeset
|
390 _dialog.show() |
676
849ffb24d5bf
browser side: menus refactorisation:
Goffi <goffi@goffi.org>
parents:
672
diff
changeset
|
391 |
849ffb24d5bf
browser side: menus refactorisation:
Goffi <goffi@goffi.org>
parents:
672
diff
changeset
|
392 |
849ffb24d5bf
browser side: menus refactorisation:
Goffi <goffi@goffi.org>
parents:
672
diff
changeset
|
393 ## Menu |
849ffb24d5bf
browser side: menus refactorisation:
Goffi <goffi@goffi.org>
parents:
672
diff
changeset
|
394 |
849ffb24d5bf
browser side: menus refactorisation:
Goffi <goffi@goffi.org>
parents:
672
diff
changeset
|
395 def hostReady(host): |
849ffb24d5bf
browser side: menus refactorisation:
Goffi <goffi@goffi.org>
parents:
672
diff
changeset
|
396 def onTarotGame(): |
849ffb24d5bf
browser side: menus refactorisation:
Goffi <goffi@goffi.org>
parents:
672
diff
changeset
|
397 def onPlayersSelected(room_jid, other_players): |
849ffb24d5bf
browser side: menus refactorisation:
Goffi <goffi@goffi.org>
parents:
672
diff
changeset
|
398 other_players = [unicode(contact) for contact in other_players] |
849ffb24d5bf
browser side: menus refactorisation:
Goffi <goffi@goffi.org>
parents:
672
diff
changeset
|
399 room_jid_s = unicode(room_jid) if room_jid else '' |
849ffb24d5bf
browser side: menus refactorisation:
Goffi <goffi@goffi.org>
parents:
672
diff
changeset
|
400 host.bridge.launchTarotGame(other_players, room_jid_s, profile=C.PROF_KEY_NONE) |
849ffb24d5bf
browser side: menus refactorisation:
Goffi <goffi@goffi.org>
parents:
672
diff
changeset
|
401 dialog.RoomAndContactsChooser(host, onPlayersSelected, 3, title="Tarot", title_invite=_(u"Please select 3 other players"), visible=(False, True)) |
849ffb24d5bf
browser side: menus refactorisation:
Goffi <goffi@goffi.org>
parents:
672
diff
changeset
|
402 |
849ffb24d5bf
browser side: menus refactorisation:
Goffi <goffi@goffi.org>
parents:
672
diff
changeset
|
403 |
849ffb24d5bf
browser side: menus refactorisation:
Goffi <goffi@goffi.org>
parents:
672
diff
changeset
|
404 def gotMenus(): |
849ffb24d5bf
browser side: menus refactorisation:
Goffi <goffi@goffi.org>
parents:
672
diff
changeset
|
405 host.menus.addMenu(C.MENU_GLOBAL, (D_(u"Games"), D_(u"Tarot")), callback=onTarotGame) |
849ffb24d5bf
browser side: menus refactorisation:
Goffi <goffi@goffi.org>
parents:
672
diff
changeset
|
406 host.addListener('gotMenus', gotMenus) |
849ffb24d5bf
browser side: menus refactorisation:
Goffi <goffi@goffi.org>
parents:
672
diff
changeset
|
407 |
849ffb24d5bf
browser side: menus refactorisation:
Goffi <goffi@goffi.org>
parents:
672
diff
changeset
|
408 host_listener.addListener(hostReady) |