Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Y
ygopro-2pick
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Locked Files
Issues
0
Issues
0
List
Boards
Labels
Service Desk
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Security & Compliance
Security & Compliance
Dependency List
License Compliance
Packages
Packages
Container Registry
Analytics
Analytics
CI / CD
Code Review
Insights
Issues
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
MyCard
ygopro-2pick
Commits
444502bc
Commit
444502bc
authored
Mar 31, 2018
by
mercury233
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'Select_Unselect' into test
parents
398db120
10953b43
Changes
7
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
237 additions
and
43 deletions
+237
-43
gframe/client_field.cpp
gframe/client_field.cpp
+23
-19
gframe/duelclient.cpp
gframe/duelclient.cpp
+80
-1
gframe/event_handler.cpp
gframe/event_handler.cpp
+49
-10
gframe/replay_mode.cpp
gframe/replay_mode.cpp
+9
-0
gframe/single_duel.cpp
gframe/single_duel.cpp
+32
-11
gframe/single_mode.cpp
gframe/single_mode.cpp
+13
-0
gframe/tag_duel.cpp
gframe/tag_duel.cpp
+31
-2
No files found.
gframe/client_field.cpp
View file @
444502bc
...
@@ -420,26 +420,30 @@ void ClientField::ShowSelectCard(bool buttonok, bool chain) {
...
@@ -420,26 +420,30 @@ void ClientField::ShowSelectCard(bool buttonok, bool chain) {
selectable_cards
[
i
]
->
sequence
+
1
);
selectable_cards
[
i
]
->
sequence
+
1
);
mainGame
->
stCardPos
[
i
]
->
setText
(
formatBuffer
);
mainGame
->
stCardPos
[
i
]
->
setText
(
formatBuffer
);
// color
// color
if
(
conti_selecting
)
if
(
selectable_cards
[
i
]
->
is_selected
)
mainGame
->
stCardPos
[
i
]
->
setBackgroundColor
(
0xffffffff
);
mainGame
->
stCardPos
[
i
]
->
setBackgroundColor
(
0xffffff00
);
else
if
(
selectable_cards
[
i
]
->
location
==
LOCATION_OVERLAY
)
{
else
{
if
(
selectable_cards
[
i
]
->
owner
!=
selectable_cards
[
i
]
->
overlayTarget
->
controler
)
if
(
conti_selecting
)
mainGame
->
stCardPos
[
i
]
->
setOverrideColor
(
0xff0000ff
);
if
(
selectable_cards
[
i
]
->
overlayTarget
->
controler
)
mainGame
->
stCardPos
[
i
]
->
setBackgroundColor
(
0xffd0d0d0
);
else
mainGame
->
stCardPos
[
i
]
->
setBackgroundColor
(
0xffffffff
);
}
else
if
(
selectable_cards
[
i
]
->
location
==
LOCATION_DECK
||
selectable_cards
[
i
]
->
location
==
LOCATION_EXTRA
||
selectable_cards
[
i
]
->
location
==
LOCATION_REMOVED
)
{
if
(
selectable_cards
[
i
]
->
position
&
POS_FACEDOWN
)
mainGame
->
stCardPos
[
i
]
->
setOverrideColor
(
0xff0000ff
);
if
(
selectable_cards
[
i
]
->
controler
)
mainGame
->
stCardPos
[
i
]
->
setBackgroundColor
(
0xffd0d0d0
);
else
mainGame
->
stCardPos
[
i
]
->
setBackgroundColor
(
0xffffffff
);
}
else
{
if
(
selectable_cards
[
i
]
->
controler
)
mainGame
->
stCardPos
[
i
]
->
setBackgroundColor
(
0xffd0d0d0
);
else
mainGame
->
stCardPos
[
i
]
->
setBackgroundColor
(
0xffffffff
);
mainGame
->
stCardPos
[
i
]
->
setBackgroundColor
(
0xffffffff
);
else
if
(
selectable_cards
[
i
]
->
location
==
LOCATION_OVERLAY
)
{
if
(
selectable_cards
[
i
]
->
owner
!=
selectable_cards
[
i
]
->
overlayTarget
->
controler
)
mainGame
->
stCardPos
[
i
]
->
setOverrideColor
(
0xff0000ff
);
if
(
selectable_cards
[
i
]
->
overlayTarget
->
controler
)
mainGame
->
stCardPos
[
i
]
->
setBackgroundColor
(
0xffd0d0d0
);
else
mainGame
->
stCardPos
[
i
]
->
setBackgroundColor
(
0xffffffff
);
}
else
if
(
selectable_cards
[
i
]
->
location
==
LOCATION_DECK
||
selectable_cards
[
i
]
->
location
==
LOCATION_EXTRA
||
selectable_cards
[
i
]
->
location
==
LOCATION_REMOVED
)
{
if
(
selectable_cards
[
i
]
->
position
&
POS_FACEDOWN
)
mainGame
->
stCardPos
[
i
]
->
setOverrideColor
(
0xff0000ff
);
if
(
selectable_cards
[
i
]
->
controler
)
mainGame
->
stCardPos
[
i
]
->
setBackgroundColor
(
0xffd0d0d0
);
else
mainGame
->
stCardPos
[
i
]
->
setBackgroundColor
(
0xffffffff
);
}
else
{
if
(
selectable_cards
[
i
]
->
controler
)
mainGame
->
stCardPos
[
i
]
->
setBackgroundColor
(
0xffd0d0d0
);
else
mainGame
->
stCardPos
[
i
]
->
setBackgroundColor
(
0xffffffff
);
}
}
}
}
else
{
}
else
{
if
(
sort_list
[
i
])
{
if
(
sort_list
[
i
])
{
...
...
gframe/duelclient.cpp
View file @
444502bc
...
@@ -1395,6 +1395,84 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) {
...
@@ -1395,6 +1395,84 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) {
}
}
return
false
;
return
false
;
}
}
case
MSG_SELECT_UNSELECT_CARD
:
{
/*int selecting_player = */
BufferIO
::
ReadInt8
(
pbuf
);
bool
buttonok
=
BufferIO
::
ReadInt8
(
pbuf
);
mainGame
->
dField
.
select_cancelable
=
BufferIO
::
ReadInt8
(
pbuf
);
mainGame
->
dField
.
select_min
=
BufferIO
::
ReadInt8
(
pbuf
);
mainGame
->
dField
.
select_max
=
BufferIO
::
ReadInt8
(
pbuf
);
int
count1
=
BufferIO
::
ReadInt8
(
pbuf
);
mainGame
->
dField
.
selectable_cards
.
clear
();
mainGame
->
dField
.
selected_cards
.
clear
();
int
c
,
l
,
s
,
ss
;
unsigned
int
code
;
bool
panelmode
=
false
;
mainGame
->
dField
.
select_ready
=
false
;
ClientCard
*
pcard
;
for
(
int
i
=
0
;
i
<
count1
;
++
i
)
{
code
=
(
unsigned
int
)
BufferIO
::
ReadInt32
(
pbuf
);
c
=
mainGame
->
LocalPlayer
(
BufferIO
::
ReadInt8
(
pbuf
));
l
=
BufferIO
::
ReadInt8
(
pbuf
);
s
=
BufferIO
::
ReadInt8
(
pbuf
);
ss
=
BufferIO
::
ReadInt8
(
pbuf
);
if
((
l
&
LOCATION_OVERLAY
)
>
0
)
pcard
=
mainGame
->
dField
.
GetCard
(
c
,
l
&
0x7f
,
s
)
->
overlayed
[
ss
];
else
pcard
=
mainGame
->
dField
.
GetCard
(
c
,
l
,
s
);
if
(
code
!=
0
&&
pcard
->
code
!=
code
)
pcard
->
SetCode
(
code
);
pcard
->
select_seq
=
i
;
mainGame
->
dField
.
selectable_cards
.
push_back
(
pcard
);
pcard
->
is_selectable
=
true
;
pcard
->
is_selected
=
false
;
if
(
l
&
0xf1
)
panelmode
=
true
;
}
int
count2
=
BufferIO
::
ReadInt8
(
pbuf
);
for
(
int
i
=
count1
;
i
<
count1
+
count2
;
++
i
)
{
code
=
(
unsigned
int
)
BufferIO
::
ReadInt32
(
pbuf
);
c
=
mainGame
->
LocalPlayer
(
BufferIO
::
ReadInt8
(
pbuf
));
l
=
BufferIO
::
ReadInt8
(
pbuf
);
s
=
BufferIO
::
ReadInt8
(
pbuf
);
ss
=
BufferIO
::
ReadInt8
(
pbuf
);
if
((
l
&
LOCATION_OVERLAY
)
>
0
)
pcard
=
mainGame
->
dField
.
GetCard
(
c
,
l
&
0x7f
,
s
)
->
overlayed
[
ss
];
else
pcard
=
mainGame
->
dField
.
GetCard
(
c
,
l
,
s
);
if
(
code
!=
0
&&
pcard
->
code
!=
code
)
pcard
->
SetCode
(
code
);
pcard
->
select_seq
=
i
;
mainGame
->
dField
.
selectable_cards
.
push_back
(
pcard
);
pcard
->
is_selectable
=
true
;
pcard
->
is_selected
=
true
;
if
(
l
&
0xf1
)
panelmode
=
true
;
}
std
::
sort
(
mainGame
->
dField
.
selectable_cards
.
begin
(),
mainGame
->
dField
.
selectable_cards
.
end
(),
ClientCard
::
client_card_sort
);
if
(
select_hint
)
myswprintf
(
textBuffer
,
L"%ls(%d-%d)"
,
dataManager
.
GetDesc
(
select_hint
),
mainGame
->
dField
.
select_min
,
mainGame
->
dField
.
select_max
);
else
myswprintf
(
textBuffer
,
L"%ls(%d-%d)"
,
dataManager
.
GetSysString
(
560
),
mainGame
->
dField
.
select_min
,
mainGame
->
dField
.
select_max
);
select_hint
=
0
;
if
(
panelmode
)
{
mainGame
->
gMutex
.
Lock
();
mainGame
->
wCardSelect
->
setText
(
textBuffer
);
mainGame
->
dField
.
ShowSelectCard
(
buttonok
);
mainGame
->
gMutex
.
Unlock
();
}
else
{
mainGame
->
stHintMsg
->
setText
(
textBuffer
);
mainGame
->
stHintMsg
->
setVisible
(
true
);
}
if
(
mainGame
->
dField
.
select_cancelable
)
{
if
(
count2
==
0
)
mainGame
->
dField
.
ShowCancelOrFinishButton
(
1
);
else
mainGame
->
dField
.
ShowCancelOrFinishButton
(
2
);
}
else
mainGame
->
dField
.
ShowCancelOrFinishButton
(
0
);
return
false
;
}
case
MSG_SELECT_CHAIN
:
{
case
MSG_SELECT_CHAIN
:
{
/*int selecting_player = */
BufferIO
::
ReadInt8
(
pbuf
);
/*int selecting_player = */
BufferIO
::
ReadInt8
(
pbuf
);
int
count
=
BufferIO
::
ReadInt8
(
pbuf
);
int
count
=
BufferIO
::
ReadInt8
(
pbuf
);
...
@@ -3662,7 +3740,8 @@ void DuelClient::SendResponse() {
...
@@ -3662,7 +3740,8 @@ void DuelClient::SendResponse() {
mainGame
->
btnShuffle
->
setVisible
(
false
);
mainGame
->
btnShuffle
->
setVisible
(
false
);
break
;
break
;
}
}
case
MSG_SELECT_CARD
:
{
case
MSG_SELECT_CARD
:
case
MSG_SELECT_UNSELECT_CARD
:
{
mainGame
->
dField
.
ClearSelect
();
mainGame
->
dField
.
ClearSelect
();
break
;
break
;
}
}
...
...
gframe/event_handler.cpp
View file @
444502bc
...
@@ -686,6 +686,24 @@ bool ClientField::OnEvent(const irr::SEvent& event) {
...
@@ -686,6 +686,24 @@ bool ClientField::OnEvent(const irr::SEvent& event) {
}
}
break
;
break
;
}
}
case
MSG_SELECT_UNSELECT_CARD
:
{
command_card
=
selectable_cards
[
id
-
BUTTON_CARD_0
+
mainGame
->
scrCardList
->
getPos
()
/
10
];
if
(
command_card
->
is_selected
)
{
command_card
->
is_selected
=
false
;
if
(
command_card
->
controler
)
mainGame
->
stCardPos
[
id
-
BUTTON_CARD_0
]
->
setBackgroundColor
(
0xffd0d0d0
);
else
mainGame
->
stCardPos
[
id
-
BUTTON_CARD_0
]
->
setBackgroundColor
(
0xffffffff
);
}
else
{
command_card
->
is_selected
=
true
;
mainGame
->
stCardPos
[
id
-
BUTTON_CARD_0
]
->
setBackgroundColor
(
0xffffff00
);
}
selected_cards
.
push_back
(
command_card
);
if
(
selected_cards
.
size
()
>
0
)
{
SetResponseSelectedCards
();
ShowCancelOrFinishButton
(
0
);
mainGame
->
HideElement
(
mainGame
->
wCardSelect
,
true
);}
break
;
}
case
MSG_SELECT_SUM
:
{
case
MSG_SELECT_SUM
:
{
command_card
=
selectable_cards
[
id
-
BUTTON_CARD_0
+
mainGame
->
scrCardList
->
getPos
()
/
10
];
command_card
=
selectable_cards
[
id
-
BUTTON_CARD_0
+
mainGame
->
scrCardList
->
getPos
()
/
10
];
selected_cards
.
push_back
(
command_card
);
selected_cards
.
push_back
(
command_card
);
...
@@ -747,6 +765,10 @@ bool ClientField::OnEvent(const irr::SEvent& event) {
...
@@ -747,6 +765,10 @@ bool ClientField::OnEvent(const irr::SEvent& event) {
mainGame
->
HideElement
(
mainGame
->
wCardSelect
);
mainGame
->
HideElement
(
mainGame
->
wCardSelect
);
mainGame
->
actionSignal
.
Set
();
mainGame
->
actionSignal
.
Set
();
break
;
break
;
}
else
if
(
mainGame
->
dInfo
.
curMsg
==
MSG_SELECT_UNSELECT_CARD
){
DuelClient
::
SetResponseI
(
-
1
);
ShowCancelOrFinishButton
(
0
);
mainGame
->
HideElement
(
mainGame
->
wCardSelect
,
true
);
}
else
{
}
else
{
mainGame
->
HideElement
(
mainGame
->
wCardSelect
);
mainGame
->
HideElement
(
mainGame
->
wCardSelect
);
if
(
mainGame
->
dInfo
.
curMsg
==
MSG_SELECT_CHAIN
&&
!
chain_forced
)
if
(
mainGame
->
dInfo
.
curMsg
==
MSG_SELECT_CHAIN
&&
!
chain_forced
)
...
@@ -940,16 +962,6 @@ bool ClientField::OnEvent(const irr::SEvent& event) {
...
@@ -940,16 +962,6 @@ bool ClientField::OnEvent(const irr::SEvent& event) {
const
wchar_t
*
input
=
mainGame
->
ebChatInput
->
getText
();
const
wchar_t
*
input
=
mainGame
->
ebChatInput
->
getText
();
if
(
input
[
0
])
{
if
(
input
[
0
])
{
unsigned
short
msgbuf
[
256
];
unsigned
short
msgbuf
[
256
];
if
(
mainGame
->
dInfo
.
isStarted
)
{
if
(
mainGame
->
dInfo
.
player_type
<
7
)
{
if
(
mainGame
->
dInfo
.
isTag
&&
(
mainGame
->
dInfo
.
player_type
%
2
))
mainGame
->
AddChatMsg
((
wchar_t
*
)
input
,
2
);
else
mainGame
->
AddChatMsg
((
wchar_t
*
)
input
,
0
);
}
else
mainGame
->
AddChatMsg
((
wchar_t
*
)
input
,
10
);
}
else
mainGame
->
AddChatMsg
((
wchar_t
*
)
input
,
7
);
int
len
=
BufferIO
::
CopyWStr
(
input
,
msgbuf
,
256
);
int
len
=
BufferIO
::
CopyWStr
(
input
,
msgbuf
,
256
);
DuelClient
::
SendBufferToServer
(
CTOS_CHAT
,
msgbuf
,
(
len
+
1
)
*
sizeof
(
short
));
DuelClient
::
SendBufferToServer
(
CTOS_CHAT
,
msgbuf
,
(
len
+
1
)
*
sizeof
(
short
));
mainGame
->
ebChatInput
->
setText
(
L""
);
mainGame
->
ebChatInput
->
setText
(
L""
);
...
@@ -1344,6 +1356,22 @@ bool ClientField::OnEvent(const irr::SEvent& event) {
...
@@ -1344,6 +1356,22 @@ bool ClientField::OnEvent(const irr::SEvent& event) {
}
}
break
;
break
;
}
}
case
MSG_SELECT_UNSELECT_CARD
:
{
if
(
!
(
hovered_location
&
0xe
)
||
!
clicked_card
||
!
clicked_card
->
is_selectable
)
break
;
if
(
clicked_card
->
is_selected
)
{
clicked_card
->
is_selected
=
false
;
}
else
{
clicked_card
->
is_selected
=
true
;
}
selected_cards
.
push_back
(
clicked_card
);
if
(
selected_cards
.
size
()
>
0
)
{
ShowCancelOrFinishButton
(
0
);
SetResponseSelectedCards
();
DuelClient
::
SendResponse
();
}
break
;
}
case
MSG_SELECT_COUNTER
:
{
case
MSG_SELECT_COUNTER
:
{
if
(
!
clicked_card
||
!
clicked_card
->
is_selectable
)
if
(
!
clicked_card
||
!
clicked_card
->
is_selectable
)
break
;
break
;
...
@@ -2239,6 +2267,17 @@ void ClientField::CancelOrFinish() {
...
@@ -2239,6 +2267,17 @@ void ClientField::CancelOrFinish() {
}
}
break
;
break
;
}
}
case
MSG_SELECT_UNSELECT_CARD
:
{
if
(
select_cancelable
)
{
DuelClient
::
SetResponseI
(
-
1
);
ShowCancelOrFinishButton
(
0
);
if
(
mainGame
->
wCardSelect
->
isVisible
())
mainGame
->
HideElement
(
mainGame
->
wCardSelect
,
true
);
else
DuelClient
::
SendResponse
();
}
break
;
}
case
MSG_SELECT_TRIBUTE
:
{
case
MSG_SELECT_TRIBUTE
:
{
if
(
selected_cards
.
size
()
==
0
)
{
if
(
selected_cards
.
size
()
==
0
)
{
if
(
select_cancelable
)
{
if
(
select_cancelable
)
{
...
...
gframe/replay_mode.cpp
View file @
444502bc
...
@@ -383,6 +383,15 @@ bool ReplayMode::ReplayAnalyze(char* msg, unsigned int len) {
...
@@ -383,6 +383,15 @@ bool ReplayMode::ReplayAnalyze(char* msg, unsigned int len) {
pbuf
+=
count
*
8
;
pbuf
+=
count
*
8
;
return
ReadReplayResponse
();
return
ReadReplayResponse
();
}
}
case
MSG_SELECT_UNSELECT_CARD
:
{
player
=
BufferIO
::
ReadInt8
(
pbuf
);
pbuf
+=
4
;
count
=
BufferIO
::
ReadInt8
(
pbuf
);
pbuf
+=
count
*
8
;
count
=
BufferIO
::
ReadInt8
(
pbuf
);
pbuf
+=
count
*
8
;
return
ReadReplayResponse
();
}
case
MSG_SELECT_CHAIN
:
{
case
MSG_SELECT_CHAIN
:
{
player
=
BufferIO
::
ReadInt8
(
pbuf
);
player
=
BufferIO
::
ReadInt8
(
pbuf
);
count
=
BufferIO
::
ReadInt8
(
pbuf
);
count
=
BufferIO
::
ReadInt8
(
pbuf
);
...
...
gframe/single_duel.cpp
View file @
444502bc
...
@@ -27,17 +27,10 @@ void SingleDuel::Chat(DuelPlayer* dp, void* pdata, int len) {
...
@@ -27,17 +27,10 @@ void SingleDuel::Chat(DuelPlayer* dp, void* pdata, int len) {
scc
.
player
=
dp
->
type
;
scc
.
player
=
dp
->
type
;
unsigned
short
*
msg
=
(
unsigned
short
*
)
pdata
;
unsigned
short
*
msg
=
(
unsigned
short
*
)
pdata
;
int
msglen
=
BufferIO
::
CopyWStr
(
msg
,
scc
.
msg
,
256
);
int
msglen
=
BufferIO
::
CopyWStr
(
msg
,
scc
.
msg
,
256
);
if
(
dp
->
type
>
1
)
{
NetServer
::
SendBufferToPlayer
(
players
[
0
],
STOC_CHAT
,
&
scc
,
4
+
msglen
*
2
);
NetServer
::
SendBufferToPlayer
(
players
[
0
],
STOC_CHAT
,
&
scc
,
4
+
msglen
*
2
);
NetServer
::
ReSendToPlayer
(
players
[
1
]);
NetServer
::
ReSendToPlayer
(
players
[
1
]);
for
(
auto
pit
=
observers
.
begin
();
pit
!=
observers
.
end
();
++
pit
)
for
(
auto
pit
=
observers
.
begin
();
pit
!=
observers
.
end
();
++
pit
)
NetServer
::
ReSendToPlayer
(
*
pit
);
if
((
*
pit
)
!=
dp
)
NetServer
::
ReSendToPlayer
(
*
pit
);
}
else
{
NetServer
::
SendBufferToPlayer
(
players
[
1
-
dp
->
type
],
STOC_CHAT
,
&
scc
,
4
+
msglen
*
2
);
for
(
auto
pit
=
observers
.
begin
();
pit
!=
observers
.
end
();
++
pit
)
NetServer
::
ReSendToPlayer
(
*
pit
);
}
}
}
void
SingleDuel
::
JoinGame
(
DuelPlayer
*
dp
,
void
*
pdata
,
bool
is_creater
)
{
void
SingleDuel
::
JoinGame
(
DuelPlayer
*
dp
,
void
*
pdata
,
bool
is_creater
)
{
if
(
!
is_creater
)
{
if
(
!
is_creater
)
{
...
@@ -700,6 +693,34 @@ int SingleDuel::Analyze(char* msgbuffer, unsigned int len) {
...
@@ -700,6 +693,34 @@ int SingleDuel::Analyze(char* msgbuffer, unsigned int len) {
NetServer
::
SendBufferToPlayer
(
players
[
player
],
STOC_GAME_MSG
,
offset
,
pbuf
-
offset
);
NetServer
::
SendBufferToPlayer
(
players
[
player
],
STOC_GAME_MSG
,
offset
,
pbuf
-
offset
);
return
1
;
return
1
;
}
}
case
MSG_SELECT_UNSELECT_CARD
:
{
player
=
BufferIO
::
ReadInt8
(
pbuf
);
pbuf
+=
4
;
count
=
BufferIO
::
ReadInt8
(
pbuf
);
int
c
/*, l, s, ss, code*/
;
for
(
int
i
=
0
;
i
<
count
;
++
i
)
{
pbufw
=
pbuf
;
/*code = */
BufferIO
::
ReadInt32
(
pbuf
);
c
=
BufferIO
::
ReadInt8
(
pbuf
);
/*l = */
BufferIO
::
ReadInt8
(
pbuf
);
/*s = */
BufferIO
::
ReadInt8
(
pbuf
);
/*ss = */
BufferIO
::
ReadInt8
(
pbuf
);
if
(
c
!=
player
)
BufferIO
::
WriteInt32
(
pbufw
,
0
);
}
count
=
BufferIO
::
ReadInt8
(
pbuf
);
for
(
int
i
=
0
;
i
<
count
;
++
i
)
{
pbufw
=
pbuf
;
/*code = */
BufferIO
::
ReadInt32
(
pbuf
);
c
=
BufferIO
::
ReadInt8
(
pbuf
);
/*l = */
BufferIO
::
ReadInt8
(
pbuf
);
/*s = */
BufferIO
::
ReadInt8
(
pbuf
);
/*ss = */
BufferIO
::
ReadInt8
(
pbuf
);
if
(
c
!=
player
)
BufferIO
::
WriteInt32
(
pbufw
,
0
);
}
WaitforResponse
(
player
);
NetServer
::
SendBufferToPlayer
(
players
[
player
],
STOC_GAME_MSG
,
offset
,
pbuf
-
offset
);
return
1
;
}
case
MSG_SELECT_CHAIN
:
{
case
MSG_SELECT_CHAIN
:
{
player
=
BufferIO
::
ReadInt8
(
pbuf
);
player
=
BufferIO
::
ReadInt8
(
pbuf
);
count
=
BufferIO
::
ReadInt8
(
pbuf
);
count
=
BufferIO
::
ReadInt8
(
pbuf
);
...
...
gframe/single_mode.cpp
View file @
444502bc
...
@@ -273,6 +273,19 @@ bool SingleMode::SinglePlayAnalyze(char* msg, unsigned int len) {
...
@@ -273,6 +273,19 @@ bool SingleMode::SinglePlayAnalyze(char* msg, unsigned int len) {
}
}
break
;
break
;
}
}
case
MSG_SELECT_UNSELECT_CARD
:
{
player
=
BufferIO
::
ReadInt8
(
pbuf
);
pbuf
+=
4
;
count
=
BufferIO
::
ReadInt8
(
pbuf
);
pbuf
+=
count
*
8
;
count
=
BufferIO
::
ReadInt8
(
pbuf
);
pbuf
+=
count
*
8
;
if
(
!
DuelClient
::
ClientAnalyze
(
offset
,
pbuf
-
offset
))
{
mainGame
->
singleSignal
.
Reset
();
mainGame
->
singleSignal
.
Wait
();
}
break
;
}
case
MSG_SELECT_CHAIN
:
{
case
MSG_SELECT_CHAIN
:
{
player
=
BufferIO
::
ReadInt8
(
pbuf
);
player
=
BufferIO
::
ReadInt8
(
pbuf
);
count
=
BufferIO
::
ReadInt8
(
pbuf
);
count
=
BufferIO
::
ReadInt8
(
pbuf
);
...
...
gframe/tag_duel.cpp
View file @
444502bc
...
@@ -24,8 +24,9 @@ void TagDuel::Chat(DuelPlayer* dp, void* pdata, int len) {
...
@@ -24,8 +24,9 @@ void TagDuel::Chat(DuelPlayer* dp, void* pdata, int len) {
unsigned
short
*
msg
=
(
unsigned
short
*
)
pdata
;
unsigned
short
*
msg
=
(
unsigned
short
*
)
pdata
;
int
msglen
=
BufferIO
::
CopyWStr
(
msg
,
scc
.
msg
,
256
);
int
msglen
=
BufferIO
::
CopyWStr
(
msg
,
scc
.
msg
,
256
);
for
(
int
i
=
0
;
i
<
4
;
++
i
)
for
(
int
i
=
0
;
i
<
4
;
++
i
)
if
(
players
[
i
]
!=
dp
)
NetServer
::
SendBufferToPlayer
(
players
[
i
],
STOC_CHAT
,
&
scc
,
4
+
msglen
*
2
);
NetServer
::
SendBufferToPlayer
(
players
[
i
],
STOC_CHAT
,
&
scc
,
4
+
msglen
*
2
);
for
(
auto
pit
=
observers
.
begin
();
pit
!=
observers
.
end
();
++
pit
)
NetServer
::
ReSendToPlayer
(
*
pit
);
}
}
void
TagDuel
::
JoinGame
(
DuelPlayer
*
dp
,
void
*
pdata
,
bool
is_creater
)
{
void
TagDuel
::
JoinGame
(
DuelPlayer
*
dp
,
void
*
pdata
,
bool
is_creater
)
{
if
(
!
is_creater
)
{
if
(
!
is_creater
)
{
...
@@ -630,6 +631,34 @@ int TagDuel::Analyze(char* msgbuffer, unsigned int len) {
...
@@ -630,6 +631,34 @@ int TagDuel::Analyze(char* msgbuffer, unsigned int len) {
NetServer
::
SendBufferToPlayer
(
cur_player
[
player
],
STOC_GAME_MSG
,
offset
,
pbuf
-
offset
);
NetServer
::
SendBufferToPlayer
(
cur_player
[
player
],
STOC_GAME_MSG
,
offset
,
pbuf
-
offset
);
return
1
;
return
1
;
}
}
case
MSG_SELECT_UNSELECT_CARD
:
{
player
=
BufferIO
::
ReadInt8
(
pbuf
);
pbuf
+=
4
;
count
=
BufferIO
::
ReadInt8
(
pbuf
);
int
c
/*, l, s, ss, code*/
;
for
(
int
i
=
0
;
i
<
count
;
++
i
)
{
pbufw
=
pbuf
;
/*code = */
BufferIO
::
ReadInt32
(
pbuf
);
c
=
BufferIO
::
ReadInt8
(
pbuf
);
/*l = */
BufferIO
::
ReadInt8
(
pbuf
);
/*s = */
BufferIO
::
ReadInt8
(
pbuf
);
/*ss = */
BufferIO
::
ReadInt8
(
pbuf
);
if
(
c
!=
player
)
BufferIO
::
WriteInt32
(
pbufw
,
0
);
}
count
=
BufferIO
::
ReadInt8
(
pbuf
);
for
(
int
i
=
0
;
i
<
count
;
++
i
)
{
pbufw
=
pbuf
;
/*code = */
BufferIO
::
ReadInt32
(
pbuf
);
c
=
BufferIO
::
ReadInt8
(
pbuf
);
/*l = */
BufferIO
::
ReadInt8
(
pbuf
);
/*s = */
BufferIO
::
ReadInt8
(
pbuf
);
/*ss = */
BufferIO
::
ReadInt8
(
pbuf
);
if
(
c
!=
player
)
BufferIO
::
WriteInt32
(
pbufw
,
0
);
}
WaitforResponse
(
player
);
NetServer
::
SendBufferToPlayer
(
cur_player
[
player
],
STOC_GAME_MSG
,
offset
,
pbuf
-
offset
);
return
1
;
}
case
MSG_SELECT_CHAIN
:
{
case
MSG_SELECT_CHAIN
:
{
player
=
BufferIO
::
ReadInt8
(
pbuf
);
player
=
BufferIO
::
ReadInt8
(
pbuf
);
count
=
BufferIO
::
ReadInt8
(
pbuf
);
count
=
BufferIO
::
ReadInt8
(
pbuf
);
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a 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