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
80967b59
Commit
80967b59
authored
Mar 22, 2012
by
Max-Wilhelm Bruker
Browse files
fixed another faceDown bug
parent
af8e3574
Changes
2
Hide whitespace changes
Inline
Side-by-side
common/server_cardzone.cpp
View file @
80967b59
...
@@ -39,8 +39,6 @@ Server_CardZone::~Server_CardZone()
...
@@ -39,8 +39,6 @@ Server_CardZone::~Server_CardZone()
void
Server_CardZone
::
shuffle
()
void
Server_CardZone
::
shuffle
()
{
{
QMutexLocker
locker
(
&
player
->
getGame
()
->
gameMutex
);
QList
<
Server_Card
*>
temp
;
QList
<
Server_Card
*>
temp
;
for
(
int
i
=
cards
.
size
();
i
;
i
--
)
for
(
int
i
=
cards
.
size
();
i
;
i
--
)
temp
.
append
(
cards
.
takeAt
(
rng
->
getNumber
(
0
,
i
-
1
)));
temp
.
append
(
cards
.
takeAt
(
rng
->
getNumber
(
0
,
i
-
1
)));
...
@@ -49,8 +47,6 @@ void Server_CardZone::shuffle()
...
@@ -49,8 +47,6 @@ void Server_CardZone::shuffle()
int
Server_CardZone
::
removeCard
(
Server_Card
*
card
)
int
Server_CardZone
::
removeCard
(
Server_Card
*
card
)
{
{
QMutexLocker
locker
(
&
player
->
getGame
()
->
gameMutex
);
int
index
=
cards
.
indexOf
(
card
);
int
index
=
cards
.
indexOf
(
card
);
cards
.
removeAt
(
index
);
cards
.
removeAt
(
index
);
card
->
setZone
(
0
);
card
->
setZone
(
0
);
...
@@ -60,8 +56,6 @@ int Server_CardZone::removeCard(Server_Card *card)
...
@@ -60,8 +56,6 @@ int Server_CardZone::removeCard(Server_Card *card)
Server_Card
*
Server_CardZone
::
getCard
(
int
id
,
int
*
position
)
Server_Card
*
Server_CardZone
::
getCard
(
int
id
,
int
*
position
)
{
{
QMutexLocker
locker
(
&
player
->
getGame
()
->
gameMutex
);
if
(
type
!=
ServerInfo_Zone
::
HiddenZone
)
{
if
(
type
!=
ServerInfo_Zone
::
HiddenZone
)
{
QListIterator
<
Server_Card
*>
CardIterator
(
cards
);
QListIterator
<
Server_Card
*>
CardIterator
(
cards
);
int
i
=
0
;
int
i
=
0
;
...
@@ -87,8 +81,6 @@ Server_Card *Server_CardZone::getCard(int id, int *position)
...
@@ -87,8 +81,6 @@ Server_Card *Server_CardZone::getCard(int id, int *position)
int
Server_CardZone
::
getFreeGridColumn
(
int
x
,
int
y
,
const
QString
&
cardName
)
const
int
Server_CardZone
::
getFreeGridColumn
(
int
x
,
int
y
,
const
QString
&
cardName
)
const
{
{
QMutexLocker
locker
(
&
player
->
getGame
()
->
gameMutex
);
QMap
<
int
,
Server_Card
*>
coordMap
;
QMap
<
int
,
Server_Card
*>
coordMap
;
for
(
int
i
=
0
;
i
<
cards
.
size
();
++
i
)
for
(
int
i
=
0
;
i
<
cards
.
size
();
++
i
)
if
(
cards
[
i
]
->
getY
()
==
y
)
if
(
cards
[
i
]
->
getY
()
==
y
)
...
@@ -135,8 +127,6 @@ bool Server_CardZone::isColumnStacked(int x, int y) const
...
@@ -135,8 +127,6 @@ bool Server_CardZone::isColumnStacked(int x, int y) const
if
(
!
has_coords
)
if
(
!
has_coords
)
return
false
;
return
false
;
QMutexLocker
locker
(
&
player
->
getGame
()
->
gameMutex
);
QMap
<
int
,
Server_Card
*>
coordMap
;
QMap
<
int
,
Server_Card
*>
coordMap
;
for
(
int
i
=
0
;
i
<
cards
.
size
();
++
i
)
for
(
int
i
=
0
;
i
<
cards
.
size
();
++
i
)
if
(
cards
[
i
]
->
getY
()
==
y
)
if
(
cards
[
i
]
->
getY
()
==
y
)
...
@@ -150,8 +140,6 @@ bool Server_CardZone::isColumnEmpty(int x, int y) const
...
@@ -150,8 +140,6 @@ bool Server_CardZone::isColumnEmpty(int x, int y) const
if
(
!
has_coords
)
if
(
!
has_coords
)
return
true
;
return
true
;
QMutexLocker
locker
(
&
player
->
getGame
()
->
gameMutex
);
QMap
<
int
,
Server_Card
*>
coordMap
;
QMap
<
int
,
Server_Card
*>
coordMap
;
for
(
int
i
=
0
;
i
<
cards
.
size
();
++
i
)
for
(
int
i
=
0
;
i
<
cards
.
size
();
++
i
)
if
(
cards
[
i
]
->
getY
()
==
y
)
if
(
cards
[
i
]
->
getY
()
==
y
)
...
@@ -162,13 +150,11 @@ bool Server_CardZone::isColumnEmpty(int x, int y) const
...
@@ -162,13 +150,11 @@ bool Server_CardZone::isColumnEmpty(int x, int y) const
void
Server_CardZone
::
moveCard
(
GameEventStorage
&
ges
,
QMap
<
int
,
Server_Card
*>
&
coordMap
,
Server_Card
*
card
,
int
x
,
int
y
)
void
Server_CardZone
::
moveCard
(
GameEventStorage
&
ges
,
QMap
<
int
,
Server_Card
*>
&
coordMap
,
Server_Card
*
card
,
int
x
,
int
y
)
{
{
QMutexLocker
locker
(
&
player
->
getGame
()
->
gameMutex
);
coordMap
.
remove
(
card
->
getY
()
*
10000
+
card
->
getX
());
coordMap
.
remove
(
card
->
getY
()
*
10000
+
card
->
getX
());
CardToMove
*
cardToMove
=
new
CardToMove
;
CardToMove
*
cardToMove
=
new
CardToMove
;
cardToMove
->
set_card_id
(
card
->
getId
());
cardToMove
->
set_card_id
(
card
->
getId
());
player
->
moveCard
(
ges
,
this
,
QList
<
const
CardToMove
*>
()
<<
cardToMove
,
this
,
x
,
y
,
card
->
getFaceDown
()
,
false
);
player
->
moveCard
(
ges
,
this
,
QList
<
const
CardToMove
*>
()
<<
cardToMove
,
this
,
x
,
y
,
false
,
false
);
delete
cardToMove
;
delete
cardToMove
;
coordMap
.
insert
(
y
*
10000
+
x
,
card
);
coordMap
.
insert
(
y
*
10000
+
x
,
card
);
...
@@ -176,8 +162,6 @@ void Server_CardZone::moveCard(GameEventStorage &ges, QMap<int, Server_Card *> &
...
@@ -176,8 +162,6 @@ void Server_CardZone::moveCard(GameEventStorage &ges, QMap<int, Server_Card *> &
void
Server_CardZone
::
fixFreeSpaces
(
GameEventStorage
&
ges
)
void
Server_CardZone
::
fixFreeSpaces
(
GameEventStorage
&
ges
)
{
{
QMutexLocker
locker
(
&
player
->
getGame
()
->
gameMutex
);
QMap
<
int
,
Server_Card
*>
coordMap
;
QMap
<
int
,
Server_Card
*>
coordMap
;
QSet
<
int
>
placesToLook
;
QSet
<
int
>
placesToLook
;
for
(
int
i
=
0
;
i
<
cards
.
size
();
++
i
)
{
for
(
int
i
=
0
;
i
<
cards
.
size
();
++
i
)
{
...
@@ -207,8 +191,6 @@ void Server_CardZone::fixFreeSpaces(GameEventStorage &ges)
...
@@ -207,8 +191,6 @@ void Server_CardZone::fixFreeSpaces(GameEventStorage &ges)
void
Server_CardZone
::
insertCard
(
Server_Card
*
card
,
int
x
,
int
y
)
void
Server_CardZone
::
insertCard
(
Server_Card
*
card
,
int
x
,
int
y
)
{
{
QMutexLocker
locker
(
&
player
->
getGame
()
->
gameMutex
);
if
(
hasCoords
())
{
if
(
hasCoords
())
{
card
->
setCoords
(
x
,
y
);
card
->
setCoords
(
x
,
y
);
cards
.
append
(
card
);
cards
.
append
(
card
);
...
@@ -221,8 +203,6 @@ void Server_CardZone::insertCard(Server_Card *card, int x, int y)
...
@@ -221,8 +203,6 @@ void Server_CardZone::insertCard(Server_Card *card, int x, int y)
void
Server_CardZone
::
clear
()
void
Server_CardZone
::
clear
()
{
{
QMutexLocker
locker
(
&
player
->
getGame
()
->
gameMutex
);
for
(
int
i
=
0
;
i
<
cards
.
size
();
i
++
)
for
(
int
i
=
0
;
i
<
cards
.
size
();
i
++
)
delete
cards
.
at
(
i
);
delete
cards
.
at
(
i
);
cards
.
clear
();
cards
.
clear
();
...
...
common/server_player.cpp
View file @
80967b59
...
@@ -410,6 +410,8 @@ Response::ResponseCode Server_Player::moveCard(GameEventStorage &ges, Server_Car
...
@@ -410,6 +410,8 @@ Response::ResponseCode Server_Player::moveCard(GameEventStorage &ges, Server_Car
for
(
int
cardIndex
=
0
;
cardIndex
<
cardsToMove
.
size
();
++
cardIndex
)
{
for
(
int
cardIndex
=
0
;
cardIndex
<
cardsToMove
.
size
();
++
cardIndex
)
{
Server_Card
*
card
=
cardsToMove
[
cardIndex
].
first
;
Server_Card
*
card
=
cardsToMove
[
cardIndex
].
first
;
const
CardToMove
*
thisCardProperties
=
cardProperties
.
value
(
card
);
const
CardToMove
*
thisCardProperties
=
cardProperties
.
value
(
card
);
bool
faceDown
=
thisCardProperties
->
has_face_down
()
?
thisCardProperties
->
face_down
()
:
card
->
getFaceDown
();
int
originalPosition
=
cardsToMove
[
cardIndex
].
second
;
int
originalPosition
=
cardsToMove
[
cardIndex
].
second
;
int
position
=
startzone
->
removeCard
(
card
);
int
position
=
startzone
->
removeCard
(
card
);
if
(
startzone
->
getName
()
==
"hand"
)
{
if
(
startzone
->
getName
()
==
"hand"
)
{
...
@@ -478,8 +480,8 @@ Response::ResponseCode Server_Player::moveCard(GameEventStorage &ges, Server_Car
...
@@ -478,8 +480,8 @@ Response::ResponseCode Server_Player::moveCard(GameEventStorage &ges, Server_Car
bool
targetBeingLookedAt
=
(
targetzone
->
getType
()
!=
ServerInfo_Zone
::
HiddenZone
)
||
(
targetzone
->
getCardsBeingLookedAt
()
>
newX
)
||
(
targetzone
->
getCardsBeingLookedAt
()
==
-
1
);
bool
targetBeingLookedAt
=
(
targetzone
->
getType
()
!=
ServerInfo_Zone
::
HiddenZone
)
||
(
targetzone
->
getCardsBeingLookedAt
()
>
newX
)
||
(
targetzone
->
getCardsBeingLookedAt
()
==
-
1
);
bool
sourceBeingLookedAt
=
(
startzone
->
getType
()
!=
ServerInfo_Zone
::
HiddenZone
)
||
(
startzone
->
getCardsBeingLookedAt
()
>
position
)
||
(
startzone
->
getCardsBeingLookedAt
()
==
-
1
);
bool
sourceBeingLookedAt
=
(
startzone
->
getType
()
!=
ServerInfo_Zone
::
HiddenZone
)
||
(
startzone
->
getCardsBeingLookedAt
()
>
position
)
||
(
startzone
->
getCardsBeingLookedAt
()
==
-
1
);
bool
targetHiddenToPlayer
=
thisCardProperties
->
face
_d
own
()
||
!
targetBeingLookedAt
;
bool
targetHiddenToPlayer
=
face
D
own
||
!
targetBeingLookedAt
;
bool
targetHiddenToOthers
=
thisCardProperties
->
face
_d
own
()
||
(
targetzone
->
getType
()
!=
ServerInfo_Zone
::
PublicZone
);
bool
targetHiddenToOthers
=
face
D
own
||
(
targetzone
->
getType
()
!=
ServerInfo_Zone
::
PublicZone
);
bool
sourceHiddenToPlayer
=
card
->
getFaceDown
()
||
!
sourceBeingLookedAt
;
bool
sourceHiddenToPlayer
=
card
->
getFaceDown
()
||
!
sourceBeingLookedAt
;
bool
sourceHiddenToOthers
=
card
->
getFaceDown
()
||
(
startzone
->
getType
()
!=
ServerInfo_Zone
::
PublicZone
);
bool
sourceHiddenToOthers
=
card
->
getFaceDown
()
||
(
startzone
->
getType
()
!=
ServerInfo_Zone
::
PublicZone
);
...
@@ -490,9 +492,9 @@ Response::ResponseCode Server_Player::moveCard(GameEventStorage &ges, Server_Car
...
@@ -490,9 +492,9 @@ Response::ResponseCode Server_Player::moveCard(GameEventStorage &ges, Server_Car
publicCardName
=
card
->
getName
();
publicCardName
=
card
->
getName
();
int
oldCardId
=
card
->
getId
();
int
oldCardId
=
card
->
getId
();
if
(
thisCardProperties
->
face
_d
own
()
||
(
targetzone
->
getPlayer
()
!=
startzone
->
getPlayer
()))
if
(
face
D
own
||
(
targetzone
->
getPlayer
()
!=
startzone
->
getPlayer
()))
card
->
setId
(
targetzone
->
getPlayer
()
->
newCardId
());
card
->
setId
(
targetzone
->
getPlayer
()
->
newCardId
());
card
->
setFaceDown
(
thisCardProperties
->
face
_d
own
()
);
card
->
setFaceDown
(
face
D
own
);
// The player does not get to see which card he moved if it moves between two parts of hidden zones which
// The player does not get to see which card he moved if it moves between two parts of hidden zones which
// are not being looked at.
// are not being looked at.
...
@@ -514,7 +516,7 @@ Response::ResponseCode Server_Player::moveCard(GameEventStorage &ges, Server_Car
...
@@ -514,7 +516,7 @@ Response::ResponseCode Server_Player::moveCard(GameEventStorage &ges, Server_Car
eventOthers
.
set_target_zone
(
targetzone
->
getName
().
toStdString
());
eventOthers
.
set_target_zone
(
targetzone
->
getName
().
toStdString
());
eventOthers
.
set_x
(
newX
);
eventOthers
.
set_x
(
newX
);
eventOthers
.
set_y
(
y
);
eventOthers
.
set_y
(
y
);
eventOthers
.
set_face_down
(
thisCardProperties
->
face
_d
own
()
);
eventOthers
.
set_face_down
(
face
D
own
);
Event_MoveCard
eventPrivate
(
eventOthers
);
Event_MoveCard
eventPrivate
(
eventOthers
);
eventPrivate
.
set_card_id
(
privateOldCardId
);
eventPrivate
.
set_card_id
(
privateOldCardId
);
...
@@ -546,7 +548,7 @@ Response::ResponseCode Server_Player::moveCard(GameEventStorage &ges, Server_Car
...
@@ -546,7 +548,7 @@ Response::ResponseCode Server_Player::moveCard(GameEventStorage &ges, Server_Car
if
(
thisCardProperties
->
tapped
())
if
(
thisCardProperties
->
tapped
())
setCardAttrHelper
(
ges
,
targetzone
->
getName
(),
card
->
getId
(),
AttrTapped
,
"1"
);
setCardAttrHelper
(
ges
,
targetzone
->
getName
(),
card
->
getId
(),
AttrTapped
,
"1"
);
QString
ptString
=
QString
::
fromStdString
(
thisCardProperties
->
pt
());
QString
ptString
=
QString
::
fromStdString
(
thisCardProperties
->
pt
());
if
(
!
ptString
.
isEmpty
()
&&
!
thisCardProperties
->
face
_d
own
()
)
if
(
!
ptString
.
isEmpty
()
&&
!
face
D
own
)
setCardAttrHelper
(
ges
,
targetzone
->
getName
(),
card
->
getId
(),
AttrPT
,
ptString
);
setCardAttrHelper
(
ges
,
targetzone
->
getName
(),
card
->
getId
(),
AttrPT
,
ptString
);
}
}
}
}
...
...
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