Skip to content
GitLab
Menu
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
Donald Haase
Cockatrice
Commits
d5c62896
"git@gitlab.completext.com:quzar/Cockatrice.git" did not exist on "c6aba5a6d05e770a41ca198023d8189f4abc5a35"
Commit
d5c62896
authored
Jan 01, 2012
by
Max-Wilhelm Bruker
Browse files
PB: everything compiles except for deck storage
parent
695fde75
Changes
51
Hide whitespace changes
Inline
Side-by-side
cockatrice/cockatrice.pro
View file @
d5c62896
...
@@ -5,6 +5,8 @@ INCLUDEPATH += . src ../common
...
@@ -5,6 +5,8 @@ INCLUDEPATH += . src ../common
MOC_DIR
=
build
MOC_DIR
=
build
OBJECTS_DIR
=
build
OBJECTS_DIR
=
build
RESOURCES
=
cockatrice
.
qrc
RESOURCES
=
cockatrice
.
qrc
QMAKE_CXXFLAGS_RELEASE
+=
-
O2
CPPFLAGS
+=
-
O2
QT
+=
network
script
svg
QT
+=
network
script
svg
LIBS
+=
-
lprotobuf
LIBS
+=
-
lprotobuf
unix
:
!
macx
{
unix
:
!
macx
{
...
@@ -84,6 +86,7 @@ HEADERS += src/abstractcounter.h \
...
@@ -84,6 +86,7 @@ HEADERS += src/abstractcounter.h \
src
/
priceupdater
.
h
\
src
/
priceupdater
.
h
\
src
/
soundengine
.
h
\
src
/
soundengine
.
h
\
src
/
pending_command
.
h
\
src
/
pending_command
.
h
\
..
/
common
/
get_pb_extension
.
h
\
..
/
common
/
color
.
h
\
..
/
common
/
color
.
h
\
..
/
common
/
serializable_item
.
h
\
..
/
common
/
serializable_item
.
h
\
..
/
common
/
decklist
.
h
\
..
/
common
/
decklist
.
h
\
...
@@ -168,6 +171,7 @@ SOURCES += src/abstractcounter.cpp \
...
@@ -168,6 +171,7 @@ SOURCES += src/abstractcounter.cpp \
src
/
localclient
.
cpp
\
src
/
localclient
.
cpp
\
src
/
priceupdater
.
cpp
\
src
/
priceupdater
.
cpp
\
src
/
soundengine
.
cpp
\
src
/
soundengine
.
cpp
\
..
/
common
/
get_pb_extension
.
cpp
\
..
/
common
/
serializable_item
.
cpp
\
..
/
common
/
serializable_item
.
cpp
\
..
/
common
/
decklist
.
cpp
\
..
/
common
/
decklist
.
cpp
\
..
/
common
/
protocol
.
cpp
\
..
/
common
/
protocol
.
cpp
\
...
...
cockatrice/src/abstractclient.cpp
View file @
d5c62896
...
@@ -14,6 +14,7 @@
...
@@ -14,6 +14,7 @@
#include
"pb/event_user_joined.pb.h"
#include
"pb/event_user_joined.pb.h"
#include
"pb/event_user_left.pb.h"
#include
"pb/event_user_left.pb.h"
#include
"pb/event_game_joined.pb.h"
#include
"pb/event_game_joined.pb.h"
#include
"get_pb_extension.h"
#include
<google/protobuf/descriptor.h>
#include
<google/protobuf/descriptor.h>
AbstractClient
::
AbstractClient
(
QObject
*
parent
)
AbstractClient
::
AbstractClient
(
QObject
*
parent
)
...
@@ -42,15 +43,7 @@ void AbstractClient::processProtocolItem(const ServerMessage &item)
...
@@ -42,15 +43,7 @@ void AbstractClient::processProtocolItem(const ServerMessage &item)
}
}
case
ServerMessage
::
SESSION_EVENT
:
{
case
ServerMessage
::
SESSION_EVENT
:
{
const
SessionEvent
&
event
=
item
.
session_event
();
const
SessionEvent
&
event
=
item
.
session_event
();
std
::
vector
<
const
::
google
::
protobuf
::
FieldDescriptor
*
>
fieldList
;
switch
((
SessionEvent
::
SessionEventType
)
getPbExtension
(
event
))
{
event
.
GetReflection
()
->
ListFields
(
event
,
&
fieldList
);
int
num
=
0
;
for
(
unsigned
int
j
=
0
;
j
<
fieldList
.
size
();
++
j
)
if
(
fieldList
[
j
]
->
is_extension
())
{
num
=
fieldList
[
j
]
->
number
();
break
;
}
switch
((
SessionEvent
::
SessionEventType
)
num
)
{
case
SessionEvent
::
SERVER_IDENTIFICATION
:
emit
serverIdentificationEventReceived
(
event
.
GetExtension
(
Event_ServerIdentification
::
ext
));
break
;
case
SessionEvent
::
SERVER_IDENTIFICATION
:
emit
serverIdentificationEventReceived
(
event
.
GetExtension
(
Event_ServerIdentification
::
ext
));
break
;
case
SessionEvent
::
SERVER_MESSAGE
:
emit
serverMessageEventReceived
(
event
.
GetExtension
(
Event_ServerMessage
::
ext
));
break
;
case
SessionEvent
::
SERVER_MESSAGE
:
emit
serverMessageEventReceived
(
event
.
GetExtension
(
Event_ServerMessage
::
ext
));
break
;
case
SessionEvent
::
SERVER_SHUTDOWN
:
emit
serverShutdownEventReceived
(
event
.
GetExtension
(
Event_ServerShutdown
::
ext
));
break
;
case
SessionEvent
::
SERVER_SHUTDOWN
:
emit
serverShutdownEventReceived
(
event
.
GetExtension
(
Event_ServerShutdown
::
ext
));
break
;
...
...
cockatrice/src/arrowitem.cpp
View file @
d5c62896
...
@@ -10,7 +10,6 @@
...
@@ -10,7 +10,6 @@
#include
<QDebug>
#include
<QDebug>
#include
"color.h"
#include
"color.h"
// XXX
#include
"pb/command_attach_card.pb.h"
#include
"pb/command_attach_card.pb.h"
#include
"pb/command_create_arrow.pb.h"
#include
"pb/command_create_arrow.pb.h"
#include
"pb/command_delete_arrow.pb.h"
#include
"pb/command_delete_arrow.pb.h"
...
@@ -207,7 +206,7 @@ void ArrowDragItem::mouseReleaseEvent(QGraphicsSceneMouseEvent *event)
...
@@ -207,7 +206,7 @@ void ArrowDragItem::mouseReleaseEvent(QGraphicsSceneMouseEvent *event)
CardItem
*
targetCard
=
qgraphicsitem_cast
<
CardItem
*>
(
targetItem
);
CardItem
*
targetCard
=
qgraphicsitem_cast
<
CardItem
*>
(
targetItem
);
Command_CreateArrow
cmd
;
Command_CreateArrow
cmd
;
cmd
.
mutable_arrow_color
()
->
CopyFrom
(
Color
(
c
olor
).
get_
color
(
));
// XXX
cmd
.
mutable_arrow_color
()
->
CopyFrom
(
convertQ
Color
ToC
olor
(
color
));
cmd
.
set_start_player_id
(
startZone
->
getPlayer
()
->
getId
());
cmd
.
set_start_player_id
(
startZone
->
getPlayer
()
->
getId
());
cmd
.
set_start_zone
(
startZone
->
getName
().
toStdString
());
cmd
.
set_start_zone
(
startZone
->
getName
().
toStdString
());
cmd
.
set_start_card_id
(
startCard
->
getId
());
cmd
.
set_start_card_id
(
startCard
->
getId
());
...
...
cockatrice/src/carditem.cpp
View file @
d5c62896
...
@@ -14,6 +14,7 @@
...
@@ -14,6 +14,7 @@
#include
"main.h"
#include
"main.h"
#include
"settingscache.h"
#include
"settingscache.h"
#include
"tab_game.h"
#include
"tab_game.h"
#include
"pb/serverinfo_card.pb.h"
CardItem
::
CardItem
(
Player
*
_owner
,
const
QString
&
_name
,
int
_cardid
,
bool
_revealedCard
,
QGraphicsItem
*
parent
)
CardItem
::
CardItem
(
Player
*
_owner
,
const
QString
&
_name
,
int
_cardid
,
bool
_revealedCard
,
QGraphicsItem
*
parent
)
:
AbstractCardItem
(
_name
,
_owner
,
parent
),
zone
(
0
),
id
(
_cardid
),
revealedCard
(
_revealedCard
),
attacking
(
false
),
facedown
(
false
),
destroyOnZoneChange
(
false
),
doesntUntap
(
false
),
dragItem
(
0
),
attachedTo
(
0
)
:
AbstractCardItem
(
_name
,
_owner
,
parent
),
zone
(
0
),
id
(
_cardid
),
revealedCard
(
_revealedCard
),
attacking
(
false
),
facedown
(
false
),
destroyOnZoneChange
(
false
),
doesntUntap
(
false
),
dragItem
(
0
),
attachedTo
(
0
)
...
@@ -373,23 +374,25 @@ void CardItem::resetState()
...
@@ -373,23 +374,25 @@ void CardItem::resetState()
update
();
update
();
}
}
void
CardItem
::
processCardInfo
(
ServerInfo_Card
*
info
)
void
CardItem
::
processCardInfo
(
const
ServerInfo_Card
&
info
)
{
{
counters
.
clear
();
counters
.
clear
();
const
QList
<
ServerInfo_CardCounter
*>
&
_counterList
=
info
->
getCounters
();
const
int
counterListSize
=
info
.
counter_list_size
();
for
(
int
i
=
0
;
i
<
_counterList
.
size
();
++
i
)
for
(
int
i
=
0
;
i
<
counterListSize
;
++
i
)
{
counters
.
insert
(
_counterList
[
i
]
->
getId
(),
_counterList
[
i
]
->
getValue
());
const
ServerInfo_CardCounter
&
counterInfo
=
info
.
counter_list
(
i
);
counters
.
insert
(
counterInfo
.
id
(),
counterInfo
.
value
());
}
setId
(
info
->
getI
d
());
setId
(
info
.
i
d
());
setName
(
info
->
getN
ame
());
setName
(
QString
::
fromStdString
(
info
.
n
ame
())
)
;
setAttacking
(
info
->
getA
ttacking
());
setAttacking
(
info
.
a
ttacking
());
setFaceDown
(
info
->
getF
ace
D
own
());
setFaceDown
(
info
.
f
ace
_d
own
());
setPT
(
info
->
getPT
(
));
setPT
(
QString
::
fromStdString
(
info
.
pt
()
));
setAnnotation
(
info
->
getA
nnotation
());
setAnnotation
(
QString
::
fromStdString
(
info
.
a
nnotation
())
)
;
setColor
(
info
->
getC
olor
());
setColor
(
QString
::
fromStdString
(
info
.
c
olor
())
)
;
setTapped
(
info
->
getT
apped
());
setTapped
(
info
.
t
apped
());
setDestroyOnZoneChange
(
info
->
getD
estroy
OnZ
one
C
hange
());
setDestroyOnZoneChange
(
info
.
d
estroy
_on_z
one
_c
hange
());
setDoesntUntap
(
info
->
getD
oesnt
U
ntap
());
setDoesntUntap
(
info
.
d
oesnt
_u
ntap
());
}
}
CardDragItem
*
CardItem
::
createDragItem
(
int
_id
,
const
QPointF
&
_pos
,
const
QPointF
&
_scenePos
,
bool
faceDown
)
CardDragItem
*
CardItem
::
createDragItem
(
int
_id
,
const
QPointF
&
_pos
,
const
QPointF
&
_scenePos
,
bool
faceDown
)
...
...
cockatrice/src/carditem.h
View file @
d5c62896
...
@@ -96,7 +96,7 @@ public:
...
@@ -96,7 +96,7 @@ public:
void
removeAttachedCard
(
CardItem
*
card
)
{
attachedCards
.
removeAt
(
attachedCards
.
indexOf
(
card
));
}
void
removeAttachedCard
(
CardItem
*
card
)
{
attachedCards
.
removeAt
(
attachedCards
.
indexOf
(
card
));
}
const
QList
<
CardItem
*>
&
getAttachedCards
()
const
{
return
attachedCards
;
}
const
QList
<
CardItem
*>
&
getAttachedCards
()
const
{
return
attachedCards
;
}
void
resetState
();
void
resetState
();
void
processCardInfo
(
ServerInfo_Card
*
info
);
void
processCardInfo
(
const
ServerInfo_Card
&
info
);
void
updateCardMenu
();
void
updateCardMenu
();
bool
animationEvent
();
bool
animationEvent
();
...
...
cockatrice/src/gamescene.cpp
View file @
d5c62896
...
@@ -4,6 +4,7 @@
...
@@ -4,6 +4,7 @@
#include
"zoneviewzone.h"
#include
"zoneviewzone.h"
#include
"phasestoolbar.h"
#include
"phasestoolbar.h"
#include
"settingscache.h"
#include
"settingscache.h"
#include
"carditem.h"
#include
<math.h>
#include
<math.h>
#include
<QAction>
#include
<QAction>
#include
<QGraphicsSceneMouseEvent>
#include
<QGraphicsSceneMouseEvent>
...
@@ -127,7 +128,7 @@ void GameScene::toggleZoneView(Player *player, const QString &zoneName, int numb
...
@@ -127,7 +128,7 @@ void GameScene::toggleZoneView(Player *player, const QString &zoneName, int numb
item
->
setPos
(
50
,
50
);
item
->
setPos
(
50
,
50
);
}
}
void
GameScene
::
addRevealedZoneView
(
Player
*
player
,
CardZone
*
zone
,
const
QList
<
ServerInfo_Card
*>
&
cardList
)
void
GameScene
::
addRevealedZoneView
(
Player
*
player
,
CardZone
*
zone
,
const
QList
<
const
ServerInfo_Card
*>
&
cardList
)
{
{
ZoneViewWidget
*
item
=
new
ZoneViewWidget
(
player
,
zone
,
-
2
,
true
,
cardList
);
ZoneViewWidget
*
item
=
new
ZoneViewWidget
(
player
,
zone
,
-
2
,
true
,
cardList
);
zoneViews
.
append
(
item
);
zoneViews
.
append
(
item
);
...
...
cockatrice/src/gamescene.h
View file @
d5c62896
...
@@ -45,7 +45,7 @@ public:
...
@@ -45,7 +45,7 @@ public:
void
unregisterAnimationItem
(
AbstractCardItem
*
card
);
void
unregisterAnimationItem
(
AbstractCardItem
*
card
);
public
slots
:
public
slots
:
void
toggleZoneView
(
Player
*
player
,
const
QString
&
zoneName
,
int
numberCards
);
void
toggleZoneView
(
Player
*
player
,
const
QString
&
zoneName
,
int
numberCards
);
void
addRevealedZoneView
(
Player
*
player
,
CardZone
*
zone
,
const
QList
<
ServerInfo_Card
*>
&
cardList
);
void
addRevealedZoneView
(
Player
*
player
,
CardZone
*
zone
,
const
QList
<
const
ServerInfo_Card
*>
&
cardList
);
void
removeZoneView
(
ZoneViewWidget
*
item
);
void
removeZoneView
(
ZoneViewWidget
*
item
);
void
addPlayer
(
Player
*
player
);
void
addPlayer
(
Player
*
player
);
void
removePlayer
(
Player
*
player
);
void
removePlayer
(
Player
*
player
);
...
...
cockatrice/src/handzone.cpp
View file @
d5c62896
...
@@ -3,6 +3,7 @@
...
@@ -3,6 +3,7 @@
#include
"settingscache.h"
#include
"settingscache.h"
#include
"player.h"
#include
"player.h"
#include
"carddragitem.h"
#include
"carddragitem.h"
#include
"carditem.h"
#include
"pb/command_move_card.pb.h"
#include
"pb/command_move_card.pb.h"
...
...
cockatrice/src/messagelogwidget.cpp
View file @
d5c62896
#include
"messagelogwidget.h"
#include
"messagelogwidget.h"
#include
"player.h"
#include
"player.h"
#include
"cardzone.h"
#include
"cardzone.h"
#include
"carditem.h"
#include
"soundengine.h"
#include
"soundengine.h"
#include
"pb/serverinfo_user.pb.h"
#include
"pb/serverinfo_user.pb.h"
#include
"pb/context_move_card.pb.h"
#include
"pb/context_move_card.pb.h"
...
...
cockatrice/src/phasestoolbar.h
View file @
d5c62896
...
@@ -4,8 +4,8 @@
...
@@ -4,8 +4,8 @@
#include
<QFrame>
#include
<QFrame>
#include
<QList>
#include
<QList>
#include
<QGraphicsObject>
#include
<QGraphicsObject>
#include
<google/protobuf/message.h>
namespace
google
{
namespace
protobuf
{
class
Message
;
}
}
class
Player
;
class
Player
;
class
GameCommand
;
class
GameCommand
;
...
...
cockatrice/src/pilezone.cpp
View file @
d5c62896
...
@@ -5,6 +5,7 @@
...
@@ -5,6 +5,7 @@
#include
"player.h"
#include
"player.h"
#include
"carddragitem.h"
#include
"carddragitem.h"
#include
"zoneviewzone.h"
#include
"zoneviewzone.h"
#include
"carditem.h"
#include
"pb/command_move_card.pb.h"
#include
"pb/command_move_card.pb.h"
...
...
cockatrice/src/player.cpp
View file @
d5c62896
...
@@ -17,6 +17,7 @@
...
@@ -17,6 +17,7 @@
#include
"settingscache.h"
#include
"settingscache.h"
#include
"dlg_create_token.h"
#include
"dlg_create_token.h"
#include
"carddatabase.h"
#include
"carddatabase.h"
#include
"color.h"
#include
<QSettings>
#include
<QSettings>
#include
<QPainter>
#include
<QPainter>
#include
<QMenu>
#include
<QMenu>
...
@@ -36,7 +37,10 @@
...
@@ -36,7 +37,10 @@
#include
"pb/command_flip_card.pb.h"
#include
"pb/command_flip_card.pb.h"
#include
"pb/command_game_say.pb.h"
#include
"pb/command_game_say.pb.h"
#include
"pb/serverinfo_user.pb.h"
#include
"pb/serverinfo_user.pb.h"
#include
"pb/serverinfo_player.pb.h"
#include
"pb/serverinfo_zone.pb.h"
#include
"pb/context_move_card.pb.h"
#include
"pb/context_move_card.pb.h"
#include
"pb/context_undo_draw.pb.h"
#include
"pb/event_connection_state_changed.pb.h"
#include
"pb/event_connection_state_changed.pb.h"
#include
"pb/event_game_say.pb.h"
#include
"pb/event_game_say.pb.h"
#include
"pb/event_shuffle.pb.h"
#include
"pb/event_shuffle.pb.h"
...
@@ -941,30 +945,34 @@ void Player::eventStopDumpZone(const Event_StopDumpZone &event)
...
@@ -941,30 +945,34 @@ void Player::eventStopDumpZone(const Event_StopDumpZone &event)
emit
logStopDumpZone
(
this
,
zone
);
emit
logStopDumpZone
(
this
,
zone
);
}
}
void
Player
::
eventMoveCard
(
const
Event_MoveCard
&
event
,
GameEventContext
*
context
)
void
Player
::
eventMoveCard
(
const
Event_MoveCard
&
event
,
const
GameEventContext
&
context
)
{
{
CardZone
*
startZone
=
zones
.
value
(
event
->
getS
tart
Z
one
(),
0
);
CardZone
*
startZone
=
zones
.
value
(
QString
::
fromStdString
(
event
.
s
tart
_z
one
()
)
,
0
);
Player
*
targetPlayer
=
static_cast
<
TabGame
*>
(
parent
())
->
getPlayers
().
value
(
event
->
getT
arget
P
layer
I
d
());
Player
*
targetPlayer
=
static_cast
<
TabGame
*>
(
parent
())
->
getPlayers
().
value
(
event
.
t
arget
_p
layer
_i
d
());
if
(
!
targetPlayer
)
if
(
!
targetPlayer
)
return
;
return
;
CardZone
*
targetZone
=
targetPlayer
->
getZones
().
value
(
event
->
getTargetZone
(),
0
);
CardZone
*
targetZone
;
if
(
event
.
has_target_zone
())
targetZone
=
targetPlayer
->
getZones
().
value
(
QString
::
fromStdString
(
event
.
target_zone
()),
0
);
else
targetZone
=
startZone
;
if
(
!
startZone
||
!
targetZone
)
if
(
!
startZone
||
!
targetZone
)
return
;
return
;
int
position
=
event
->
getP
osition
();
int
position
=
event
.
p
osition
();
int
x
=
event
->
getX
();
int
x
=
event
.
x
();
int
y
=
event
->
getY
();
int
y
=
event
.
y
();
int
logPosition
=
position
;
int
logPosition
=
position
;
int
logX
=
x
;
int
logX
=
x
;
if
(
x
==
-
1
)
if
(
x
==
-
1
)
x
=
0
;
x
=
0
;
CardItem
*
card
=
startZone
->
takeCard
(
position
,
event
->
getC
ard
I
d
(),
startZone
!=
targetZone
);
CardItem
*
card
=
startZone
->
takeCard
(
position
,
event
.
c
ard
_i
d
(),
startZone
!=
targetZone
);
if
(
!
card
)
if
(
!
card
)
return
;
return
;
if
(
startZone
!=
targetZone
)
if
(
startZone
!=
targetZone
)
card
->
deleteCardInfoPopup
();
card
->
deleteCardInfoPopup
();
card
->
setName
(
event
->
getC
ard
N
ame
());
card
->
setName
(
QString
::
fromStdString
(
event
.
c
ard
_n
ame
())
)
;
if
(
card
->
getAttachedTo
()
&&
(
startZone
!=
targetZone
))
{
if
(
card
->
getAttachedTo
()
&&
(
startZone
!=
targetZone
))
{
CardItem
*
parentCard
=
card
->
getAttachedTo
();
CardItem
*
parentCard
=
card
->
getAttachedTo
();
...
@@ -974,8 +982,8 @@ void Player::eventMoveCard(const Event_MoveCard &event, GameEventContext *contex
...
@@ -974,8 +982,8 @@ void Player::eventMoveCard(const Event_MoveCard &event, GameEventContext *contex
card
->
deleteDragItem
();
card
->
deleteDragItem
();
card
->
setId
(
event
->
getNewC
ard
I
d
());
card
->
setId
(
event
.
new_c
ard
_i
d
());
card
->
setFaceDown
(
event
->
getF
ace
D
own
());
card
->
setFaceDown
(
event
.
f
ace
_d
own
());
if
(
startZone
!=
targetZone
)
{
if
(
startZone
!=
targetZone
)
{
card
->
setBeingPointedAt
(
false
);
card
->
setBeingPointedAt
(
false
);
card
->
setHovered
(
false
);
card
->
setHovered
(
false
);
...
@@ -990,11 +998,8 @@ void Player::eventMoveCard(const Event_MoveCard &event, GameEventContext *contex
...
@@ -990,11 +998,8 @@ void Player::eventMoveCard(const Event_MoveCard &event, GameEventContext *contex
// The log event has to be sent before the card is added to the target zone
// The log event has to be sent before the card is added to the target zone
// because the addCard function can modify the card object.
// because the addCard function can modify the card object.
if
(
context
)
if
(
context
.
HasExtension
(
Context_UndoDraw
::
ext
))
switch
(
context
->
getItemId
())
{
emit
logUndoDraw
(
this
,
card
->
getName
());
case
ItemId_Context_UndoDraw
:
emit
logUndoDraw
(
this
,
card
->
getName
());
break
;
default:
emit
logMoveCard
(
this
,
card
,
startZone
,
logPosition
,
targetZone
,
logX
);
}
else
else
emit
logMoveCard
(
this
,
card
,
startZone
,
logPosition
,
targetZone
,
logX
);
emit
logMoveCard
(
this
,
card
,
startZone
,
logPosition
,
targetZone
,
logX
);
...
@@ -1097,68 +1102,76 @@ void Player::eventDrawCards(const Event_DrawCards &event)
...
@@ -1097,68 +1102,76 @@ void Player::eventDrawCards(const Event_DrawCards &event)
{
{
CardZone
*
deck
=
zones
.
value
(
"deck"
);
CardZone
*
deck
=
zones
.
value
(
"deck"
);
CardZone
*
hand
=
zones
.
value
(
"hand"
);
CardZone
*
hand
=
zones
.
value
(
"hand"
);
const
QList
<
ServerInfo_Card
*>
&
cardList
=
event
->
getCardList
();
if
(
!
cardList
.
isEmpty
())
const
int
listSize
=
event
.
cards_size
();
for
(
int
i
=
0
;
i
<
cardList
.
size
();
++
i
)
{
if
(
listSize
)
{
CardItem
*
card
=
deck
->
takeCard
(
0
,
cardList
[
i
]
->
getId
());
for
(
int
i
=
0
;
i
<
listSize
;
++
i
)
{
card
->
setName
(
cardList
[
i
]
->
getName
());
const
ServerInfo_Card
&
cardInfo
=
event
.
cards
(
i
);
CardItem
*
card
=
deck
->
takeCard
(
0
,
cardInfo
.
id
());
card
->
setName
(
QString
::
fromStdString
(
cardInfo
.
name
()));
hand
->
addCard
(
card
,
false
,
-
1
);
hand
->
addCard
(
card
,
false
,
-
1
);
}
}
else
}
else
{
for
(
int
i
=
0
;
i
<
event
->
getNumberCards
();
++
i
)
const
int
number
=
event
.
number
();
for
(
int
i
=
0
;
i
<
number
;
++
i
)
hand
->
addCard
(
deck
->
takeCard
(
0
,
-
1
),
false
,
-
1
);
hand
->
addCard
(
deck
->
takeCard
(
0
,
-
1
),
false
,
-
1
);
}
hand
->
reorganizeCards
();
hand
->
reorganizeCards
();
deck
->
reorganizeCards
();
deck
->
reorganizeCards
();
emit
logDrawCards
(
this
,
event
->
getNumberCards
());
emit
logDrawCards
(
this
,
event
.
number
());
}
}
void
Player
::
eventRevealCards
(
Event_RevealCards
*
event
)
void
Player
::
eventRevealCards
(
const
Event_RevealCards
&
event
)
{
{
CardZone
*
zone
=
zones
.
value
(
event
->
getZ
one
N
ame
());
CardZone
*
zone
=
zones
.
value
(
QString
::
fromStdString
(
event
.
z
one
_n
ame
())
)
;
if
(
!
zone
)
if
(
!
zone
)
return
;
return
;
Player
*
otherPlayer
=
0
;
Player
*
otherPlayer
=
0
;
if
(
event
->
getO
ther
P
layer
I
d
()
!=
-
1
)
{
if
(
event
.
has_o
ther
_p
layer
_i
d
())
{
otherPlayer
=
static_cast
<
TabGame
*>
(
parent
())
->
getPlayers
().
value
(
event
->
getO
ther
P
layer
I
d
());
otherPlayer
=
static_cast
<
TabGame
*>
(
parent
())
->
getPlayers
().
value
(
event
.
o
ther
_p
layer
_i
d
());
if
(
!
otherPlayer
)
if
(
!
otherPlayer
)
return
;
return
;
}
}
QList
<
ServerInfo_Card
*>
cardList
=
event
->
getCardList
();
QList
<
const
ServerInfo_Card
*>
cardList
;
const
int
cardListSize
=
event
.
cards_size
();
for
(
int
i
=
0
;
i
<
cardListSize
;
++
i
)
{
const
ServerInfo_Card
*
temp
=
&
event
.
cards
(
i
);
cardList
.
append
(
temp
);
}
if
(
!
cardList
.
isEmpty
())
if
(
!
cardList
.
isEmpty
())
static_cast
<
GameScene
*>
(
scene
())
->
addRevealedZoneView
(
this
,
zone
,
cardList
);
static_cast
<
GameScene
*>
(
scene
())
->
addRevealedZoneView
(
this
,
zone
,
cardList
);
QString
cardName
;
QString
cardName
;
if
(
cardList
.
size
()
==
1
)
if
(
cardList
.
size
()
==
1
)
cardName
=
cardList
.
first
()
->
getName
();
cardName
=
QString
::
fromStdString
(
cardList
.
first
()
->
name
());
emit
logRevealCards
(
this
,
zone
,
event
->
getCardId
(),
cardName
,
otherPlayer
);
emit
logRevealCards
(
this
,
zone
,
event
.
card_id
(),
cardName
,
otherPlayer
);
}
}
void
Player
::
processGameEvent
(
GameEvent
*
event
,
GameEventContext
*
context
)
void
Player
::
processGameEvent
(
GameEvent
::
GameEventType
type
,
const
GameEvent
&
event
,
const
GameEventContext
&
context
)
{
{
qDebug
()
<<
"player event: id="
<<
event
->
getItemId
();
switch
(
type
)
{
switch
(
event
->
getItemId
())
{
case
GameEvent
::
CONNECTION_STATE_CHANGED
:
eventConnectionStateChanged
(
event
.
GetExtension
(
Event_ConnectionStateChanged
::
ext
));
break
;
case
ItemId_Event_ConnectionStateChanged
:
eventConnectionStateChanged
(
static_cast
<
Event_ConnectionStateChanged
*>
(
event
));
break
;
case
GameEvent
::
GAME_SAY
:
eventGameSay
(
event
.
GetExtension
(
Event_GameSay
::
ext
));
break
;
case
ItemId_Event_Say
:
eventSay
(
static_cast
<
Event_Say
*>
(
event
));
break
;
case
GameEvent
::
SHUFFLE
:
eventShuffle
(
event
.
GetExtension
(
Event_Shuffle
::
ext
));
break
;
case
ItemId_Event_Shuffle
:
eventShuffle
(
static_cast
<
Event_Shuffle
*>
(
event
));
break
;
case
GameEvent
::
ROLL_DIE
:
eventRollDie
(
event
.
GetExtension
(
Event_RollDie
::
ext
));
break
;
case
ItemId_Event_RollDie
:
eventRollDie
(
static_cast
<
Event_RollDie
*>
(
event
));
break
;
case
GameEvent
::
CREATE_ARROW
:
eventCreateArrow
(
event
.
GetExtension
(
Event_CreateArrow
::
ext
));
break
;
case
ItemId_Event_CreateArrows
:
eventCreateArrows
(
static_cast
<
Event_CreateArrows
*>
(
event
));
break
;
case
GameEvent
::
DELETE_ARROW
:
eventDeleteArrow
(
event
.
GetExtension
(
Event_DeleteArrow
::
ext
));
break
;
case
ItemId_Event_DeleteArrow
:
eventDeleteArrow
(
static_cast
<
Event_DeleteArrow
*>
(
event
));
break
;
case
GameEvent
::
CREATE_TOKEN
:
eventCreateToken
(
event
.
GetExtension
(
Event_CreateToken
::
ext
));
break
;
case
ItemId_Event_CreateToken
:
eventCreateToken
(
static_cast
<
Event_CreateToken
*>
(
event
));
break
;
case
GameEvent
::
SET_CARD_ATTR
:
eventSetCardAttr
(
event
.
GetExtension
(
Event_SetCardAttr
::
ext
),
context
);
break
;
case
ItemId_Event_SetCardAttr
:
eventSetCardAttr
(
static_cast
<
Event_SetCardAttr
*>
(
event
),
context
);
break
;
case
GameEvent
::
SET_CARD_COUNTER
:
eventSetCardCounter
(
event
.
GetExtension
(
Event_SetCardCounter
::
ext
));
break
;
case
ItemId_Event_SetCardCounter
:
eventSetCardCounter
(
static_cast
<
Event_SetCardCounter
*>
(
event
));
break
;
case
GameEvent
::
CREATE_COUNTER
:
eventCreateCounter
(
event
.
GetExtension
(
Event_CreateCounter
::
ext
));
break
;
case
ItemId_Event_CreateCounters
:
eventCreateCounters
(
static_cast
<
Event_CreateCounters
*>
(
event
));
break
;
case
GameEvent
::
SET_COUNTER
:
eventSetCounter
(
event
.
GetExtension
(
Event_SetCounter
::
ext
));
break
;
case
ItemId_Event_SetCounter
:
eventSetCounter
(
static_cast
<
Event_SetCounter
*>
(
event
));
break
;
case
GameEvent
::
DEL_COUNTER
:
eventDelCounter
(
event
.
GetExtension
(
Event_DelCounter
::
ext
));
break
;
case
ItemId_Event_DelCounter
:
eventDelCounter
(
static_cast
<
Event_DelCounter
*>
(
event
));
break
;
case
GameEvent
::
DUMP_ZONE
:
eventDumpZone
(
event
.
GetExtension
(
Event_DumpZone
::
ext
));
break
;
case
ItemId_Event_DumpZone
:
eventDumpZone
(
static_cast
<
Event_DumpZone
*>
(
event
));
break
;
case
GameEvent
::
STOP_DUMP_ZONE
:
eventStopDumpZone
(
event
.
GetExtension
(
Event_StopDumpZone
::
ext
));
break
;
case
ItemId_Event_StopDumpZone
:
eventStopDumpZone
(
static_cast
<
Event_StopDumpZone
*>
(
event
));
break
;
case
GameEvent
::
MOVE_CARD
:
eventMoveCard
(
event
.
GetExtension
(
Event_MoveCard
::
ext
),
context
);
break
;
case
ItemId_Event_MoveCard
:
eventMoveCard
(
static_cast
<
Event_MoveCard
*>
(
event
),
context
);
break
;
case
GameEvent
::
FLIP_CARD
:
eventFlipCard
(
event
.
GetExtension
(
Event_FlipCard
::
ext
));
break
;
case
ItemId_Event_FlipCard
:
eventFlipCard
(
static_cast
<
Event_FlipCard
*>
(
event
));
break
;
case
GameEvent
::
DESTROY_CARD
:
eventDestroyCard
(
event
.
GetExtension
(
Event_DestroyCard
::
ext
));
break
;
case
ItemId_Event_DestroyCard
:
eventDestroyCard
(
static_cast
<
Event_DestroyCard
*>
(
event
));
break
;
case
GameEvent
::
ATTACH_CARD
:
eventAttachCard
(
event
.
GetExtension
(
Event_AttachCard
::
ext
));
break
;
case
ItemId_Event_AttachCard
:
eventAttachCard
(
static_cast
<
Event_AttachCard
*>
(
event
));
break
;
case
GameEvent
::
DRAW_CARDS
:
eventDrawCards
(
event
.
GetExtension
(
Event_DrawCards
::
ext
));
break
;
case
ItemId_Event_DrawCards
:
eventDrawCards
(
static_cast
<
Event_DrawCards
*>
(
event
));
break
;
case
GameEvent
::
REVEAL_CARDS
:
eventRevealCards
(
event
.
GetExtension
(
Event_RevealCards
::
ext
));
break
;
case
ItemId_Event_RevealCards
:
eventRevealCards
(
static_cast
<
Event_RevealCards
*>
(
event
));
break
;
default:
{
default:
{
qDebug
()
<<
"unhandled game event"
;
qDebug
()
<<
"unhandled game event"
;
}
}
...
@@ -1181,7 +1194,7 @@ void Player::paint(QPainter * /*painter*/, const QStyleOptionGraphicsItem */*opt
...
@@ -1181,7 +1194,7 @@ void Player::paint(QPainter * /*painter*/, const QStyleOptionGraphicsItem */*opt
{
{
}
}
void
Player
::
processPlayerInfo
(
ServerInfo_Player
*
info
)
void
Player
::
processPlayerInfo
(
const
ServerInfo_Player
&
info
)
{
{
clearCounters
();
clearCounters
();
clearArrows
();
clearArrows
();
...
@@ -1189,55 +1202,55 @@ void Player::processPlayerInfo(ServerInfo_Player *info)
...
@@ -1189,55 +1202,55 @@ void Player::processPlayerInfo(ServerInfo_Player *info)
QMapIterator
<
QString
,
CardZone
*>
zoneIt
(
zones
);
QMapIterator
<
QString
,
CardZone
*>
zoneIt
(
zones
);
while
(
zoneIt
.
hasNext
())
while
(
zoneIt
.
hasNext
())
zoneIt
.
next
().
value
()
->
clearContents
();
zoneIt
.
next
().
value
()
->
clearContents
();
QList
<
ServerInfo_Zone
*>
zl
=
info
->
getZ
one
L
ist
();
const
int
zoneListSize
=
info
.
z
one
_l
ist
_size
();
for
(
int
i
=
0
;
i
<
z
l
.
s
ize
()
;
++
i
)
{
for
(
int
i
=
0
;
i
<
z
oneListS
ize
;
++
i
)
{
ServerInfo_Zone
*
zoneInfo
=
zl
[
i
]
;
const
ServerInfo_Zone
&
zoneInfo
=
info
.
zone_list
(
i
)
;
CardZone
*
zone
=
zones
.
value
(
zoneInfo
->
getN
ame
(),
0
);
CardZone
*
zone
=
zones
.
value
(
QString
::
fromStdString
(
zoneInfo
.
n
ame
()
)
,
0
);
if
(
!
zone
)
if
(
!
zone
)
continue
;
continue
;
const
QList
<
ServerInfo_Card
*>
&
cardList
=
zoneInfo
->
getC
ard
L
ist
();
const
int
cardList
Size
=
zoneInfo
.
c
ard
_l
ist
_size
();
if
(
cardList
.
isEmpty
()
)
{
if
(
!
cardList
Size
)
{
for
(
int
j
=
0
;
j
<
zoneInfo
->
getC
ard
C
ount
();
++
j
)
for
(
int
j
=
0
;
j
<
zoneInfo
.
c
ard
_c
ount
();
++
j
)
zone
->
addCard
(
new
CardItem
(
this
),
false
,
-
1
);
zone
->
addCard
(
new
CardItem
(
this
),
false
,
-
1
);
}
else
{
}
else
{
for
(
int
j
=
0
;
j
<
cardList
.
size
();
++
j
)
{
for
(
int
j
=
0
;
j
<
cardListSize
;
++
j
)
{
const
ServerInfo_Card
&
cardInfo
=
zoneInfo
.
card_list
(
j
);
CardItem
*
card
=
new
CardItem
(
this
);
CardItem
*
card
=
new
CardItem
(
this
);
card
->
processCardInfo
(
card
List
[
j
]
);
card
->
processCardInfo
(
card
Info
);
zone
->
addCard
(
card
,
false
,
card
List
[
j
]
->
getX
(),
cardList
[
j
]
->
getY
());
zone
->
addCard
(
card
,
false
,
card
Info
.
x
(),
cardInfo
.
y
());
}
}
}
}
zone
->
reorganizeCards
();
zone
->
reorganizeCards
();
}
}
QList
<
ServerInfo_Counter
*>
cl
=
info
->
getCounterList
();
const
int
counterListSize
=
info
.
counter_list_size
();
for
(
int
i
=
0
;
i
<
cl
.
size
();
++
i
)
{
for
(
int
i
=
0
;
i
<
counterListSize
;
++
i
)
addCounter
(
cl
.
at
(
i
));
addCounter
(
info
.
counter_list
(
i
));
}
const
int
arrowListSize
=
info
.
arrow_list_size
();
QList
<
ServerInfo_Arrow
*>
al
=
info
->
getArrowList
();
for
(
int
i
=
0
;
i
<
arrowListSize
;
++
i
)
for
(
int
i
=
0
;
i
<
al
.
size
();
++
i
)
addArrow
(
info
.
arrow_list
(
i
));
addArrow
(
al
.
at
(
i
));
setConceded
(
info
.
properties
().
conceded
());
setConceded
(
info
->
getProperties
()
->
getConceded
());
}
}
void
Player
::
processCardAttachment
(
ServerInfo_Player
*
info
)
void
Player
::
processCardAttachment
(
const
ServerInfo_Player
&
info
)
{
{
QList
<
ServerInfo_Zone
*>
zl
=
info
->
getZ
one
L
ist
();
const
int
zoneListSize
=
info
.
z
one
_l
ist
_size
();
for
(
int
i
=
0
;
i
<
z
l
.
s
ize
()
;
++
i
)
{
for
(
int
i
=
0
;
i
<
z
oneListS
ize
;
++
i
)
{
ServerInfo_Zone
*
zoneInfo
=
zl
[
i
]
;
const
ServerInfo_Zone
&
zoneInfo
=
info
.
zone_list
(
i
)
;
CardZone
*
zone
=
zones
.
value
(
zoneInfo
->
getN
ame
(),
0
);
CardZone
*
zone
=
zones
.
value
(
QString
::
fromStdString
(
zoneInfo
.
n
ame
()
)
,
0
);
if
(
!
zone
)
if
(
!
zone
)
continue
;
continue
;
const
QList
<
ServerInfo_Card
*>
&
cardList
=
zoneInfo
->
getC
ard
L
ist
();
const
int
cardList
Size
=
zoneInfo
.
c
ard
_l
ist
_size
();
for
(
int
j
=
0
;
j
<
cardList
.
s
ize
()
;
++
j
)
{
for
(
int
j
=
0
;
j
<
cardList
S
ize
;
++
j
)
{
ServerInfo_Card
*
cardInfo
=
card
L
ist
[
j
]
;
const
ServerInfo_Card
&
cardInfo
=
zoneInfo
.
card
_l
ist
(
j
)
;
if
(
cardInfo
->
getA
ttach
P
layer
I
d
()
!=
-
1
)
{
if
(
cardInfo
.
has_a
ttach
_p
layer
_i
d
())
{
CardItem
*
startCard
=
zone
->
getCard
(
cardInfo
->
getI
d
(),
QString
());
CardItem
*
startCard
=
zone
->
getCard
(
cardInfo
.
i
d
(),
QString
());
CardItem
*
targetCard
=
static_cast
<
TabGame
*>
(
parent
())
->
getCard
(
cardInfo
->
getA
ttach
P
layer
I
d
(),
cardInfo
->
getA
ttach
Z
one
(),
cardInfo
->
getA
ttach
C
ard
I
d
());
CardItem
*
targetCard
=
static_cast
<
TabGame
*>
(
parent
())
->
getCard
(
cardInfo
.
a
ttach
_p
layer
_i
d
(),
QString
::
fromStdString
(
cardInfo
.
a
ttach
_z
one
()
)
,
cardInfo
.
a
ttach
_c
ard
_i
d
());
if
(
!
targetCard
)
if
(
!
targetCard
)
continue
;
continue
;
...
@@ -1292,7 +1305,7 @@ void Player::addZone(CardZone *z)
...
@@ -1292,7 +1305,7 @@ void Player::addZone(CardZone *z)
AbstractCounter
*
Player
::
addCounter
(
const
ServerInfo_Counter
&
counter
)
AbstractCounter
*
Player
::
addCounter
(
const
ServerInfo_Counter
&
counter
)
{
{
return
addCounter
(
counter
.
id
(),
QString
::
fromStdString
(
counter
.
name
()),
co
unter
.
color
(),
counter
.
radius
(),
counter
.
count
());
return
addCounter
(
counter
.
id
(),
QString
::
fromStdString
(
counter
.
name
()),
co
nvertColorToQColor
(
counter
.
counter_
color
()
)
,
counter
.
radius
(),
counter
.
count
());
}
}
AbstractCounter
*
Player
::
addCounter
(
int
counterId
,
const
QString
&
name
,
QColor
color
,
int
radius
,
int
value
)
AbstractCounter
*
Player
::
addCounter
(
int
counterId
,
const
QString
&
name
,
QColor
color
,
int
radius
,
int
value
)
...
@@ -1339,27 +1352,29 @@ void Player::clearCounters()
...
@@ -1339,27 +1352,29 @@ void Player::clearCounters()
ArrowItem
*
Player
::
addArrow
(
const
ServerInfo_Arrow
&
arrow
)
ArrowItem
*
Player
::
addArrow
(
const
ServerInfo_Arrow
&
arrow
)
{
{
const
QMap
<
int
,
Player
*>
&
playerList
=
static_cast
<
TabGame
*>
(
parent
())
->
getPlayers
();
const
QMap
<
int
,
Player
*>
&
playerList
=
static_cast
<
TabGame
*>
(
parent
())
->
getPlayers
();
Player
*
startPlayer
=
playerList
.
value
(
arrow
->
getS
tart
P
layer
I
d
(),
0
);
Player
*
startPlayer
=
playerList
.
value
(
arrow
.
s
tart
_p
layer
_i
d
(),
0
);
Player
*
targetPlayer
=
playerList
.
value
(
arrow
->
getT
arget
P
layer
I
d
(),
0
);
Player
*
targetPlayer
=
playerList
.
value
(
arrow
.
t
arget
_p
layer
_i
d
(),
0
);
if
(
!
startPlayer
||
!
targetPlayer
)
if
(
!
startPlayer
||
!
targetPlayer
)
return
0
;
return
0
;
CardZone
*
startZone
=
startPlayer
->
getZones
().
value
(
arrow
->
getStartZone
(),
0
);
CardZone
*
startZone
=
startPlayer
->
getZones
().
value
(
QString
::
fromStdString
(
arrow
.
start_zone
()),
0
);
CardZone
*
targetZone
=
targetPlayer
->
getZones
().
value
(
arrow
->
getTargetZone
(),
0
);
CardZone
*
targetZone
=
0
;
if
(
!
startZone
||
(
!
targetZone
&&
!
arrow
->
getTargetZone
().
isEmpty
()))
if
(
arrow
.
has_target_zone
())
targetZone
=
targetPlayer
->
getZones
().
value
(
QString
::
fromStdString
(
arrow
.
target_zone
()),
0
);
if
(
!
startZone
||
(
!
targetZone
&&
arrow
.
has_target_zone
()))
return
0
;
return
0
;
CardItem
*
startCard
=
startZone
->
getCard
(
arrow
->
getS
tart
C
ard
I
d
(),
QString
());
CardItem
*
startCard
=
startZone
->
getCard
(
arrow
.
s
tart
_c
ard
_i
d
(),
QString
());
CardItem
*
targetCard
=
0
;
CardItem
*
targetCard
=
0
;
if
(
targetZone
)
if
(
targetZone
)
targetCard
=
targetZone
->
getCard
(
arrow
->
getT
arget
C
ard
I
d
(),
QString
());
targetCard
=
targetZone
->
getCard
(
arrow
.
t
arget
_c
ard
_i
d
(),
QString
());
if
(
!
startCard
||
(
!
targetCard
&&
!
arrow
->
getTargetZone
().
isEmpty
()))
if
(
!
startCard
||
(
!
targetCard
&&
arrow
.
has_target_card_id
()))
return
0
;
return
0
;
if
(
targetCard
)
if
(
targetCard
)
return
addArrow
(
arrow
->
getI
d
(),
startCard
,
targetCard
,
arrow
->
getColor
().
getQColor
(
));
return
addArrow
(
arrow
.
i
d
(),
startCard
,
targetCard
,
convertColorToQColor
(
arrow
.
arrow_color
()
));
else
else
return
addArrow
(
arrow
->
getI
d
(),
startCard
,
targetPlayer
->
getPlayerTarget
(),
arrow
->
getColor
().
getQColor
(
));
return
addArrow
(
arrow
.
i
d
(),
startCard
,
targetPlayer
->
getPlayerTarget
(),
convertColorToQColor
(
arrow
.
arrow_color
()
));
}
}
ArrowItem
*
Player
::
addArrow
(
int
arrowId
,
CardItem
*
startCard
,
ArrowTarget
*
targetItem
,
const
QColor
&
color
)
ArrowItem
*
Player
::
addArrow
(
int
arrowId
,
CardItem
*
startCard
,
ArrowTarget
*
targetItem
,
const
QColor
&
color
)
...
@@ -1740,7 +1755,7 @@ QMenu *Player::getCardMenu() const
...
@@ -1740,7 +1755,7 @@ QMenu *Player::getCardMenu() const
QString
Player
::
getName
()
const
QString
Player
::
getName
()
const
{
{
return
userInfo
->
getN
ame
();
return
QString
::
fromStdString
(
userInfo
->
n
ame
()
)
;
}
}
qreal
Player
::
getMinimumWidth
()
const
qreal
Player
::
getMinimumWidth
()
const
...
...
cockatrice/src/player.h
View file @
d5c62896
...
@@ -5,8 +5,9 @@
...
@@ -5,8 +5,9 @@
#include
<QPoint>
#include
<QPoint>
#include
<QMap>
#include
<QMap>
#include
"abstractgraphicsitem.h"
#include
"abstractgraphicsitem.h"
#include
<google/protobuf/message
.h
>
#include
"pb/game_event.pb
.h
"
namespace
google
{
namespace
protobuf
{
class
Message
;
}
}
class
CardDatabase
;
class
CardDatabase
;
class
QMenu
;
class
QMenu
;
class
QAction
;
class
QAction
;
...
@@ -197,7 +198,7 @@ private:
...
@@ -197,7 +198,7 @@ private:
void
eventDelCounter
(
const
Event_DelCounter
&
event
);
void
eventDelCounter
(
const
Event_DelCounter
&
event
);
void
eventDumpZone
(
const
Event_DumpZone
&
event
);
void
eventDumpZone
(
const
Event_DumpZone
&
event
);
void
eventStopDumpZone
(
const
Event_StopDumpZone
&
event
);
void
eventStopDumpZone
(
const
Event_StopDumpZone
&
event
);
void
eventMoveCard
(
const
Event_MoveCard
&
event
,
GameEventContext
&
context
);
void
eventMoveCard
(
const
Event_MoveCard
&
event
,
const
GameEventContext
&
context
);
void
eventFlipCard
(
const
Event_FlipCard
&
event
);
void
eventFlipCard
(
const
Event_FlipCard
&
event
);
void
eventDestroyCard
(
const
Event_DestroyCard
&
event
);
void
eventDestroyCard
(
const
Event_DestroyCard
&
event
);
void
eventAttachCard
(
const
Event_AttachCard
&
event
);
void
eventAttachCard
(
const
Event_AttachCard
&
event
);
...
@@ -255,10 +256,10 @@ public:
...
@@ -255,10 +256,10 @@ public:
void
setMirrored
(
bool
_mirrored
);
void
setMirrored
(
bool
_mirrored
);
void
processSceneSizeChange
(
int
newPlayerWidth
);
void
processSceneSizeChange
(
int
newPlayerWidth
);
void
processPlayerInfo
(
ServerInfo_Player
*
info
);
void
processPlayerInfo
(
const
ServerInfo_Player
&
info
);
void
processCardAttachment
(
ServerInfo_Player
*
info
);
void
processCardAttachment
(
const
ServerInfo_Player
&
info
);
void
processGameEvent
(
GameEvent
*
event
,
GameEventContext
*
context
);
void
processGameEvent
(
GameEvent
::
GameEventType
type
,
const
GameEvent
&
event
,
const
GameEventContext
&
context
);
PendingCommand
*
prepareGameCommand
(
const
::
google
::
protobuf
::
Message
&
cmd
);
PendingCommand
*
prepareGameCommand
(
const
::
google
::
protobuf
::
Message
&
cmd
);
PendingCommand
*
prepareGameCommand
(
const
QList
<
const
::
google
::
protobuf
::
Message
*
>
&
cmdList
);
PendingCommand
*
prepareGameCommand
(
const
QList
<
const
::
google
::
protobuf
::
Message
*
>
&
cmdList
);
...
...
cockatrice/src/playertarget.cpp
View file @
d5c62896
#include
"playertarget.h"
#include
"playertarget.h"
#include
"player.h"
#include
"player.h"
#include
"protocol_datastructures.h"
#include
"pixmapgenerator.h"
#include
"pixmapgenerator.h"
#include
"pb/serverinfo_user.pb.h"
#include
<QPainter>
#include
<QPainter>
#include
<QPixmapCache>
#include
<QPixmapCache>
#include
<QDebug>
#include
<QDebug>
...
@@ -50,8 +50,9 @@ PlayerTarget::PlayerTarget(Player *_owner, QGraphicsItem *parentItem)
...
@@ -50,8 +50,9 @@ PlayerTarget::PlayerTarget(Player *_owner, QGraphicsItem *parentItem)
:
ArrowTarget
(
_owner
,
parentItem
),
playerCounter
(
0
)
:
ArrowTarget
(
_owner
,
parentItem
),
playerCounter
(
0
)
{
{
setCacheMode
(
DeviceCoordinateCache
);
setCacheMode
(
DeviceCoordinateCache
);
if
(
!
fullPixmap
.
loadFromData
(
_owner
->
getUserInfo
()
->
getAvatarBmp
()))
const
std
::
string
bmp
=
_owner
->
getUserInfo
()
->
avatar_bmp
();
if
(
!
fullPixmap
.
loadFromData
((
const
uchar
*
)
bmp
.
data
(),
bmp
.
size
()))
fullPixmap
=
QPixmap
();
fullPixmap
=
QPixmap
();
}
}
...
@@ -62,7 +63,7 @@ QRectF PlayerTarget::boundingRect() const
...
@@ -62,7 +63,7 @@ QRectF PlayerTarget::boundingRect() const
void
PlayerTarget
::
paint
(
QPainter
*
painter
,
const
QStyleOptionGraphicsItem
*
/*option*/
,
QWidget
*
/*widget*/
)
void
PlayerTarget
::
paint
(
QPainter
*
painter
,
const
QStyleOptionGraphicsItem
*
/*option*/
,
QWidget
*
/*widget*/
)
{
{
ServerInfo_User
*
info
=
owner
->
getUserInfo
();
const
ServerInfo_User
*
const
info
=
owner
->
getUserInfo
();
const
qreal
border
=
2
;
const
qreal
border
=
2
;
...
@@ -70,7 +71,7 @@ void PlayerTarget::paint(QPainter *painter, const QStyleOptionGraphicsItem * /*o
...
@@ -70,7 +71,7 @@ void PlayerTarget::paint(QPainter *painter, const QStyleOptionGraphicsItem * /*o
QRectF
translatedRect
=
painter
->
combinedTransform
().
mapRect
(
avatarBoundingRect
);
QRectF
translatedRect
=
painter
->
combinedTransform
().
mapRect
(
avatarBoundingRect
);
QSize
translatedSize
=
translatedRect
.
size
().
toSize
();
QSize
translatedSize
=
translatedRect
.
size
().
toSize
();
QPixmap
cachedPixmap
;
QPixmap
cachedPixmap
;
const
QString
cacheKey
=
"avatar"
+
QString
::
number
(
translatedSize
.
width
())
+
"_"
+
QString
::
number
(
info
->
getU
ser
L
evel
())
+
"_"
+
QString
::
number
(
fullPixmap
.
cacheKey
());
const
QString
cacheKey
=
"avatar"
+
QString
::
number
(
translatedSize
.
width
())
+
"_"
+
QString
::
number
(
info
->
u
ser
_l
evel
())
+
"_"
+
QString
::
number
(
fullPixmap
.
cacheKey
());
#if QT_VERSION >= 0x040600
#if QT_VERSION >= 0x040600
if
(
!
QPixmapCache
::
find
(
cacheKey
,
&
cachedPixmap
))
{
if
(
!
QPixmapCache
::
find
(
cacheKey
,
&
cachedPixmap
))
{
#else
#else
...
@@ -86,7 +87,7 @@ void PlayerTarget::paint(QPainter *painter, const QStyleOptionGraphicsItem * /*o
...
@@ -86,7 +87,7 @@ void PlayerTarget::paint(QPainter *painter, const QStyleOptionGraphicsItem * /*o
QPixmap
tempPixmap
;
QPixmap
tempPixmap
;
if
(
fullPixmap
.
isNull
())
if
(
fullPixmap
.
isNull
())
tempPixmap
=
UserLevelPixmapGenerator
::
generatePixmap
(
translatedSize
.
height
(),
info
->
getU
ser
L
evel
());
tempPixmap
=
UserLevelPixmapGenerator
::
generatePixmap
(
translatedSize
.
height
(),
info
->
u
ser
_l
evel
());
else
else
tempPixmap
=
fullPixmap
.
scaled
(
translatedSize
,
Qt
::
KeepAspectRatio
,
Qt
::
SmoothTransformation
);
tempPixmap
=
fullPixmap
.
scaled
(
translatedSize
,
Qt
::
KeepAspectRatio
,
Qt
::
SmoothTransformation
);
...
@@ -107,7 +108,7 @@ void PlayerTarget::paint(QPainter *painter, const QStyleOptionGraphicsItem * /*o
...
@@ -107,7 +108,7 @@ void PlayerTarget::paint(QPainter *painter, const QStyleOptionGraphicsItem * /*o
painter
->
save
();
painter
->
save
();
painter
->
resetTransform
();
painter
->
resetTransform
();
QString
name
=
info
->
getN
ame
();
QString
name
=
QString
::
fromStdString
(
info
->
n
ame
()
)
;
if
(
name
.
size
()
>
13
)
if
(
name
.
size
()
>
13
)
name
=
name
.
mid
(
0
,
10
)
+
"..."
;
name
=
name
.
mid
(
0
,
10
)
+
"..."
;
...
...
cockatrice/src/remotedecklist_treewidget.cpp
View file @
d5c62896
...
@@ -2,11 +2,11 @@
...
@@ -2,11 +2,11 @@
#include
<QHeaderView>
#include
<QHeaderView>
#include
<QSortFilterProxyModel>
#include
<QSortFilterProxyModel>
#include
"remotedecklist_treewidget.h"
#include
"remotedecklist_treewidget.h"
#include
"protocol_items.h"
#include
"abstractclient.h"
#include
"abstractclient.h"
#include
"pending_command.h"
#include
"pending_command.h"
#include
"pb/session_commands.pb.h"
#include
"pb/session_commands.pb.h"
//#include "pb/response_deck_list.pb.h"
RemoteDeckList_TreeModel
::
DirectoryNode
::
DirectoryNode
(
const
QString
&
_name
,
RemoteDeckList_TreeModel
::
DirectoryNode
*
_parent
)
RemoteDeckList_TreeModel
::
DirectoryNode
::
DirectoryNode
(
const
QString
&
_name
,
RemoteDeckList_TreeModel
::
DirectoryNode
*
_parent
)
:
RemoteDeckList_TreeModel
::
Node
(
_name
,
_parent
)
:
RemoteDeckList_TreeModel
::
Node
(
_name
,
_parent
)
...
@@ -204,19 +204,21 @@ QModelIndex RemoteDeckList_TreeModel::nodeToIndex(Node *node) const
...
@@ -204,19 +204,21 @@ QModelIndex RemoteDeckList_TreeModel::nodeToIndex(Node *node) const
void
RemoteDeckList_TreeModel
::
addFileToTree
(
DeckList_File
*
file
,
DirectoryNode
*
parent
)
void
RemoteDeckList_TreeModel
::
addFileToTree
(
DeckList_File
*
file
,
DirectoryNode
*
parent
)
{
{
beginInsertRows
(
nodeToIndex
(
parent
),
parent
->
size
(),
parent
->
size
());
/*
beginInsertRows(nodeToIndex(parent), parent->size(), parent->size());
parent->append(new FileNode(file->getName(), file->getId(), file->getUploadTime(), parent));
parent->append(new FileNode(file->getName(), file->getId(), file->getUploadTime(), parent));
endInsertRows();
endInsertRows();
*/
}
}
void
RemoteDeckList_TreeModel
::
addFolderToTree
(
DeckList_Directory
*
folder
,
DirectoryNode
*
parent
)
void
RemoteDeckList_TreeModel
::
addFolderToTree
(
DeckList_Directory
*
folder
,
DirectoryNode
*
parent
)
{
{
addFolderToTree
(
folder
->
getName
(),
folder
->
getTreeItems
(),
parent
);
//
addFolderToTree(folder->getName(), folder->getTreeItems(), parent);
}
}
void
RemoteDeckList_TreeModel
::
addFolderToTree
(
const
QString
&
name
,
const
QList
<
DeckList_TreeItem
*>
&
folderItems
,
DirectoryNode
*
parent
)
void
RemoteDeckList_TreeModel
::
addFolderToTree
(
const
QString
&
name
,
const
QList
<
DeckList_TreeItem
*>
&
folderItems
,
DirectoryNode
*
parent
)
{
{
DirectoryNode
*
newItem
=
new
DirectoryNode
(
name
,
parent
);
/*
DirectoryNode *newItem = new DirectoryNode(name, parent);
beginInsertRows(nodeToIndex(parent), parent->size(), parent->size());
beginInsertRows(nodeToIndex(parent), parent->size(), parent->size());
parent->append(newItem);
parent->append(newItem);
endInsertRows();
endInsertRows();
...
@@ -228,6 +230,7 @@ void RemoteDeckList_TreeModel::addFolderToTree(const QString &name, const QList<
...
@@ -228,6 +230,7 @@ void RemoteDeckList_TreeModel::addFolderToTree(const QString &name, const QList<
else
else
addFileToTree(dynamic_cast<DeckList_File *>(folderItems[i]), newItem);
addFileToTree(dynamic_cast<DeckList_File *>(folderItems[i]), newItem);
}
}
*/
}
}
void
RemoteDeckList_TreeModel
::
removeNode
(
RemoteDeckList_TreeModel
::
Node
*
node
)
void
RemoteDeckList_TreeModel
::
removeNode
(
RemoteDeckList_TreeModel
::
Node
*
node
)
...
@@ -242,22 +245,21 @@ void RemoteDeckList_TreeModel::removeNode(RemoteDeckList_TreeModel::Node *node)
...
@@ -242,22 +245,21 @@ void RemoteDeckList_TreeModel::removeNode(RemoteDeckList_TreeModel::Node *node)
void
RemoteDeckList_TreeModel
::
refreshTree
()
void
RemoteDeckList_TreeModel
::
refreshTree
()
{
{
PendingCommand
*
pend
=
client
->
prepareSessionCommand
(
Command_DeckList
());
PendingCommand
*
pend
=
client
->
prepareSessionCommand
(
Command_DeckList
());
connect
(
pend
,
SIGNAL
(
finished
(
Protocol
Response
*
)),
this
,
SLOT
(
deckListFinished
(
Protocol
Response
*
)));
connect
(
pend
,
SIGNAL
(
finished
(
const
Response
&
)),
this
,
SLOT
(
deckListFinished
(
const
Response
&
)));
client
->
sendCommand
(
pend
);
client
->
sendCommand
(
pend
);
}
}
void
RemoteDeckList_TreeModel
::
deckListFinished
(
Protocol
Response
*
r
)
void
RemoteDeckList_TreeModel
::
deckListFinished
(
const
Response
&
r
)
{
{
Response_DeckList
*
resp
=
qobject_cast
<
Response_DeckList
*>
(
r
);
/* const Response_DeckList &resp = r.GetExtension(Response_DeckList::ext);
if
(
!
resp
)
return
;
root->clearTree();
root->clearTree();
reset();
reset();
addFolderToTree(resp->getRoot(), root);
addFolderToTree(resp->getRoot(), root);
emit treeRefreshed();
emit treeRefreshed();
*/
}
}
RemoteDeckList_TreeWidget
::
RemoteDeckList_TreeWidget
(
AbstractClient
*
_client
,
QWidget
*
parent
)
RemoteDeckList_TreeWidget
::
RemoteDeckList_TreeWidget
(
AbstractClient
*
_client
,
QWidget
*
parent
)
...
...
cockatrice/src/remotedecklist_treewidget.h
View file @
d5c62896
...
@@ -5,7 +5,7 @@
...
@@ -5,7 +5,7 @@
#include
<QDateTime>
#include
<QDateTime>
#include
<QTreeView>
#include
<QTreeView>
class
Protocol
Response
;
class
Response
;
class
AbstractClient
;
class
AbstractClient
;
class
QSortFilterProxyModel
;
class
QSortFilterProxyModel
;
class
DeckList_File
;
class
DeckList_File
;
...
@@ -64,7 +64,7 @@ private:
...
@@ -64,7 +64,7 @@ private:
signals:
signals:
void
treeRefreshed
();
void
treeRefreshed
();
private
slots
:
private
slots
:
void
deckListFinished
(
Protocol
Response
*
r
);
void
deckListFinished
(
const
Response
&
r
);
public:
public:
RemoteDeckList_TreeModel
(
AbstractClient
*
_client
,
QObject
*
parent
=
0
);
RemoteDeckList_TreeModel
(
AbstractClient
*
_client
,
QObject
*
parent
=
0
);
~
RemoteDeckList_TreeModel
();
~
RemoteDeckList_TreeModel
();
...
...
cockatrice/src/stackzone.cpp
View file @
d5c62896
...
@@ -5,6 +5,7 @@
...
@@ -5,6 +5,7 @@
#include
"settingscache.h"
#include
"settingscache.h"
#include
"player.h"
#include
"player.h"
#include
"carddragitem.h"
#include
"carddragitem.h"
#include
"carditem.h"
#include
"pb/command_move_card.pb.h"
#include
"pb/command_move_card.pb.h"
...
...
cockatrice/src/tab_game.cpp
View file @
d5c62896
...
@@ -18,7 +18,6 @@
...
@@ -18,7 +18,6 @@
#include
"zoneviewwidget.h"
#include
"zoneviewwidget.h"
#include
"deckview.h"
#include
"deckview.h"
#include
"decklist.h"
#include
"decklist.h"
#include
"protocol_items.h"
#include
"dlg_load_remote_deck.h"
#include
"dlg_load_remote_deck.h"
#include
"abstractclient.h"
#include
"abstractclient.h"
#include
"carditem.h"
#include
"carditem.h"
...
@@ -38,6 +37,22 @@
...
@@ -38,6 +37,22 @@
#include
"pb/command_set_active_phase.pb.h"
#include
"pb/command_set_active_phase.pb.h"
#include
"pb/command_next_turn.pb.h"
#include
"pb/command_next_turn.pb.h"
#include
"pb/command_delete_arrow.pb.h"
#include
"pb/command_delete_arrow.pb.h"
#include
"pb/response_deck_download.pb.h"
#include
"pb/game_event_container.pb.h"
#include
"pb/event_game_joined.pb.h"
#include
"pb/event_game_say.pb.h"
#include
"pb/event_game_state_changed.pb.h"
#include
"pb/event_player_properties_changed.pb.h"
#include
"pb/event_join.pb.h"
#include
"pb/event_leave.pb.h"
#include
"pb/event_kicked.pb.h"
#include
"pb/event_game_host_changed.pb.h"
#include
"pb/event_game_closed.pb.h"
#include
"pb/event_set_active_player.pb.h"
#include
"pb/event_set_active_phase.pb.h"
#include
"pb/event_ping.pb.h"
#include
"pb/context_deck_select.pb.h"
#include
"get_pb_extension.h"
ReadyStartButton
::
ReadyStartButton
(
QWidget
*
parent
)
ReadyStartButton
::
ReadyStartButton
(
QWidget
*
parent
)
:
QPushButton
(
parent
),
readyStart
(
false
)
:
QPushButton
(
parent
),
readyStart
(
false
)
...
@@ -125,7 +140,7 @@ void DeckViewContainer::loadLocalDeck()
...
@@ -125,7 +140,7 @@ void DeckViewContainer::loadLocalDeck()
Command_DeckSelect
cmd
;
Command_DeckSelect
cmd
;
cmd
.
set_deck
(
deck
->
writeToString_Native
().
toStdString
());
cmd
.
set_deck
(
deck
->
writeToString_Native
().
toStdString
());
PendingCommand
*
pend
=
static_cast
<
TabGame
*>
(
parent
())
->
prepareGameCommand
(
cmd
);
PendingCommand
*
pend
=
static_cast
<
TabGame
*>
(
parent
())
->
prepareGameCommand
(
cmd
);
connect
(
pend
,
SIGNAL
(
finished
(
Protocol
Response
*
)),
this
,
SLOT
(
deckSelectFinished
(
Protocol
Response
*
)));
connect
(
pend
,
SIGNAL
(
finished
(
const
Response
&
)),
this
,
SLOT
(
deckSelectFinished
(
const
Response
&
)));
static_cast
<
TabGame
*>
(
parent
())
->
sendGameCommand
(
pend
,
playerId
);
static_cast
<
TabGame
*>
(
parent
())
->
sendGameCommand
(
pend
,
playerId
);
}
}
...
@@ -136,19 +151,17 @@ void DeckViewContainer::loadRemoteDeck()
...
@@ -136,19 +151,17 @@ void DeckViewContainer::loadRemoteDeck()
Command_DeckSelect
cmd
;
Command_DeckSelect
cmd
;
cmd
.
set_deck_id
(
dlg
.
getDeckId
());
cmd
.
set_deck_id
(
dlg
.
getDeckId
());
PendingCommand
*
pend
=
static_cast
<
TabGame
*>
(
parent
())
->
prepareGameCommand
(
cmd
);
PendingCommand
*
pend
=
static_cast
<
TabGame
*>
(
parent
())
->
prepareGameCommand
(
cmd
);
connect
(
pend
,
SIGNAL
(
finished
(
Protocol
Response
*
)),
this
,
SLOT
(
deckSelectFinished
(
Protocol
Response
*
)));
connect
(
pend
,
SIGNAL
(
finished
(
const
Response
&
)),
this
,
SLOT
(
deckSelectFinished
(
const
Response
&
)));
static_cast
<
TabGame
*>
(
parent
())
->
sendGameCommand
(
pend
,
playerId
);
static_cast
<
TabGame
*>
(
parent
())
->
sendGameCommand
(
pend
,
playerId
);
}
}
}
}
void
DeckViewContainer
::
deckSelectFinished
(
Protocol
Response
*
r
)
void
DeckViewContainer
::
deckSelectFinished
(
const
Response
&
r
)
{
{
Response_DeckDownload
*
resp
=
qobject_cast
<
Response_DeckDownload
*>
(
r
);
const
Response_DeckDownload
&
resp
=
r
.
GetExtension
(
Response_DeckDownload
::
ext
);
if
(
!
resp
)
DeckList
*
newDeck
=
new
DeckList
(
QString
::
fromStdString
(
resp
.
deck
()));
return
;
db
->
cacheCardPixmaps
(
newDeck
->
getCardList
());
deckView
->
setDeck
(
newDeck
);
db
->
cacheCardPixmaps
(
resp
->
getDeck
()
->
getCardList
());
deckView
->
setDeck
(
new
DeckList
(
resp
->
getDeck
()));
readyStartButton
->
setEnabled
(
true
);
readyStartButton
->
setEnabled
(
true
);
}
}
...
@@ -180,8 +193,20 @@ void DeckViewContainer::setDeck(DeckList *deck)
...
@@ -180,8 +193,20 @@ void DeckViewContainer::setDeck(DeckList *deck)
readyStartButton
->
setEnabled
(
true
);
readyStartButton
->
setEnabled
(
true
);
}
}
TabGame
::
TabGame
(
TabSupervisor
*
_tabSupervisor
,
QList
<
AbstractClient
*>
&
_clients
,
int
_gameId
,
const
QString
&
_gameDescription
,
int
_hostId
,
int
_localPlayerId
,
bool
_spectator
,
bool
_spectatorsCanTalk
,
bool
_spectatorsSeeEverything
,
bool
_resuming
)
TabGame
::
TabGame
(
TabSupervisor
*
_tabSupervisor
,
QList
<
AbstractClient
*>
&
_clients
,
const
Event_GameJoined
&
event
)
:
Tab
(
_tabSupervisor
),
clients
(
_clients
),
gameId
(
_gameId
),
gameDescription
(
_gameDescription
),
hostId
(
_hostId
),
localPlayerId
(
_localPlayerId
),
spectator
(
_spectator
),
spectatorsCanTalk
(
_spectatorsCanTalk
),
spectatorsSeeEverything
(
_spectatorsSeeEverything
),
gameStateKnown
(
false
),
started
(
false
),
resuming
(
_resuming
),
currentPhase
(
-
1
)
:
Tab
(
_tabSupervisor
),
clients
(
_clients
),
gameId
(
event
.
game_id
()),
gameDescription
(
QString
::
fromStdString
(
event
.
game_description
())),
hostId
(
event
.
host_id
()),
localPlayerId
(
event
.
player_id
()),
spectator
(
event
.
spectator
()),
spectatorsCanTalk
(
event
.
spectators_can_talk
()),
spectatorsSeeEverything
(
event
.
spectators_see_everything
()),
gameStateKnown
(
false
),
started
(
false
),
resuming
(
event
.
resuming
()),
currentPhase
(
-
1
)
{
{
phasesToolbar
=
new
PhasesToolbar
;
phasesToolbar
=
new
PhasesToolbar
;
phasesToolbar
->
hide
();
phasesToolbar
->
hide
();
...
@@ -198,7 +223,7 @@ TabGame::TabGame(TabSupervisor *_tabSupervisor, QList<AbstractClient *> &_client
...
@@ -198,7 +223,7 @@ TabGame::TabGame(TabSupervisor *_tabSupervisor, QList<AbstractClient *> &_client
timeElapsedLabel
=
new
QLabel
;
timeElapsedLabel
=
new
QLabel
;
timeElapsedLabel
->
setAlignment
(
Qt
::
AlignCenter
);
timeElapsedLabel
->
setAlignment
(
Qt
::
AlignCenter
);
messageLog
=
new
MessageLogWidget
(
tabSupervisor
->
getUserInfo
()
->
getN
ame
(),
tabSupervisor
->
getUserInfo
()
->
ge
tGe
nder
()
==
ServerInfo_User
::
Female
);
messageLog
=
new
MessageLogWidget
(
QString
::
fromStdString
(
tabSupervisor
->
getUserInfo
()
->
n
ame
()
)
,
tabSupervisor
->
getUserInfo
()
->
gender
()
==
ServerInfo_User
::
Female
);
connect
(
messageLog
,
SIGNAL
(
cardNameHovered
(
QString
)),
cardInfo
,
SLOT
(
setCard
(
QString
)));
connect
(
messageLog
,
SIGNAL
(
cardNameHovered
(
QString
)),
cardInfo
,
SLOT
(
setCard
(
QString
)));
connect
(
messageLog
,
SIGNAL
(
showCardInfoPopup
(
QPoint
,
QString
)),
this
,
SLOT
(
showCardInfoPopup
(
QPoint
,
QString
)));
connect
(
messageLog
,
SIGNAL
(
showCardInfoPopup
(
QPoint
,
QString
)),
this
,
SLOT
(
showCardInfoPopup
(
QPoint
,
QString
)));
connect
(
messageLog
,
SIGNAL
(
deleteCardInfoPopup
(
QString
)),
this
,
SLOT
(
deleteCardInfoPopup
(
QString
)));
connect
(
messageLog
,
SIGNAL
(
deleteCardInfoPopup
(
QString
)),
this
,
SLOT
(
deleteCardInfoPopup
(
QString
)));
...
@@ -411,7 +436,7 @@ void TabGame::actRemoveLocalArrows()
...
@@ -411,7 +436,7 @@ void TabGame::actRemoveLocalArrows()
}
}
}
}
Player
*
TabGame
::
addPlayer
(
int
playerId
,
ServerInfo_User
*
info
)
Player
*
TabGame
::
addPlayer
(
int
playerId
,
const
ServerInfo_User
&
info
)
{
{
bool
local
=
((
clients
.
size
()
>
1
)
||
(
playerId
==
localPlayerId
));
bool
local
=
((
clients
.
size
()
>
1
)
||
(
playerId
==
localPlayerId
));
Player
*
newPlayer
=
new
Player
(
info
,
playerId
,
local
,
this
);
Player
*
newPlayer
=
new
Player
(
info
,
playerId
,
local
,
this
);
...
@@ -438,47 +463,48 @@ Player *TabGame::addPlayer(int playerId, ServerInfo_User *info)
...
@@ -438,47 +463,48 @@ Player *TabGame::addPlayer(int playerId, ServerInfo_User *info)
return
newPlayer
;
return
newPlayer
;
}
}
void
TabGame
::
processGameEventContainer
(
GameEventContainer
*
cont
,
AbstractClient
*
client
)
void
TabGame
::
processGameEventContainer
(
const
GameEventContainer
&
cont
,
AbstractClient
*
client
)
{
{
const
QList
<
GameEvent
*>
&
eventList
=
cont
->
getEventList
();
const
GameEventContext
&
context
=
cont
.
context
();
GameEventContext
*
context
=
cont
->
getContext
();
messageLog
->
containerProcessingStarted
(
context
);
messageLog
->
containerProcessingStarted
(
context
);
for
(
int
i
=
0
;
i
<
eventList
.
size
();
++
i
)
{
const
int
eventListSize
=
cont
.
event_list_size
();
GameEvent
*
event
=
eventList
[
i
];
for
(
int
i
=
0
;
i
<
eventListSize
;
++
i
)
{
const
GameEvent
&
event
=
cont
.
event_list
(
i
);
if
(
spectators
.
contains
(
event
->
getPlayerId
()))
{
const
int
playerId
=
event
.
player_id
();
switch
(
event
->
getItemId
())
{
const
GameEvent
::
GameEventType
eventType
=
static_cast
<
GameEvent
::
GameEventType
>
(
getPbExtension
(
event
));
case
ItemId_Event_Say
:
eventSpectatorSay
(
static_cast
<
Event_Say
*>
(
event
),
context
);
break
;
if
(
spectators
.
contains
(
playerId
))
{
case
ItemId_Event_Leave
:
eventSpectatorLeave
(
static_cast
<
Event_Leave
*>
(
event
),
context
);
break
;
switch
(
eventType
)
{
case
GameEvent
::
GAME_SAY
:
eventSpectatorSay
(
event
.
GetExtension
(
Event_GameSay
::
ext
),
playerId
,
context
);
break
;
case
GameEvent
::
LEAVE
:
eventSpectatorLeave
(
event
.
GetExtension
(
Event_Leave
::
ext
),
playerId
,
context
);
break
;
default:
{
default:
{
qDebug
()
<<
"unhandled spectator game event"
;
qDebug
()
<<
"unhandled spectator game event"
;
break
;
break
;
}
}
}
}
}
else
{
}
else
{
if
((
clients
.
size
()
>
1
)
&&
(
event
->
getP
layerId
()
!=
-
1
))
if
((
clients
.
size
()
>
1
)
&&
(
p
layerId
!=
-
1
))
if
(
clients
.
at
(
event
->
getP
layerId
()
)
!=
client
)
if
(
clients
.
at
(
p
layerId
)
!=
client
)
continue
;
continue
;
switch
(
event
->
getItemId
()
)
{
switch
(
event
Type
)
{
case
ItemId_E
vent
_
GameStateChanged
:
event
GameStateChanged
(
static_cast
<
Event_GameStateChanged
*>
(
event
)
,
context
);
break
;
case
GameEvent
::
GAME_STATE_CHANGED
:
e
ventGameStateChanged
(
event
.
GetExtension
(
Event_GameStateChanged
::
ext
),
playerId
,
context
);
break
;
case
ItemId_Event_PlayerPropertiesChanged
:
eventPlayerPropertiesChanged
(
static_cast
<
Event_PlayerPropertiesChanged
*>
(
event
)
,
context
);
break
;
case
GameEvent
::
PLAYER_PROPERTIES_CHANGED
:
eventPlayerPropertiesChanged
(
event
.
GetExtension
(
Event_PlayerPropertiesChanged
::
ext
),
playerId
,
context
);
break
;
case
ItemId_Event_Join
:
eventJoin
(
static_cast
<
Event_Join
*>
(
event
)
,
context
);
break
;
case
GameEvent
::
JOIN
:
eventJoin
(
event
.
GetExtension
(
Event_Join
::
ext
),
playerId
,
context
);
break
;
case
ItemId_Event_Leave
:
eventLeave
(
static_cast
<
Event_Leave
*>
(
event
)
,
context
);
break
;
case
GameEvent
::
LEAVE
:
eventLeave
(
event
.
GetExtension
(
Event_Leave
::
ext
),
playerId
,
context
);
break
;
case
ItemId_Event_Kicked
:
eventKicked
(
static_cast
<
Event_Kicked
*>
(
event
)
,
context
);
break
;
case
GameEvent
::
KICKED
:
eventKicked
(
event
.
GetExtension
(
Event_Kicked
::
ext
),
playerId
,
context
);
break
;
case
ItemId_Event_GameHostChanged
:
eventGameHostChanged
(
static_cast
<
Event_GameHostChanged
*>
(
event
)
,
context
);
break
;
case
GameEvent
::
GAME_HOST_CHANGED
:
eventGameHostChanged
(
event
.
GetExtension
(
Event_GameHostChanged
::
ext
),
playerId
,
context
);
break
;
case
ItemId_Event_GameClosed
:
eventGameClosed
(
static_cast
<
Event_GameClosed
*>
(
event
)
,
context
);
break
;
case
GameEvent
::
GAME_CLOSED
:
eventGameClosed
(
event
.
GetExtension
(
Event_GameClosed
::
ext
),
playerId
,
context
);
break
;
case
ItemId_Event_SetActivePlayer
:
eventSetActivePlayer
(
static_cast
<
Event_SetActivePlayer
*>
(
event
)
,
context
);
break
;
case
GameEvent
::
SET_ACTIVE_PLAYER
:
eventSetActivePlayer
(
event
.
GetExtension
(
Event_SetActivePlayer
::
ext
),
playerId
,
context
);
break
;
case
ItemId_Event_SetActivePhase
:
eventSetActivePhase
(
static_cast
<
Event_SetActivePhase
*>
(
event
)
,
context
);
break
;
case
GameEvent
::
SET_ACTIVE_PHASE
:
eventSetActivePhase
(
event
.
GetExtension
(
Event_SetActivePhase
::
ext
),
playerId
,
context
);
break
;
case
ItemId_Event_Ping
:
eventPing
(
static_cast
<
Event_Ping
*>
(
event
)
,
context
);
break
;
case
GameEvent
::
PING
:
eventPing
(
event
.
GetExtension
(
Event_Ping
::
ext
),
playerId
,
context
);
break
;
default:
{
default:
{
Player
*
player
=
players
.
value
(
event
->
getP
layerId
()
,
0
);
Player
*
player
=
players
.
value
(
p
layerId
,
0
);
if
(
!
player
)
{
if
(
!
player
)
{
qDebug
()
<<
"unhandled game event: invalid player id"
;
qDebug
()
<<
"unhandled game event: invalid player id"
;
break
;
break
;
}
}
player
->
processGameEvent
(
event
,
context
);
player
->
processGameEvent
(
eventType
,
event
,
context
);
emit
userEvent
();
emit
userEvent
();
}
}
}
}
...
@@ -574,62 +600,63 @@ void TabGame::stopGame()
...
@@ -574,62 +600,63 @@ void TabGame::stopGame()
phasesToolbar
->
hide
();
phasesToolbar
->
hide
();
}
}
void
TabGame
::
eventSpectatorSay
(
Event_Say
*
event
,
GameEventContext
*
/*context*/
)
void
TabGame
::
eventSpectatorSay
(
const
Event_GameSay
&
event
,
int
eventPlayerId
,
const
GameEventContext
&
/*context*/
)
{
{
messageLog
->
logSpectatorSay
(
spectators
.
value
(
event
->
get
PlayerId
()
),
event
->
getM
essage
());
messageLog
->
logSpectatorSay
(
spectators
.
value
(
eventPlayerId
),
QString
::
fromStdString
(
event
.
m
essage
())
)
;
}
}
void
TabGame
::
eventSpectatorLeave
(
Event_Leave
*
event
,
GameEventContext
*
/*context*/
)
void
TabGame
::
eventSpectatorLeave
(
const
Event_Leave
&
/
*event
*/
,
int
eventPlayerId
,
const
GameEventContext
&
/*context*/
)
{
{
int
playerId
=
event
->
getPlayerId
();
messageLog
->
logLeaveSpectator
(
spectators
.
value
(
eventPlayerId
));
messageLog
->
logLeaveSpectator
(
spectators
.
value
(
playerId
));
playerListWidget
->
removePlayer
(
eventPlayerId
);
playerListWidget
->
removePlayer
(
playerId
);
spectators
.
remove
(
eventPlayerId
);
spectators
.
remove
(
playerId
);
emit
userEvent
();
emit
userEvent
();
}
}
void
TabGame
::
eventGameStateChanged
(
Event_GameStateChanged
*
event
,
GameEventContext
*
/*context*/
)
void
TabGame
::
eventGameStateChanged
(
const
Event_GameStateChanged
&
event
,
int
/*eventPlayerId*/
,
const
GameEventContext
&
/*context*/
)
{
{
const
QList
<
ServerInfo_Player
*>
&
plList
=
event
->
getPlayerList
();
const
int
playerListSize
=
event
.
player_list_size
();
for
(
int
i
=
0
;
i
<
plList
.
size
();
++
i
)
{
for
(
int
i
=
0
;
i
<
playerListSize
;
++
i
)
{
ServerInfo_Player
*
pl
=
plList
[
i
];
const
ServerInfo_Player
&
playerInfo
=
event
.
player_list
(
i
);
ServerInfo_PlayerProperties
*
prop
=
pl
->
getProperties
();
const
ServerInfo_PlayerProperties
&
prop
=
playerInfo
.
properties
();
if
(
prop
->
getSpectator
())
{
const
int
playerId
=
prop
.
player_id
();
if
(
!
spectators
.
contains
(
prop
->
getPlayerId
()))
{
if
(
prop
.
spectator
())
{
spectators
.
insert
(
prop
->
getPlayerId
(),
prop
->
getUserInfo
()
->
getName
());
if
(
!
spectators
.
contains
(
playerId
))
{
spectators
.
insert
(
playerId
,
QString
::
fromStdString
(
prop
.
user_info
().
name
()));
playerListWidget
->
addPlayer
(
prop
);
playerListWidget
->
addPlayer
(
prop
);
}
}
}
else
{
}
else
{
Player
*
player
=
players
.
value
(
p
rop
->
getP
layerId
()
,
0
);
Player
*
player
=
players
.
value
(
playerId
,
0
);
if
(
!
player
)
{
if
(
!
player
)
{
player
=
addPlayer
(
p
rop
->
getP
layerId
()
,
prop
->
getU
ser
I
nfo
());
player
=
addPlayer
(
playerId
,
prop
.
u
ser
_i
nfo
());
playerListWidget
->
addPlayer
(
prop
);
playerListWidget
->
addPlayer
(
prop
);
}
}
player
->
processPlayerInfo
(
pl
);
player
->
processPlayerInfo
(
playerInfo
);
if
(
player
->
getLocal
()
&&
!
pl
->
getDeck
()
->
isEmpty
())
{
if
(
player
->
getLocal
()
&&
playerInfo
.
has_deck_list
())
{
db
->
cacheCardPixmaps
(
pl
->
getDeck
()
->
getCardList
());
DeckList
*
newDeck
=
new
DeckList
(
QString
::
fromStdString
(
playerInfo
.
deck_list
()));
deckViewContainers
.
value
(
player
->
getId
())
->
setDeck
(
new
DeckList
(
pl
->
getDeck
()));
db
->
cacheCardPixmaps
(
newDeck
->
getCardList
());
deckViewContainers
.
value
(
playerId
)
->
setDeck
(
newDeck
);
}
}
}
}
}
}
for
(
int
i
=
0
;
i
<
plList
.
s
ize
()
;
++
i
)
{
for
(
int
i
=
0
;
i
<
pl
ayer
List
S
ize
;
++
i
)
{
ServerInfo_Player
*
pl
=
plList
[
i
]
;
const
ServerInfo_Player
&
pl
ayerInfo
=
event
.
player_list
(
i
)
;
ServerInfo_PlayerProperties
*
prop
=
pl
->
getP
roperties
();
const
ServerInfo_PlayerProperties
&
prop
=
pl
ayerInfo
.
p
roperties
();
if
(
!
prop
->
getS
pectator
())
{
if
(
!
prop
.
s
pectator
())
{
Player
*
player
=
players
.
value
(
prop
->
getP
layer
I
d
(),
0
);
Player
*
player
=
players
.
value
(
prop
.
p
layer
_i
d
(),
0
);
if
(
!
player
)
if
(
!
player
)
continue
;
continue
;
player
->
processCardAttachment
(
pl
);
player
->
processCardAttachment
(
pl
ayerInfo
);
}
}
}
}
if
(
event
->
getG
ame
S
tarted
()
&&
!
started
)
{
if
(
event
.
g
ame
_s
tarted
()
&&
!
started
)
{
startGame
(
!
gameStateKnown
);
startGame
(
!
gameStateKnown
);
if
(
gameStateKnown
)
if
(
gameStateKnown
)
messageLog
->
logGameStart
();
messageLog
->
logGameStart
();
setActivePlayer
(
event
->
getA
ctive
P
layer
());
setActivePlayer
(
event
.
a
ctive
_p
layer
_id
());
setActivePhase
(
event
->
getA
ctive
P
hase
());
setActivePhase
(
event
.
a
ctive
_p
hase
());
}
else
if
(
!
event
->
getG
ame
S
tarted
()
&&
started
)
{
}
else
if
(
!
event
.
g
ame
_s
tarted
()
&&
started
)
{
stopGame
();
stopGame
();
scene
->
clearViews
();
scene
->
clearViews
();
}
}
...
@@ -637,15 +664,17 @@ void TabGame::eventGameStateChanged(Event_GameStateChanged *event, GameEventCont
...
@@ -637,15 +664,17 @@ void TabGame::eventGameStateChanged(Event_GameStateChanged *event, GameEventCont
emit
userEvent
();
emit
userEvent
();
}
}
void
TabGame
::
eventPlayerPropertiesChanged
(
Event_PlayerPropertiesChanged
*
event
,
GameEventContext
*
context
)
void
TabGame
::
eventPlayerPropertiesChanged
(
const
Event_PlayerPropertiesChanged
&
event
,
int
eventPlayerId
,
const
GameEventContext
&
context
)
{
{
Player
*
player
=
players
.
value
(
event
->
getProperties
()
->
get
PlayerId
()
,
0
);
Player
*
player
=
players
.
value
(
eventPlayerId
,
0
);
if
(
!
player
)
if
(
!
player
)
return
;
return
;
playerListWidget
->
updatePlayerProperties
(
event
->
getProperties
());
playerListWidget
->
updatePlayerProperties
(
event
.
player_properties
());
if
(
context
)
switch
(
context
->
getItemId
())
{
case
ItemId_Context_ReadyStart
:
{
const
GameEventContext
::
ContextType
contextType
=
static_cast
<
const
GameEventContext
::
ContextType
>
(
getPbExtension
(
context
));
bool
ready
=
event
->
getProperties
()
->
getReadyStart
();
switch
(
contextType
)
{
case
GameEventContext
::
READY_START
:
{
bool
ready
=
event
.
player_properties
().
ready_start
();
if
(
player
->
getLocal
())
if
(
player
->
getLocal
())
deckViewContainers
.
value
(
player
->
getId
())
->
setReadyStart
(
ready
);
deckViewContainers
.
value
(
player
->
getId
())
->
setReadyStart
(
ready
);
if
(
ready
)
if
(
ready
)
...
@@ -654,7 +683,7 @@ void TabGame::eventPlayerPropertiesChanged(Event_PlayerPropertiesChanged *event,
...
@@ -654,7 +683,7 @@ void TabGame::eventPlayerPropertiesChanged(Event_PlayerPropertiesChanged *event,
messageLog
->
logNotReadyStart
(
player
);
messageLog
->
logNotReadyStart
(
player
);
break
;
break
;
}
}
case
ItemId_Context_Concede
:
{
case
GameEventContext
::
CONCEDE
:
{
messageLog
->
logConcede
(
player
);
messageLog
->
logConcede
(
player
);
player
->
setConceded
(
true
);
player
->
setConceded
(
true
);
...
@@ -664,39 +693,40 @@ void TabGame::eventPlayerPropertiesChanged(Event_PlayerPropertiesChanged *event,
...
@@ -664,39 +693,40 @@ void TabGame::eventPlayerPropertiesChanged(Event_PlayerPropertiesChanged *event,
break
;
break
;
}
}
case
ItemId_Context_DeckSelect
:
messageLog
->
logDeckSelect
(
player
,
static_cast
<
Context_DeckSelect
*>
(
context
)
->
getDeckHash
());
break
;
case
GameEventContext
::
DECK_SELECT
:
{
messageLog
->
logDeckSelect
(
player
,
QString
::
fromStdString
(
context
.
GetExtension
(
Context_DeckSelect
::
ext
).
deck_hash
()));
break
;
}
default:
;
default:
;
}
}
}
}
void
TabGame
::
eventJoin
(
Event_Join
*
event
,
GameEventContext
*
/*context*/
)
void
TabGame
::
eventJoin
(
const
Event_Join
&
event
,
int
/*eventPlayerId*/
,
const
GameEventContext
&
/*context*/
)
{
{
ServerInfo_PlayerProperties
*
playerInfo
=
event
->
getPlayer
();
const
ServerInfo_PlayerProperties
&
playerInfo
=
event
.
player_properties
();
if
(
players
.
contains
(
playerInfo
->
getPlayerId
()))
const
int
playerId
=
playerInfo
.
player_id
();
if
(
players
.
contains
(
playerId
))
return
;
return
;
if
(
playerInfo
->
getSpectator
())
{
if
(
playerInfo
.
spectator
())
{
spectators
.
insert
(
playerInfo
->
getPlayerId
(),
playerInfo
->
getUserInfo
()
->
getName
());
spectators
.
insert
(
playerId
,
QString
::
fromStdString
(
playerInfo
.
user_info
().
name
()));
messageLog
->
logJoinSpectator
(
playerInfo
->
getUserInfo
()
->
getName
());
messageLog
->
logJoinSpectator
(
QString
::
fromStdString
(
playerInfo
.
user_info
().
name
()));
playerListWidget
->
addPlayer
(
playerInfo
);
}
else
{
}
else
{
Player
*
newPlayer
=
addPlayer
(
playerI
nfo
->
getPlayerId
()
,
playerInfo
->
getU
ser
I
nfo
());
Player
*
newPlayer
=
addPlayer
(
playerI
d
,
playerInfo
.
u
ser
_i
nfo
());
messageLog
->
logJoin
(
newPlayer
);
messageLog
->
logJoin
(
newPlayer
);
playerListWidget
->
addPlayer
(
playerInfo
);
}
}
playerListWidget
->
addPlayer
(
playerInfo
);
emit
userEvent
();
emit
userEvent
();
}
}
void
TabGame
::
eventLeave
(
Event_Leave
*
event
,
GameEventContext
*
/*context*/
)
void
TabGame
::
eventLeave
(
const
Event_Leave
&
/
*event
*/
,
int
eventPlayerId
,
const
GameEventContext
&
/*context*/
)
{
{
int
playerId
=
event
->
getPlayerId
();
Player
*
player
=
players
.
value
(
eventPlayerId
,
0
);
Player
*
player
=
players
.
value
(
playerId
,
0
);
if
(
!
player
)
if
(
!
player
)
return
;
return
;
messageLog
->
logLeave
(
player
);
messageLog
->
logLeave
(
player
);
playerListWidget
->
removePlayer
(
p
layerId
);
playerListWidget
->
removePlayer
(
eventP
layerId
);
players
.
remove
(
p
layerId
);
players
.
remove
(
eventP
layerId
);
emit
playerRemoved
(
player
);
emit
playerRemoved
(
player
);
player
->
clear
();
player
->
clear
();
player
->
deleteLater
();
player
->
deleteLater
();
...
@@ -709,19 +739,19 @@ void TabGame::eventLeave(Event_Leave *event, GameEventContext * /*context*/)
...
@@ -709,19 +739,19 @@ void TabGame::eventLeave(Event_Leave *event, GameEventContext * /*context*/)
emit
userEvent
();
emit
userEvent
();
}
}
void
TabGame
::
eventKicked
(
Event_Kicked
*
/*event*/
,
GameEventContext
*
/*context*/
)
void
TabGame
::
eventKicked
(
const
Event_Kicked
&
/*event*/
,
int
/*eventPlayerId*/
,
const
GameEventContext
&
/*context*/
)
{
{
emit
userEvent
();
emit
userEvent
();
QMessageBox
::
critical
(
this
,
tr
(
"Kicked"
),
tr
(
"You have been kicked out of the game."
));
QMessageBox
::
critical
(
this
,
tr
(
"Kicked"
),
tr
(
"You have been kicked out of the game."
));
deleteLater
();
deleteLater
();
}
}
void
TabGame
::
eventGameHostChanged
(
Event_GameHostChanged
*
event
,
GameEventContext
*
/*context*/
)
void
TabGame
::
eventGameHostChanged
(
const
Event_GameHostChanged
&
/
*event
*/
,
int
eventPlayerId
,
const
GameEventContext
&
/*context*/
)
{
{
hostId
=
event
->
get
PlayerId
()
;
hostId
=
eventPlayerId
;
}
}
void
TabGame
::
eventGameClosed
(
Event_GameClosed
*
/*event*/
,
GameEventContext
*
/*context*/
)
void
TabGame
::
eventGameClosed
(
const
Event_GameClosed
&
/*event*/
,
int
/*eventPlayerId*/
,
const
GameEventContext
&
/*context*/
)
{
{
started
=
false
;
started
=
false
;
messageLog
->
logGameClosed
();
messageLog
->
logGameClosed
();
...
@@ -753,9 +783,9 @@ Player *TabGame::setActivePlayer(int id)
...
@@ -753,9 +783,9 @@ Player *TabGame::setActivePlayer(int id)
return
player
;
return
player
;
}
}
void
TabGame
::
eventSetActivePlayer
(
Event_SetActivePlayer
*
event
,
GameEventContext
*
/*context*/
)
void
TabGame
::
eventSetActivePlayer
(
const
Event_SetActivePlayer
&
event
,
int
/*eventPlayerId*/
,
const
GameEventContext
&
/*context*/
)
{
{
Player
*
player
=
setActivePlayer
(
event
->
getA
ctive
P
layer
I
d
());
Player
*
player
=
setActivePlayer
(
event
.
a
ctive
_p
layer
_i
d
());
if
(
!
player
)
if
(
!
player
)
return
;
return
;
messageLog
->
logSetActivePlayer
(
player
);
messageLog
->
logSetActivePlayer
(
player
);
...
@@ -770,22 +800,22 @@ void TabGame::setActivePhase(int phase)
...
@@ -770,22 +800,22 @@ void TabGame::setActivePhase(int phase)
}
}
}
}
void
TabGame
::
eventSetActivePhase
(
Event_SetActivePhase
*
event
,
GameEventContext
*
/*context*/
)
void
TabGame
::
eventSetActivePhase
(
const
Event_SetActivePhase
&
event
,
int
/*eventPlayerId*/
,
const
GameEventContext
&
/*context*/
)
{
{
int
phase
=
event
->
getP
hase
();
const
int
phase
=
event
.
p
hase
();
if
(
currentPhase
!=
phase
)
if
(
currentPhase
!=
phase
)
messageLog
->
logSetActivePhase
(
phase
);
messageLog
->
logSetActivePhase
(
phase
);
setActivePhase
(
phase
);
setActivePhase
(
phase
);
emit
userEvent
();
emit
userEvent
();
}
}
void
TabGame
::
eventPing
(
Event_Ping
*
event
,
GameEventContext
*
/*context*/
)
void
TabGame
::
eventPing
(
const
Event_Ping
&
event
,
int
/*eventPlayerId*/
,
const
GameEventContext
&
/*context*/
)
{
{
const
QList
<
ServerInfo_PlayerPing
*>
&
pingList
=
event
->
getP
ing
L
ist
();
const
int
pingList
Size
=
event
.
p
ing
_l
ist
_size
();
for
(
int
i
=
0
;
i
<
pingList
.
s
ize
()
;
++
i
)
for
(
int
i
=
0
;
i
<
pingList
S
ize
;
++
i
)
playerListWidget
->
updatePing
(
ping
L
ist
[
i
]
->
getP
layer
I
d
(),
ping
L
ist
[
i
]
->
getP
ing
T
ime
());
playerListWidget
->
updatePing
(
event
.
ping
_l
ist
(
i
).
p
layer
_i
d
(),
event
.
ping
_l
ist
(
i
).
p
ing
_t
ime
());
int
seconds
=
event
->
getS
econds
E
lapsed
();
int
seconds
=
event
.
s
econds
_e
lapsed
();
int
minutes
=
seconds
/
60
;
int
minutes
=
seconds
/
60
;
seconds
-=
minutes
*
60
;
seconds
-=
minutes
*
60
;
int
hours
=
minutes
/
60
;
int
hours
=
minutes
/
60
;
...
...
cockatrice/src/tab_game.h
View file @
d5c62896
...
@@ -4,8 +4,8 @@
...
@@ -4,8 +4,8 @@
#include
<QMap>
#include
<QMap>
#include
<QPushButton>
#include
<QPushButton>
#include
"tab.h"
#include
"tab.h"
#include
<google/protobuf/message.h>
namespace
google
{
namespace
protobuf
{
class
Message
;
}
}
class
AbstractClient
;
class
AbstractClient
;
class
CardDatabase
;
class
CardDatabase
;
class
GameView
;
class
GameView
;
...
@@ -22,11 +22,12 @@ class ZoneViewLayout;
...
@@ -22,11 +22,12 @@ class ZoneViewLayout;
class
ZoneViewWidget
;
class
ZoneViewWidget
;
class
PhasesToolbar
;
class
PhasesToolbar
;
class
PlayerListWidget
;
class
PlayerListWidget
;
class
Protocol
Response
;
class
Response
;
class
GameEventContainer
;
class
GameEventContainer
;
class
GameEventContext
;
class
GameEventContext
;
class
GameCommand
;
class
GameCommand
;
class
CommandContainer
;
class
CommandContainer
;
class
Event_GameJoined
;
class
Event_GameStateChanged
;
class
Event_GameStateChanged
;
class
Event_PlayerPropertiesChanged
;
class
Event_PlayerPropertiesChanged
;
class
Event_Join
;
class
Event_Join
;
...
@@ -37,7 +38,7 @@ class Event_GameStart;
...
@@ -37,7 +38,7 @@ class Event_GameStart;
class
Event_SetActivePlayer
;
class
Event_SetActivePlayer
;
class
Event_SetActivePhase
;
class
Event_SetActivePhase
;
class
Event_Ping
;
class
Event_Ping
;
class
Event_Say
;
class
Event_
Game
Say
;
class
Event_Kicked
;
class
Event_Kicked
;
class
Player
;
class
Player
;
class
CardZone
;
class
CardZone
;
...
@@ -73,7 +74,7 @@ private slots:
...
@@ -73,7 +74,7 @@ private slots:
void
loadLocalDeck
();
void
loadLocalDeck
();
void
loadRemoteDeck
();
void
loadRemoteDeck
();
void
readyStart
();
void
readyStart
();
void
deckSelectFinished
(
Protocol
Response
*
r
);
void
deckSelectFinished
(
const
Response
&
r
);
void
sideboardPlanChanged
();
void
sideboardPlanChanged
();
signals:
signals:
void
newCardAdded
(
AbstractCardItem
*
card
);
void
newCardAdded
(
AbstractCardItem
*
card
);
...
@@ -123,31 +124,31 @@ private:
...
@@ -123,31 +124,31 @@ private:
QAction
*
aConcede
,
*
aLeaveGame
,
*
aNextPhase
,
*
aNextTurn
,
*
aRemoveLocalArrows
;
QAction
*
aConcede
,
*
aLeaveGame
,
*
aNextPhase
,
*
aNextTurn
,
*
aRemoveLocalArrows
;
QList
<
QAction
*>
phaseActions
;
QList
<
QAction
*>
phaseActions
;
Player
*
addPlayer
(
int
playerId
,
ServerInfo_User
*
info
);
Player
*
addPlayer
(
int
playerId
,
const
ServerInfo_User
&
info
);
void
startGame
(
bool
resuming
);
void
startGame
(
bool
resuming
);
void
stopGame
();
void
stopGame
();
void
eventSpectatorSay
(
Event_Say
*
event
,
GameEventContext
*
context
);
void
eventSpectatorSay
(
const
Event_GameSay
&
event
,
int
eventPlayerId
,
const
GameEventContext
&
context
);
void
eventSpectatorLeave
(
Event_Leave
*
event
,
GameEventContext
*
context
);
void
eventSpectatorLeave
(
const
Event_Leave
&
event
,
int
eventPlayerId
,
const
GameEventContext
&
context
);
void
eventGameStateChanged
(
Event_GameStateChanged
*
event
,
GameEventContext
*
context
);
void
eventGameStateChanged
(
const
Event_GameStateChanged
&
event
,
int
eventPlayerId
,
const
GameEventContext
&
context
);
void
eventPlayerPropertiesChanged
(
Event_PlayerPropertiesChanged
*
event
,
GameEventContext
*
context
);
void
eventPlayerPropertiesChanged
(
const
Event_PlayerPropertiesChanged
&
event
,
int
eventPlayerId
,
const
GameEventContext
&
context
);
void
eventJoin
(
Event_Join
*
event
,
GameEventContext
*
context
);
void
eventJoin
(
const
Event_Join
&
event
,
int
eventPlayerId
,
const
GameEventContext
&
context
);
void
eventLeave
(
Event_Leave
*
event
,
GameEventContext
*
context
);
void
eventLeave
(
const
Event_Leave
&
event
,
int
eventPlayerId
,
const
GameEventContext
&
context
);
void
eventKicked
(
Event_Kicked
*
event
,
GameEventContext
*
context
);
void
eventKicked
(
const
Event_Kicked
&
event
,
int
eventPlayerId
,
const
GameEventContext
&
context
);
void
eventGameHostChanged
(
Event_GameHostChanged
*
event
,
GameEventContext
*
context
);
void
eventGameHostChanged
(
const
Event_GameHostChanged
&
event
,
int
eventPlayerId
,
const
GameEventContext
&
context
);
void
eventGameClosed
(
Event_GameClosed
*
event
,
GameEventContext
*
context
);
void
eventGameClosed
(
const
Event_GameClosed
&
event
,
int
eventPlayerId
,
const
GameEventContext
&
context
);
Player
*
setActivePlayer
(
int
id
);
Player
*
setActivePlayer
(
int
id
);
void
eventSetActivePlayer
(
Event_SetActivePlayer
*
event
,
GameEventContext
*
context
);
void
eventSetActivePlayer
(
const
Event_SetActivePlayer
&
event
,
int
eventPlayerId
,
const
GameEventContext
&
context
);
void
setActivePhase
(
int
phase
);
void
setActivePhase
(
int
phase
);
void
eventSetActivePhase
(
Event_SetActivePhase
*
event
,
GameEventContext
*
context
);
void
eventSetActivePhase
(
const
Event_SetActivePhase
&
event
,
int
eventPlayerId
,
const
GameEventContext
&
context
);
void
eventPing
(
Event_Ping
*
event
,
GameEventContext
*
context
);
void
eventPing
(
const
Event_Ping
&
event
,
int
eventPlayerId
,
const
GameEventContext
&
context
);
signals:
signals:
void
gameClosing
(
TabGame
*
tab
);
void
gameClosing
(
TabGame
*
tab
);
void
playerAdded
(
Player
*
player
);
void
playerAdded
(
Player
*
player
);
void
playerRemoved
(
Player
*
player
);
void
playerRemoved
(
Player
*
player
);
void
containerProcessingStarted
(
GameEventContext
*
context
);
void
containerProcessingStarted
(
const
GameEventContext
&
context
);
void
containerProcessingDone
();
void
containerProcessingDone
();
void
openMessageDialog
(
const
QString
&
userName
,
bool
focus
);
void
openMessageDialog
(
const
QString
&
userName
,
bool
focus
);
private
slots
:
private
slots
:
...
@@ -162,7 +163,7 @@ private slots:
...
@@ -162,7 +163,7 @@ private slots:
void
actNextPhase
();
void
actNextPhase
();
void
actNextTurn
();
void
actNextTurn
();
public:
public:
TabGame
(
TabSupervisor
*
_tabSupervisor
,
QList
<
AbstractClient
*>
&
_clients
,
int
_gameId
,
const
QString
&
_gameDescription
,
int
_hostId
,
int
_localPlayerId
,
bool
_spectator
,
bool
_spectatorsCanTalk
,
bool
_spectatorsSeeEverything
,
bool
_resuming
);
TabGame
(
TabSupervisor
*
_tabSupervisor
,
QList
<
AbstractClient
*>
&
_clients
,
const
Event_GameJoined
&
event
);
~
TabGame
();
~
TabGame
();
void
retranslateUi
();
void
retranslateUi
();
void
closeRequest
();
void
closeRequest
();
...
@@ -177,7 +178,7 @@ public:
...
@@ -177,7 +178,7 @@ public:
Player
*
getActiveLocalPlayer
()
const
;
Player
*
getActiveLocalPlayer
()
const
;
AbstractClient
*
getClientForPlayer
(
int
playerId
)
const
;
AbstractClient
*
getClientForPlayer
(
int
playerId
)
const
;
void
processGameEventContainer
(
GameEventContainer
*
cont
,
AbstractClient
*
client
);
void
processGameEventContainer
(
const
GameEventContainer
&
cont
,
AbstractClient
*
client
);
PendingCommand
*
prepareGameCommand
(
const
::
google
::
protobuf
::
Message
&
cmd
);
PendingCommand
*
prepareGameCommand
(
const
::
google
::
protobuf
::
Message
&
cmd
);
PendingCommand
*
prepareGameCommand
(
const
QList
<
const
::
google
::
protobuf
::
Message
*
>
&
cmdList
);
PendingCommand
*
prepareGameCommand
(
const
QList
<
const
::
google
::
protobuf
::
Message
*
>
&
cmdList
);
public
slots
:
public
slots
:
...
...
cockatrice/src/tab_message.cpp
View file @
d5c62896
...
@@ -5,11 +5,11 @@
...
@@ -5,11 +5,11 @@
#include
<QAction>
#include
<QAction>
#include
"tab_message.h"
#include
"tab_message.h"
#include
"abstractclient.h"
#include
"abstractclient.h"
#include
"protocol_items.h"
#include
"chatview.h"
#include
"chatview.h"
#include
"pending_command.h"
#include
"pending_command.h"
#include
"pb/session_commands.pb.h"
#include
"pb/session_commands.pb.h"
#include
"pb/event_user_message.pb.h"
TabMessage
::
TabMessage
(
TabSupervisor
*
_tabSupervisor
,
AbstractClient
*
_client
,
const
QString
&
_ownName
,
const
QString
&
_userName
)
TabMessage
::
TabMessage
(
TabSupervisor
*
_tabSupervisor
,
AbstractClient
*
_client
,
const
QString
&
_ownName
,
const
QString
&
_userName
)
:
Tab
(
_tabSupervisor
),
client
(
_client
),
userName
(
_userName
),
userOnline
(
true
)
:
Tab
(
_tabSupervisor
),
client
(
_client
),
userName
(
_userName
),
userOnline
(
true
)
...
@@ -60,15 +60,15 @@ void TabMessage::sendMessage()
...
@@ -60,15 +60,15 @@ void TabMessage::sendMessage()
cmd
.
set_message
(
sayEdit
->
text
().
toStdString
());
cmd
.
set_message
(
sayEdit
->
text
().
toStdString
());
PendingCommand
*
pend
=
client
->
prepareSessionCommand
(
cmd
);
PendingCommand
*
pend
=
client
->
prepareSessionCommand
(
cmd
);
connect
(
pend
,
SIGNAL
(
finished
(
Protocol
Response
*
)),
this
,
SLOT
(
messageSent
(
Protocol
Response
*
)));
connect
(
pend
,
SIGNAL
(
finished
(
const
Response
&
)),
this
,
SLOT
(
messageSent
(
const
Response
&
)));
client
->
sendCommand
(
pend
);
client
->
sendCommand
(
pend
);
sayEdit
->
clear
();
sayEdit
->
clear
();
}
}
void
TabMessage
::
messageSent
(
Protocol
Response
*
response
)
void
TabMessage
::
messageSent
(
const
Response
&
response
)
{
{
if
(
response
->
getR
esponse
C
ode
()
==
RespInIgnoreList
)
if
(
response
.
r
esponse
_c
ode
()
==
Response
::
RespInIgnoreList
)
chatView
->
appendMessage
(
QString
(),
tr
(
"This user is ignoring you."
));
chatView
->
appendMessage
(
QString
(),
tr
(
"This user is ignoring you."
));
}
}
...
@@ -77,9 +77,9 @@ void TabMessage::actLeave()
...
@@ -77,9 +77,9 @@ void TabMessage::actLeave()
deleteLater
();
deleteLater
();
}
}
void
TabMessage
::
processMessageEvent
(
Event_Message
*
event
)
void
TabMessage
::
process
User
MessageEvent
(
const
Event_
User
Message
&
event
)
{
{
chatView
->
appendMessage
(
event
->
getS
ender
N
ame
(),
event
->
getText
(
));
chatView
->
appendMessage
(
QString
::
fromStdString
(
event
.
s
ender
_n
ame
()
)
,
QString
::
fromStdString
(
event
.
message
()
));
emit
userEvent
();
emit
userEvent
();
}
}
...
...
Prev
1
2
3
Next
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment