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
840b577f
Commit
840b577f
authored
Mar 31, 2012
by
Max-Wilhelm Bruker
Browse files
complete server-side AlwaysRevealTopCard support, related to issue #31
parent
005a4363
Changes
2
Hide whitespace changes
Inline
Side-by-side
cockatrice/src/zoneviewzone.cpp
View file @
840b577f
...
...
@@ -13,7 +13,6 @@
ZoneViewZone
::
ZoneViewZone
(
Player
*
_p
,
CardZone
*
_origZone
,
int
_numberCards
,
bool
_revealZone
,
bool
_writeableRevealZone
,
QGraphicsItem
*
parent
)
:
SelectZone
(
_p
,
_origZone
->
getName
(),
false
,
false
,
true
,
parent
,
true
),
bRect
(
QRectF
()),
minRows
(
0
),
numberCards
(
_numberCards
),
origZone
(
_origZone
),
revealZone
(
_revealZone
),
writeableRevealZone
(
_writeableRevealZone
),
sortByName
(
false
),
sortByType
(
false
)
{
qDebug
()
<<
"revealZone="
<<
revealZone
<<
"writeable="
<<
writeableRevealZone
;
if
(
!
(
revealZone
&&
!
writeableRevealZone
))
origZone
->
setView
(
this
);
}
...
...
common/server_player.cpp
View file @
840b577f
...
...
@@ -306,6 +306,15 @@ Response::ResponseCode Server_Player::drawCards(GameEventStorage &ges, int numbe
ges
.
enqueueGameEvent
(
eventPrivate
,
playerId
,
GameEventStorageItem
::
SendToPrivate
,
playerId
);
ges
.
enqueueGameEvent
(
eventOthers
,
playerId
,
GameEventStorageItem
::
SendToOthers
);
if
(
deckZone
->
getAlwaysRevealTopCard
()
&&
!
deckZone
->
cards
.
isEmpty
())
{
Event_RevealCards
revealEvent
;
revealEvent
.
set_zone_name
(
deckZone
->
getName
().
toStdString
());
revealEvent
.
set_card_id
(
0
);
deckZone
->
cards
.
first
()
->
getInfo
(
revealEvent
.
add_cards
());
ges
.
enqueueGameEvent
(
revealEvent
,
playerId
);
}
return
Response
::
RespOk
;
}
...
...
@@ -411,6 +420,7 @@ Response::ResponseCode Server_Player::moveCard(GameEventStorage &ges, Server_Car
}
}
int
publicNewX
;
if
(
card
->
getDestroyOnZoneChange
()
&&
(
startzone
->
getName
()
!=
targetzone
->
getName
()))
{
Event_DestroyCard
event
;
event
.
set_zone_name
(
startzone
->
getName
().
toStdString
());
...
...
@@ -459,13 +469,14 @@ Response::ResponseCode Server_Player::moveCard(GameEventStorage &ges, Server_Car
if
(
startzone
->
getType
()
==
ServerInfo_Zone
::
HiddenZone
)
privatePosition
=
position
;
publicNewX
=
newX
;
Event_MoveCard
eventOthers
;
eventOthers
.
set_start_player_id
(
startzone
->
getPlayer
()
->
getPlayerId
());
eventOthers
.
set_start_zone
(
startzone
->
getName
().
toStdString
());
eventOthers
.
set_target_player_id
(
targetzone
->
getPlayer
()
->
getPlayerId
());
if
(
startzone
!=
targetzone
)
eventOthers
.
set_target_zone
(
targetzone
->
getName
().
toStdString
());
eventOthers
.
set_x
(
newX
);
eventOthers
.
set_y
(
y
);
eventOthers
.
set_face_down
(
faceDown
);
...
...
@@ -475,6 +486,7 @@ Response::ResponseCode Server_Player::moveCard(GameEventStorage &ges, Server_Car
eventPrivate
.
set_card_name
(
privateCardName
.
toStdString
());
eventPrivate
.
set_position
(
privatePosition
);
eventPrivate
.
set_new_card_id
(
privateNewCardId
);
eventPrivate
.
set_x
(
newX
);
// Other players do not get to see the start and/or target position of the card if the respective
// part of the zone is being looked at. The information is not needed anyway because in hidden zones,
...
...
@@ -485,8 +497,9 @@ Response::ResponseCode Server_Player::moveCard(GameEventStorage &ges, Server_Car
)
position
=
-
1
;
if
((
targetzone
->
getType
()
==
ServerInfo_Zone
::
HiddenZone
)
&&
((
targetzone
->
getCardsBeingLookedAt
()
>
newX
)
||
(
targetzone
->
getCardsBeingLookedAt
()
==
-
1
)))
n
ewX
=
-
1
;
publicN
ewX
=
-
1
;
eventOthers
.
set_x
(
publicNewX
);
eventOthers
.
set_position
(
position
);
if
((
startzone
->
getType
()
==
ServerInfo_Zone
::
PublicZone
)
||
(
targetzone
->
getType
()
==
ServerInfo_Zone
::
PublicZone
))
{
eventOthers
.
set_card_id
(
oldCardId
);
...
...
@@ -504,6 +517,22 @@ Response::ResponseCode Server_Player::moveCard(GameEventStorage &ges, Server_Car
if
(
!
ptString
.
isEmpty
()
&&
!
faceDown
)
setCardAttrHelper
(
ges
,
targetzone
->
getName
(),
card
->
getId
(),
AttrPT
,
ptString
);
}
if
(
startzone
->
getAlwaysRevealTopCard
()
&&
!
startzone
->
cards
.
isEmpty
()
&&
(
originalPosition
==
0
))
{
Event_RevealCards
revealEvent
;
revealEvent
.
set_zone_name
(
startzone
->
getName
().
toStdString
());
revealEvent
.
set_card_id
(
0
);
startzone
->
cards
.
first
()
->
getInfo
(
revealEvent
.
add_cards
());
ges
.
enqueueGameEvent
(
revealEvent
,
playerId
);
}
if
(
targetzone
->
getAlwaysRevealTopCard
()
&&
!
targetzone
->
cards
.
isEmpty
()
&&
(
newX
==
0
))
{
Event_RevealCards
revealEvent
;
revealEvent
.
set_zone_name
(
targetzone
->
getName
().
toStdString
());
revealEvent
.
set_card_id
(
0
);
targetzone
->
cards
.
first
()
->
getInfo
(
revealEvent
.
add_cards
());
ges
.
enqueueGameEvent
(
revealEvent
,
playerId
);
}
}
if
(
undoingDraw
)
ges
.
setGameEventContext
(
Context_UndoDraw
());
...
...
@@ -1552,6 +1581,15 @@ Response::ResponseCode Server_Player::cmdChangeZoneProperties(const Command_Chan
event
.
set_always_reveal_top_card
(
cmd
.
always_reveal_top_card
());
ges
.
enqueueGameEvent
(
event
,
playerId
);
if
(
!
zone
->
cards
.
isEmpty
())
{
Event_RevealCards
revealEvent
;
revealEvent
.
set_zone_name
(
zone
->
getName
().
toStdString
());
revealEvent
.
set_card_id
(
0
);
zone
->
cards
.
first
()
->
getInfo
(
revealEvent
.
add_cards
());
ges
.
enqueueGameEvent
(
revealEvent
,
playerId
);
}
}
else
return
Response
::
RespContextError
;
}
...
...
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