Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Y
ygopro
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
1
Merge Requests
1
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Security & Compliance
Security & Compliance
Dependency List
License Compliance
Packages
Packages
List
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
nanahira
ygopro
Commits
b346701c
Commit
b346701c
authored
Dec 18, 2017
by
edo9300
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Updated ReplayPacket
parent
01fc559d
Changes
13
Hide whitespace changes
Inline
Side-by-side
Showing
13 changed files
with
79 additions
and
72 deletions
+79
-72
gframe/bufferio.h
gframe/bufferio.h
+0
-21
gframe/duelclient.cpp
gframe/duelclient.cpp
+3
-3
gframe/duelclient.h
gframe/duelclient.h
+2
-1
gframe/replay.cpp
gframe/replay.cpp
+20
-4
gframe/replay.h
gframe/replay.h
+14
-3
gframe/replay_mode.cpp
gframe/replay_mode.cpp
+3
-3
gframe/replay_mode.h
gframe/replay_mode.h
+2
-2
gframe/single_duel.cpp
gframe/single_duel.cpp
+14
-14
gframe/single_duel.h
gframe/single_duel.h
+1
-1
gframe/single_mode.cpp
gframe/single_mode.cpp
+6
-6
gframe/single_mode.h
gframe/single_mode.h
+1
-1
gframe/tag_duel.cpp
gframe/tag_duel.cpp
+12
-12
gframe/tag_duel.h
gframe/tag_duel.h
+1
-1
No files found.
gframe/bufferio.h
View file @
b346701c
...
@@ -121,27 +121,6 @@ public:
...
@@ -121,27 +121,6 @@ public:
return
ret
;
return
ret
;
return
0
;
return
0
;
}
}
struct
ReplayPacket
{
int
message
;
int
length
;
unsigned
char
data
[
0x2000
];
ReplayPacket
()
{}
ReplayPacket
(
char
*
buf
,
int
len
)
{
message
=
ReadInt8
(
buf
);
length
=
len
;
memcpy
(
data
,
buf
,
length
);
}
ReplayPacket
(
int
msg
,
char
*
buf
,
int
len
)
{
message
=
msg
;
length
=
len
;
memcpy
(
data
,
buf
,
length
);
}
void
Set
(
int
msg
,
char
*
buf
,
int
len
)
{
message
=
msg
;
length
=
len
;
memcpy
(
data
,
buf
,
length
);
}
};
};
};
#endif //BUFFERIO_H
#endif //BUFFERIO_H
gframe/duelclient.cpp
View file @
b346701c
...
@@ -26,7 +26,7 @@ u64 DuelClient::select_hint = 0;
...
@@ -26,7 +26,7 @@ u64 DuelClient::select_hint = 0;
wchar_t
DuelClient
::
event_string
[
256
];
wchar_t
DuelClient
::
event_string
[
256
];
mtrandom
DuelClient
::
rnd
;
mtrandom
DuelClient
::
rnd
;
std
::
vector
<
BufferIO
::
ReplayPacket
>
DuelClient
::
replay_stream
;
std
::
vector
<
ReplayPacket
>
DuelClient
::
replay_stream
;
Replay
DuelClient
::
last_replay
;
Replay
DuelClient
::
last_replay
;
bool
DuelClient
::
old_replay
=
true
;
bool
DuelClient
::
old_replay
=
true
;
...
@@ -798,7 +798,7 @@ void DuelClient::HandleSTOCPacketLan(char* data, unsigned int len) {
...
@@ -798,7 +798,7 @@ void DuelClient::HandleSTOCPacketLan(char* data, unsigned int len) {
char
*
prep
=
pdata
;
char
*
prep
=
pdata
;
ReplayHeader
pheader
;
ReplayHeader
pheader
;
memcpy
(
&
pheader
,
prep
,
sizeof
(
ReplayHeader
));
memcpy
(
&
pheader
,
prep
,
sizeof
(
ReplayHeader
));
replay_stream
.
push_back
(
BufferIO
::
ReplayPacket
(
OLD_REPLAY_MODE
,
prep
,
len
-
1
));
replay_stream
.
push_back
(
ReplayPacket
(
OLD_REPLAY_MODE
,
prep
,
len
-
1
));
if
(
mainGame
->
saveReplay
)
{
if
(
mainGame
->
saveReplay
)
{
last_replay
.
BeginRecord
(
false
);
last_replay
.
BeginRecord
(
false
);
last_replay
.
WriteHeader
(
pheader
);
last_replay
.
WriteHeader
(
pheader
);
...
@@ -1001,7 +1001,7 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) {
...
@@ -1001,7 +1001,7 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) {
if
(
!
mainGame
->
dInfo
.
isReplay
||
mainGame
->
dInfo
.
isOldReplay
)
{
if
(
!
mainGame
->
dInfo
.
isReplay
||
mainGame
->
dInfo
.
isOldReplay
)
{
mainGame
->
dInfo
.
curMsg
=
BufferIO
::
ReadUInt8
(
pbuf
);
mainGame
->
dInfo
.
curMsg
=
BufferIO
::
ReadUInt8
(
pbuf
);
if
(
mainGame
->
dInfo
.
curMsg
!=
MSG_WAITING
)
{
if
(
mainGame
->
dInfo
.
curMsg
!=
MSG_WAITING
)
{
BufferIO
::
ReplayPacket
p
;
ReplayPacket
p
;
p
.
message
=
mainGame
->
dInfo
.
curMsg
;
p
.
message
=
mainGame
->
dInfo
.
curMsg
;
p
.
length
=
len
-
1
;
p
.
length
=
len
-
1
;
memcpy
(
p
.
data
,
pbuf
,
p
.
length
);
memcpy
(
p
.
data
,
pbuf
,
p
.
length
);
...
...
gframe/duelclient.h
View file @
b346701c
...
@@ -46,8 +46,9 @@ public:
...
@@ -46,8 +46,9 @@ public:
static
void
ClientEvent
(
bufferevent
*
bev
,
short
events
,
void
*
ctx
);
static
void
ClientEvent
(
bufferevent
*
bev
,
short
events
,
void
*
ctx
);
static
int
ClientThread
(
void
*
param
);
static
int
ClientThread
(
void
*
param
);
static
void
HandleSTOCPacketLan
(
char
*
data
,
unsigned
int
len
);
static
void
HandleSTOCPacketLan
(
char
*
data
,
unsigned
int
len
);
static
std
::
vector
<
BufferIO
::
ReplayPacket
>
replay_stream
;
static
std
::
vector
<
ReplayPacket
>
replay_stream
;
static
Replay
last_replay
;
static
Replay
last_replay
;
static
bool
old_replay
;
static
int
ClientAnalyze
(
char
*
msg
,
unsigned
int
len
);
static
int
ClientAnalyze
(
char
*
msg
,
unsigned
int
len
);
static
void
SetResponseI
(
int
respI
);
static
void
SetResponseI
(
int
respI
);
static
void
SetResponseB
(
void
*
respB
,
unsigned
char
len
);
static
void
SetResponseB
(
void
*
respB
,
unsigned
char
len
);
...
...
gframe/replay.cpp
View file @
b346701c
...
@@ -7,6 +7,22 @@
...
@@ -7,6 +7,22 @@
namespace
ygo
{
namespace
ygo
{
ReplayPacket
::
ReplayPacket
(
char
*
buf
,
int
len
)
{
message
=
BufferIO
::
ReadInt8
(
buf
);
length
=
len
;
memcpy
(
data
,
buf
,
length
);
}
ReplayPacket
::
ReplayPacket
(
int
msg
,
char
*
buf
,
int
len
)
{
message
=
msg
;
length
=
len
;
memcpy
(
data
,
buf
,
length
);
}
void
ReplayPacket
::
Set
(
int
msg
,
char
*
buf
,
int
len
)
{
message
=
msg
;
length
=
len
;
memcpy
(
data
,
buf
,
length
);
}
Replay
::
Replay
()
{
Replay
::
Replay
()
{
is_recording
=
false
;
is_recording
=
false
;
is_replaying
=
false
;
is_replaying
=
false
;
...
@@ -40,12 +56,12 @@ void Replay::BeginRecord(bool write) {
...
@@ -40,12 +56,12 @@ void Replay::BeginRecord(bool write) {
pdata
=
replay_data
;
pdata
=
replay_data
;
is_recording
=
true
;
is_recording
=
true
;
}
}
void
Replay
::
WritePacket
(
BufferIO
::
ReplayPacket
p
)
{
void
Replay
::
WritePacket
(
ReplayPacket
p
)
{
WriteInt8
(
p
.
message
,
false
);
WriteInt8
(
p
.
message
,
false
);
WriteInt32
(
p
.
length
,
false
);
WriteInt32
(
p
.
length
,
false
);
WriteData
((
char
*
)
p
.
data
,
p
.
length
);
WriteData
((
char
*
)
p
.
data
,
p
.
length
);
}
}
void
Replay
::
WriteStream
(
std
::
vector
<
BufferIO
::
ReplayPacket
>
stream
)
{
void
Replay
::
WriteStream
(
std
::
vector
<
ReplayPacket
>
stream
)
{
if
(
stream
.
size
())
if
(
stream
.
size
())
for
(
auto
it
=
stream
.
begin
();
it
!=
stream
.
end
();
it
++
)
for
(
auto
it
=
stream
.
begin
();
it
!=
stream
.
end
();
it
++
)
WritePacket
((
*
it
));
WritePacket
((
*
it
));
...
@@ -216,7 +232,7 @@ bool Replay::CheckReplay(const wchar_t* name) {
...
@@ -216,7 +232,7 @@ bool Replay::CheckReplay(const wchar_t* name) {
fclose
(
rfp
);
fclose
(
rfp
);
return
(
rheader
.
id
==
0x31707279
||
rheader
.
id
==
0x58707279
)
&&
rheader
.
version
>=
0x12d0
;
return
(
rheader
.
id
==
0x31707279
||
rheader
.
id
==
0x58707279
)
&&
rheader
.
version
>=
0x12d0
;
}
}
bool
Replay
::
ReadNextPacket
(
BufferIO
::
ReplayPacket
*
packet
)
{
bool
Replay
::
ReadNextPacket
(
ReplayPacket
*
packet
)
{
if
(
pdata
-
replay_data
>=
(
int
)
replay_size
)
if
(
pdata
-
replay_data
>=
(
int
)
replay_size
)
return
false
;
return
false
;
packet
->
message
=
*
pdata
++
;
packet
->
message
=
*
pdata
++
;
...
@@ -273,7 +289,7 @@ void Replay::Rewind() {
...
@@ -273,7 +289,7 @@ void Replay::Rewind() {
bool
Replay
::
LoadYrp
()
{
bool
Replay
::
LoadYrp
()
{
if
(
pheader
.
flag
&
REPLAY_NEWREPLAY
)
{
if
(
pheader
.
flag
&
REPLAY_NEWREPLAY
)
{
pdata
+=
(
4
+
((
pheader
.
flag
&
REPLAY_TAG
)
?
160
:
80
));
pdata
+=
(
4
+
((
pheader
.
flag
&
REPLAY_TAG
)
?
160
:
80
));
BufferIO
::
ReplayPacket
p
;
ReplayPacket
p
;
while
(
ReadNextPacket
(
&
p
))
while
(
ReadNextPacket
(
&
p
))
if
(
p
.
message
==
OLD_REPLAY_MODE
)
{
if
(
p
.
message
==
OLD_REPLAY_MODE
)
{
char
*
prep
=
(
char
*
)
p
.
data
;
char
*
prep
=
(
char
*
)
p
.
data
;
...
...
gframe/replay.h
View file @
b346701c
...
@@ -23,13 +23,24 @@ struct ReplayHeader {
...
@@ -23,13 +23,24 @@ struct ReplayHeader {
unsigned
char
props
[
8
];
unsigned
char
props
[
8
];
};
};
class
ReplayPacket
{
public:
int
message
;
int
length
;
unsigned
char
data
[
0x2000
];
ReplayPacket
()
{}
ReplayPacket
(
char
*
buf
,
int
len
);
ReplayPacket
(
int
msg
,
char
*
buf
,
int
len
);
void
Set
(
int
msg
,
char
*
buf
,
int
len
);
};
class
Replay
{
class
Replay
{
public:
public:
Replay
();
Replay
();
~
Replay
();
~
Replay
();
void
BeginRecord
(
bool
write
=
true
);
void
BeginRecord
(
bool
write
=
true
);
void
WriteStream
(
std
::
vector
<
BufferIO
::
ReplayPacket
>
stream
);
void
WriteStream
(
std
::
vector
<
ReplayPacket
>
stream
);
void
WritePacket
(
BufferIO
::
ReplayPacket
p
);
void
WritePacket
(
ReplayPacket
p
);
void
WriteHeader
(
ReplayHeader
&
header
);
void
WriteHeader
(
ReplayHeader
&
header
);
void
WriteData
(
const
void
*
data
,
unsigned
int
length
,
bool
flush
=
true
);
void
WriteData
(
const
void
*
data
,
unsigned
int
length
,
bool
flush
=
true
);
void
WriteInt32
(
int
data
,
bool
flush
=
true
);
void
WriteInt32
(
int
data
,
bool
flush
=
true
);
...
@@ -40,7 +51,7 @@ public:
...
@@ -40,7 +51,7 @@ public:
void
SaveReplay
(
const
wchar_t
*
name
);
void
SaveReplay
(
const
wchar_t
*
name
);
bool
OpenReplay
(
const
wchar_t
*
name
);
bool
OpenReplay
(
const
wchar_t
*
name
);
static
bool
CheckReplay
(
const
wchar_t
*
name
);
static
bool
CheckReplay
(
const
wchar_t
*
name
);
bool
ReadNextPacket
(
BufferIO
::
ReplayPacket
*
packet
);
bool
ReadNextPacket
(
ReplayPacket
*
packet
);
bool
ReadNextResponse
(
unsigned
char
resp
[
64
]);
bool
ReadNextResponse
(
unsigned
char
resp
[
64
]);
void
ReadName
(
wchar_t
*
data
);
void
ReadName
(
wchar_t
*
data
);
void
ReadData
(
void
*
data
,
unsigned
int
length
);
void
ReadData
(
void
*
data
,
unsigned
int
length
);
...
...
gframe/replay_mode.cpp
View file @
b346701c
...
@@ -11,7 +11,7 @@ namespace ygo {
...
@@ -11,7 +11,7 @@ namespace ygo {
long
ReplayMode
::
pduel
=
0
;
long
ReplayMode
::
pduel
=
0
;
bool
ReplayMode
::
yrp
=
false
;
bool
ReplayMode
::
yrp
=
false
;
Replay
ReplayMode
::
cur_replay
;
Replay
ReplayMode
::
cur_replay
;
std
::
vector
<
BufferIO
::
ReplayPacket
>
ReplayMode
::
current_stream
;
std
::
vector
<
ReplayPacket
>
ReplayMode
::
current_stream
;
bool
ReplayMode
::
is_continuing
=
true
;
bool
ReplayMode
::
is_continuing
=
true
;
bool
ReplayMode
::
is_closing
=
false
;
bool
ReplayMode
::
is_closing
=
false
;
bool
ReplayMode
::
is_pausing
=
false
;
bool
ReplayMode
::
is_pausing
=
false
;
...
@@ -78,7 +78,7 @@ int ReplayMode::ReplayThread(void* param) {
...
@@ -78,7 +78,7 @@ int ReplayMode::ReplayThread(void* param) {
mainGame
->
dInfo
.
duel_field
=
opt
&
0xff
;
mainGame
->
dInfo
.
duel_field
=
opt
&
0xff
;
mainGame
->
dInfo
.
extraval
=
(
opt
>>
8
);
mainGame
->
dInfo
.
extraval
=
(
opt
>>
8
);
mainGame
->
SetPhaseButtons
();
mainGame
->
SetPhaseButtons
();
BufferIO
::
ReplayPacket
p
;
ReplayPacket
p
;
current_stream
.
clear
();
current_stream
.
clear
();
while
(
cur_replay
.
ReadNextPacket
(
&
p
))
{
while
(
cur_replay
.
ReadNextPacket
(
&
p
))
{
current_stream
.
push_back
(
p
);
current_stream
.
push_back
(
p
);
...
@@ -177,7 +177,7 @@ void ReplayMode::Undo() {
...
@@ -177,7 +177,7 @@ void ReplayMode::Undo() {
mainGame
->
gMutex
.
Lock
();
mainGame
->
gMutex
.
Lock
();
Pause
(
false
,
false
);
Pause
(
false
,
false
);
}
}
bool
ReplayMode
::
ReplayAnalyze
(
BufferIO
::
ReplayPacket
p
)
{
bool
ReplayMode
::
ReplayAnalyze
(
ReplayPacket
p
)
{
is_restarting
=
false
;
is_restarting
=
false
;
while
(
true
)
{
while
(
true
)
{
if
(
is_closing
)
if
(
is_closing
)
...
...
gframe/replay_mode.h
View file @
b346701c
...
@@ -27,7 +27,7 @@ private:
...
@@ -27,7 +27,7 @@ private:
public:
public:
static
Replay
cur_replay
;
static
Replay
cur_replay
;
static
std
::
vector
<
BufferIO
::
ReplayPacket
>
ReplayMode
::
current_stream
;
static
std
::
vector
<
ReplayPacket
>
ReplayMode
::
current_stream
;
public:
public:
static
bool
StartReplay
(
int
skipturn
);
static
bool
StartReplay
(
int
skipturn
);
...
@@ -41,7 +41,7 @@ public:
...
@@ -41,7 +41,7 @@ public:
static
void
EndDuel
();
static
void
EndDuel
();
static
void
Restart
(
bool
refresh
);
static
void
Restart
(
bool
refresh
);
static
void
Undo
();
static
void
Undo
();
static
bool
ReplayAnalyze
(
BufferIO
::
ReplayPacket
p
);
static
bool
ReplayAnalyze
(
ReplayPacket
p
);
static
bool
ReplayAnalyze
(
char
*
msg
,
unsigned
int
len
);
static
bool
ReplayAnalyze
(
char
*
msg
,
unsigned
int
len
);
static
void
ReplayRefresh
(
int
flag
=
0xf81fff
);
static
void
ReplayRefresh
(
int
flag
=
0xf81fff
);
...
...
gframe/single_duel.cpp
View file @
b346701c
...
@@ -9,7 +9,7 @@
...
@@ -9,7 +9,7 @@
namespace
ygo
{
namespace
ygo
{
std
::
vector
<
BufferIO
::
ReplayPacket
>
SingleDuel
::
replay_stream
;
std
::
vector
<
ReplayPacket
>
SingleDuel
::
replay_stream
;
SingleDuel
::
SingleDuel
(
bool
is_match
)
{
SingleDuel
::
SingleDuel
(
bool
is_match
)
{
game_started
=
false
;
game_started
=
false
;
...
@@ -187,7 +187,7 @@ void SingleDuel::LeaveGame(DuelPlayer* dp) {
...
@@ -187,7 +187,7 @@ void SingleDuel::LeaveGame(DuelPlayer* dp) {
NetServer
::
ReSendToPlayer
(
players
[
1
]);
NetServer
::
ReSendToPlayer
(
players
[
1
]);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
ReSendToPlayer
(
*
oit
);
BufferIO
::
ReplayPacket
p
((
char
*
)
wbuf
,
3
);
ReplayPacket
p
((
char
*
)
wbuf
,
3
);
replay_stream
.
push_back
(
p
);
replay_stream
.
push_back
(
p
);
EndDuel
();
EndDuel
();
NetServer
::
SendPacketToPlayer
(
players
[
0
],
STOC_DUEL_END
);
NetServer
::
SendPacketToPlayer
(
players
[
0
],
STOC_DUEL_END
);
...
@@ -530,7 +530,7 @@ void SingleDuel::TPResult(DuelPlayer* dp, unsigned char tp) {
...
@@ -530,7 +530,7 @@ void SingleDuel::TPResult(DuelPlayer* dp, unsigned char tp) {
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
SendBufferToPlayer
(
*
oit
,
STOC_GAME_MSG
,
startbuf
,
18
);
NetServer
::
SendBufferToPlayer
(
*
oit
,
STOC_GAME_MSG
,
startbuf
,
18
);
startbuf
[
1
]
=
0
;
startbuf
[
1
]
=
0
;
BufferIO
::
ReplayPacket
p
((
char
*
)
startbuf
,
17
);
ReplayPacket
p
((
char
*
)
startbuf
,
17
);
replay_stream
.
push_back
(
p
);
replay_stream
.
push_back
(
p
);
PseudoRefreshDeck
(
0
);
PseudoRefreshDeck
(
0
);
PseudoRefreshDeck
(
1
);
PseudoRefreshDeck
(
1
);
...
@@ -611,7 +611,7 @@ void SingleDuel::Surrender(DuelPlayer* dp) {
...
@@ -611,7 +611,7 @@ void SingleDuel::Surrender(DuelPlayer* dp) {
NetServer
::
ReSendToPlayer
(
players
[
1
]);
NetServer
::
ReSendToPlayer
(
players
[
1
]);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
ReSendToPlayer
(
*
oit
);
BufferIO
::
ReplayPacket
p
((
char
*
)
wbuf
,
3
);
ReplayPacket
p
((
char
*
)
wbuf
,
3
);
replay_stream
.
push_back
(
p
);
replay_stream
.
push_back
(
p
);
if
(
players
[
player
]
==
pplayer
[
player
])
{
if
(
players
[
player
]
==
pplayer
[
player
])
{
match_result
[
duel_count
++
]
=
1
-
player
;
match_result
[
duel_count
++
]
=
1
-
player
;
...
@@ -630,7 +630,7 @@ int SingleDuel::Analyze(char* msgbuffer, unsigned int len) {
...
@@ -630,7 +630,7 @@ int SingleDuel::Analyze(char* msgbuffer, unsigned int len) {
while
(
pbuf
-
msgbuffer
<
(
int
)
len
)
{
while
(
pbuf
-
msgbuffer
<
(
int
)
len
)
{
replay_stream
.
clear
();
replay_stream
.
clear
();
bool
record
=
true
;
bool
record
=
true
;
BufferIO
::
ReplayPacket
p
;
ReplayPacket
p
;
offset
=
pbuf
;
offset
=
pbuf
;
unsigned
char
engType
=
BufferIO
::
ReadUInt8
(
pbuf
);
unsigned
char
engType
=
BufferIO
::
ReadUInt8
(
pbuf
);
p
.
message
=
engType
;
p
.
message
=
engType
;
...
@@ -1496,7 +1496,7 @@ void SingleDuel::EndDuel() {
...
@@ -1496,7 +1496,7 @@ void SingleDuel::EndDuel() {
pbuf
+=
sizeof
(
ReplayHeader
);
pbuf
+=
sizeof
(
ReplayHeader
);
memcpy
(
pbuf
,
last_replay
.
comp_data
,
last_replay
.
comp_size
);
memcpy
(
pbuf
,
last_replay
.
comp_data
,
last_replay
.
comp_size
);
replay_stream
.
push_back
(
BufferIO
::
ReplayPacket
(
OLD_REPLAY_MODE
,
replaybuf
,
sizeof
(
ReplayHeader
)
+
last_replay
.
comp_size
));
replay_stream
.
push_back
(
ReplayPacket
(
OLD_REPLAY_MODE
,
replaybuf
,
sizeof
(
ReplayHeader
)
+
last_replay
.
comp_size
));
//in case of remaining packets, e.g. MSG_WIN
//in case of remaining packets, e.g. MSG_WIN
new_replay
.
WriteStream
(
replay_stream
);
new_replay
.
WriteStream
(
replay_stream
);
...
@@ -1551,7 +1551,7 @@ void SingleDuel::RefreshMzone(int player, int flag, int use_cache) {
...
@@ -1551,7 +1551,7 @@ void SingleDuel::RefreshMzone(int player, int flag, int use_cache) {
BufferIO
::
WriteInt8
(
qbuf
,
LOCATION_MZONE
);
BufferIO
::
WriteInt8
(
qbuf
,
LOCATION_MZONE
);
int
len
=
query_field_card
(
pduel
,
player
,
LOCATION_MZONE
,
flag
,
(
unsigned
char
*
)
qbuf
,
use_cache
);
int
len
=
query_field_card
(
pduel
,
player
,
LOCATION_MZONE
,
flag
,
(
unsigned
char
*
)
qbuf
,
use_cache
);
NetServer
::
SendBufferToPlayer
(
players
[
player
],
STOC_GAME_MSG
,
query_buffer
,
len
+
3
);
NetServer
::
SendBufferToPlayer
(
players
[
player
],
STOC_GAME_MSG
,
query_buffer
,
len
+
3
);
BufferIO
::
ReplayPacket
p
((
char
*
)
query_buffer
,
len
+
2
);
ReplayPacket
p
((
char
*
)
query_buffer
,
len
+
2
);
replay_stream
.
push_back
(
p
);
replay_stream
.
push_back
(
p
);
int
qlen
=
0
;
int
qlen
=
0
;
while
(
qlen
<
len
)
{
while
(
qlen
<
len
)
{
...
@@ -1575,7 +1575,7 @@ void SingleDuel::RefreshSzone(int player, int flag, int use_cache) {
...
@@ -1575,7 +1575,7 @@ void SingleDuel::RefreshSzone(int player, int flag, int use_cache) {
BufferIO
::
WriteInt8
(
qbuf
,
LOCATION_SZONE
);
BufferIO
::
WriteInt8
(
qbuf
,
LOCATION_SZONE
);
int
len
=
query_field_card
(
pduel
,
player
,
LOCATION_SZONE
,
flag
,
(
unsigned
char
*
)
qbuf
,
use_cache
);
int
len
=
query_field_card
(
pduel
,
player
,
LOCATION_SZONE
,
flag
,
(
unsigned
char
*
)
qbuf
,
use_cache
);
NetServer
::
SendBufferToPlayer
(
players
[
player
],
STOC_GAME_MSG
,
query_buffer
,
len
+
3
);
NetServer
::
SendBufferToPlayer
(
players
[
player
],
STOC_GAME_MSG
,
query_buffer
,
len
+
3
);
BufferIO
::
ReplayPacket
p
((
char
*
)
query_buffer
,
len
+
2
);
ReplayPacket
p
((
char
*
)
query_buffer
,
len
+
2
);
replay_stream
.
push_back
(
p
);
replay_stream
.
push_back
(
p
);
int
qlen
=
0
;
int
qlen
=
0
;
while
(
qlen
<
len
)
{
while
(
qlen
<
len
)
{
...
@@ -1616,7 +1616,7 @@ void SingleDuel::RefreshHand(int player, int flag, int use_cache) {
...
@@ -1616,7 +1616,7 @@ void SingleDuel::RefreshHand(int player, int flag, int use_cache) {
NetServer
::
SendBufferToPlayer
(
players
[
1
-
player
],
STOC_GAME_MSG
,
query_buffer
,
len
+
3
);
NetServer
::
SendBufferToPlayer
(
players
[
1
-
player
],
STOC_GAME_MSG
,
query_buffer
,
len
+
3
);
for
(
auto
pit
=
observers
.
begin
();
pit
!=
observers
.
end
();
++
pit
)
for
(
auto
pit
=
observers
.
begin
();
pit
!=
observers
.
end
();
++
pit
)
NetServer
::
ReSendToPlayer
(
*
pit
);
NetServer
::
ReSendToPlayer
(
*
pit
);
BufferIO
::
ReplayPacket
p
((
char
*
)
query_buffer
,
len
+
2
);
ReplayPacket
p
((
char
*
)
query_buffer
,
len
+
2
);
replay_stream
.
push_back
(
p
);
replay_stream
.
push_back
(
p
);
}
}
void
SingleDuel
::
RefreshGrave
(
int
player
,
int
flag
,
int
use_cache
)
{
void
SingleDuel
::
RefreshGrave
(
int
player
,
int
flag
,
int
use_cache
)
{
...
@@ -1630,7 +1630,7 @@ void SingleDuel::RefreshGrave(int player, int flag, int use_cache) {
...
@@ -1630,7 +1630,7 @@ void SingleDuel::RefreshGrave(int player, int flag, int use_cache) {
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
);
NetServer
::
ReSendToPlayer
(
*
pit
);
BufferIO
::
ReplayPacket
p
((
char
*
)
query_buffer
,
len
+
2
);
ReplayPacket
p
((
char
*
)
query_buffer
,
len
+
2
);
replay_stream
.
push_back
(
p
);
replay_stream
.
push_back
(
p
);
}
}
void
SingleDuel
::
RefreshExtra
(
int
player
,
int
flag
,
int
use_cache
)
{
void
SingleDuel
::
RefreshExtra
(
int
player
,
int
flag
,
int
use_cache
)
{
...
@@ -1641,7 +1641,7 @@ void SingleDuel::RefreshExtra(int player, int flag, int use_cache) {
...
@@ -1641,7 +1641,7 @@ void SingleDuel::RefreshExtra(int player, int flag, int use_cache) {
BufferIO
::
WriteInt8
(
qbuf
,
LOCATION_EXTRA
);
BufferIO
::
WriteInt8
(
qbuf
,
LOCATION_EXTRA
);
int
len
=
query_field_card
(
pduel
,
player
,
LOCATION_EXTRA
,
flag
,
(
unsigned
char
*
)
qbuf
,
use_cache
);
int
len
=
query_field_card
(
pduel
,
player
,
LOCATION_EXTRA
,
flag
,
(
unsigned
char
*
)
qbuf
,
use_cache
);
NetServer
::
SendBufferToPlayer
(
players
[
player
],
STOC_GAME_MSG
,
query_buffer
,
len
+
3
);
NetServer
::
SendBufferToPlayer
(
players
[
player
],
STOC_GAME_MSG
,
query_buffer
,
len
+
3
);
BufferIO
::
ReplayPacket
p
((
char
*
)
query_buffer
,
len
+
2
);
ReplayPacket
p
((
char
*
)
query_buffer
,
len
+
2
);
replay_stream
.
push_back
(
p
);
replay_stream
.
push_back
(
p
);
}
}
void
SingleDuel
::
RefreshSingle
(
int
player
,
int
location
,
int
sequence
,
int
flag
)
{
void
SingleDuel
::
RefreshSingle
(
int
player
,
int
location
,
int
sequence
,
int
flag
)
{
...
@@ -1653,7 +1653,7 @@ void SingleDuel::RefreshSingle(int player, int location, int sequence, int flag)
...
@@ -1653,7 +1653,7 @@ void SingleDuel::RefreshSingle(int player, int location, int sequence, int flag)
BufferIO
::
WriteInt8
(
qbuf
,
sequence
);
BufferIO
::
WriteInt8
(
qbuf
,
sequence
);
int
len
=
query_card
(
pduel
,
player
,
location
,
sequence
,
flag
,
(
unsigned
char
*
)
qbuf
,
0
);
int
len
=
query_card
(
pduel
,
player
,
location
,
sequence
,
flag
,
(
unsigned
char
*
)
qbuf
,
0
);
NetServer
::
SendBufferToPlayer
(
players
[
player
],
STOC_GAME_MSG
,
query_buffer
,
len
+
4
);
NetServer
::
SendBufferToPlayer
(
players
[
player
],
STOC_GAME_MSG
,
query_buffer
,
len
+
4
);
BufferIO
::
ReplayPacket
p
((
char
*
)
query_buffer
,
len
+
3
);
ReplayPacket
p
((
char
*
)
query_buffer
,
len
+
3
);
replay_stream
.
push_back
(
p
);
replay_stream
.
push_back
(
p
);
if
(
location
==
LOCATION_REMOVED
&&
(
qbuf
[
15
]
&
POS_FACEDOWN
))
if
(
location
==
LOCATION_REMOVED
&&
(
qbuf
[
15
]
&
POS_FACEDOWN
))
return
;
return
;
...
@@ -1670,7 +1670,7 @@ void SingleDuel::PseudoRefreshDeck(int player, int flag) {
...
@@ -1670,7 +1670,7 @@ void SingleDuel::PseudoRefreshDeck(int player, int flag) {
BufferIO
::
WriteInt8
(
qbuf
,
player
);
BufferIO
::
WriteInt8
(
qbuf
,
player
);
BufferIO
::
WriteInt8
(
qbuf
,
LOCATION_DECK
);
BufferIO
::
WriteInt8
(
qbuf
,
LOCATION_DECK
);
int
len
=
query_field_card
(
pduel
,
player
,
LOCATION_DECK
,
flag
,
(
unsigned
char
*
)
qbuf
,
0
);
int
len
=
query_field_card
(
pduel
,
player
,
LOCATION_DECK
,
flag
,
(
unsigned
char
*
)
qbuf
,
0
);
BufferIO
::
ReplayPacket
p
((
char
*
)
query_buffer
,
len
+
2
);
ReplayPacket
p
((
char
*
)
query_buffer
,
len
+
2
);
replay_stream
.
push_back
(
p
);
replay_stream
.
push_back
(
p
);
}
}
int
SingleDuel
::
MessageHandler
(
long
fduel
,
int
type
)
{
int
SingleDuel
::
MessageHandler
(
long
fduel
,
int
type
)
{
...
@@ -1694,7 +1694,7 @@ void SingleDuel::SingleTimer(evutil_socket_t fd, short events, void* arg) {
...
@@ -1694,7 +1694,7 @@ void SingleDuel::SingleTimer(evutil_socket_t fd, short events, void* arg) {
NetServer
::
ReSendToPlayer
(
sd
->
players
[
1
]);
NetServer
::
ReSendToPlayer
(
sd
->
players
[
1
]);
for
(
auto
oit
=
sd
->
observers
.
begin
();
oit
!=
sd
->
observers
.
end
();
++
oit
)
for
(
auto
oit
=
sd
->
observers
.
begin
();
oit
!=
sd
->
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
ReSendToPlayer
(
*
oit
);
BufferIO
::
ReplayPacket
p
((
char
*
)
wbuf
,
3
);
ReplayPacket
p
((
char
*
)
wbuf
,
3
);
sd
->
replay_stream
.
push_back
(
p
);
sd
->
replay_stream
.
push_back
(
p
);
if
(
sd
->
players
[
player
]
==
sd
->
pplayer
[
player
])
{
if
(
sd
->
players
[
player
]
==
sd
->
pplayer
[
player
])
{
sd
->
match_result
[
sd
->
duel_count
++
]
=
1
-
player
;
sd
->
match_result
[
sd
->
duel_count
++
]
=
1
-
player
;
...
...
gframe/single_duel.h
View file @
b346701c
...
@@ -42,7 +42,7 @@ public:
...
@@ -42,7 +42,7 @@ public:
static
void
SingleTimer
(
evutil_socket_t
fd
,
short
events
,
void
*
arg
);
static
void
SingleTimer
(
evutil_socket_t
fd
,
short
events
,
void
*
arg
);
void
PseudoRefreshDeck
(
int
player
,
int
flag
=
0x181fff
);
void
PseudoRefreshDeck
(
int
player
,
int
flag
=
0x181fff
);
static
std
::
vector
<
BufferIO
::
ReplayPacket
>
replay_stream
;
static
std
::
vector
<
ReplayPacket
>
replay_stream
;
protected:
protected:
DuelPlayer
*
players
[
2
];
DuelPlayer
*
players
[
2
];
...
...
gframe/single_mode.cpp
View file @
b346701c
...
@@ -12,7 +12,7 @@ bool SingleMode::is_closing = false;
...
@@ -12,7 +12,7 @@ bool SingleMode::is_closing = false;
bool
SingleMode
::
is_continuing
=
false
;
bool
SingleMode
::
is_continuing
=
false
;
Replay
SingleMode
::
last_replay
;
Replay
SingleMode
::
last_replay
;
Replay
SingleMode
::
new_replay
;
Replay
SingleMode
::
new_replay
;
std
::
vector
<
BufferIO
::
ReplayPacket
>
SingleMode
::
replay_stream
;
std
::
vector
<
ReplayPacket
>
SingleMode
::
replay_stream
;
static
byte
buffer
[
0x20000
];
static
byte
buffer
[
0x20000
];
...
@@ -151,7 +151,7 @@ int SingleMode::SinglePlayThread(void* param) {
...
@@ -151,7 +151,7 @@ int SingleMode::SinglePlayThread(void* param) {
pbuf
+=
sizeof
(
ReplayHeader
);
pbuf
+=
sizeof
(
ReplayHeader
);
memcpy
(
pbuf
,
last_replay
.
comp_data
,
last_replay
.
comp_size
);
memcpy
(
pbuf
,
last_replay
.
comp_data
,
last_replay
.
comp_size
);
new_replay
.
WritePacket
(
BufferIO
::
ReplayPacket
(
OLD_REPLAY_MODE
,
replaybuf
,
sizeof
(
ReplayHeader
)
+
last_replay
.
comp_size
));
new_replay
.
WritePacket
(
ReplayPacket
(
OLD_REPLAY_MODE
,
replaybuf
,
sizeof
(
ReplayHeader
)
+
last_replay
.
comp_size
));
new_replay
.
EndRecord
();
new_replay
.
EndRecord
();
time_t
nowtime
=
time
(
NULL
);
time_t
nowtime
=
time
(
NULL
);
...
@@ -196,7 +196,7 @@ bool SingleMode::SinglePlayAnalyze(char* msg, unsigned int len) {
...
@@ -196,7 +196,7 @@ bool SingleMode::SinglePlayAnalyze(char* msg, unsigned int len) {
if
(
is_closing
||
!
is_continuing
)
if
(
is_closing
||
!
is_continuing
)
return
false
;
return
false
;
offset
=
pbuf
;
offset
=
pbuf
;
BufferIO
::
ReplayPacket
p
;
ReplayPacket
p
;
mainGame
->
dInfo
.
curMsg
=
BufferIO
::
ReadUInt8
(
pbuf
);
mainGame
->
dInfo
.
curMsg
=
BufferIO
::
ReadUInt8
(
pbuf
);
p
.
message
=
mainGame
->
dInfo
.
curMsg
;
p
.
message
=
mainGame
->
dInfo
.
curMsg
;
p
.
length
=
len
-
1
;
p
.
length
=
len
-
1
;
...
@@ -881,13 +881,13 @@ void SingleMode::SinglePlayRefresh(int player, int location, int flag) {
...
@@ -881,13 +881,13 @@ void SingleMode::SinglePlayRefresh(int player, int location, int flag) {
unsigned
char
queryBuffer
[
0x2000
];
unsigned
char
queryBuffer
[
0x2000
];
char
queryBuffer2
[
0x2000
];
char
queryBuffer2
[
0x2000
];
char
*
qbuf
=
queryBuffer2
;
char
*
qbuf
=
queryBuffer2
;
BufferIO
::
ReplayPacket
p
;
ReplayPacket
p
;
int
len
=
query_field_card
(
pduel
,
player
,
location
,
flag
,
queryBuffer
,
0
);
int
len
=
query_field_card
(
pduel
,
player
,
location
,
flag
,
queryBuffer
,
0
);
mainGame
->
dField
.
UpdateFieldCard
(
mainGame
->
LocalPlayer
(
player
),
location
,
(
char
*
)
queryBuffer
);
mainGame
->
dField
.
UpdateFieldCard
(
mainGame
->
LocalPlayer
(
player
),
location
,
(
char
*
)
queryBuffer
);
BufferIO
::
WriteInt8
(
qbuf
,
player
);
BufferIO
::
WriteInt8
(
qbuf
,
player
);
BufferIO
::
WriteInt8
(
qbuf
,
location
);
BufferIO
::
WriteInt8
(
qbuf
,
location
);
memcpy
(
qbuf
,
(
char
*
)
queryBuffer
,
len
);
memcpy
(
qbuf
,
(
char
*
)
queryBuffer
,
len
);
replay_stream
.
push_back
(
BufferIO
::
ReplayPacket
(
MSG_UPDATE_DATA
,
queryBuffer2
,
len
+
2
));
replay_stream
.
push_back
(
ReplayPacket
(
MSG_UPDATE_DATA
,
queryBuffer2
,
len
+
2
));
}
}
void
SingleMode
::
SinglePlayRefreshSingle
(
int
player
,
int
location
,
int
sequence
,
int
flag
)
{
void
SingleMode
::
SinglePlayRefreshSingle
(
int
player
,
int
location
,
int
sequence
,
int
flag
)
{
unsigned
char
queryBuffer
[
0x2000
];
unsigned
char
queryBuffer
[
0x2000
];
...
@@ -899,7 +899,7 @@ void SingleMode::SinglePlayRefreshSingle(int player, int location, int sequence,
...
@@ -899,7 +899,7 @@ void SingleMode::SinglePlayRefreshSingle(int player, int location, int sequence,
BufferIO
::
WriteInt8
(
qbuf
,
location
);
BufferIO
::
WriteInt8
(
qbuf
,
location
);
BufferIO
::
WriteInt8
(
qbuf
,
sequence
);
BufferIO
::
WriteInt8
(
qbuf
,
sequence
);
memcpy
(
qbuf
,
(
char
*
)
queryBuffer
,
len
);
memcpy
(
qbuf
,
(
char
*
)
queryBuffer
,
len
);
BufferIO
::
ReplayPacket
p
(
MSG_UPDATE_CARD
,
queryBuffer2
,
len
+
3
);
ReplayPacket
p
(
MSG_UPDATE_CARD
,
queryBuffer2
,
len
+
3
);
replay_stream
.
push_back
(
p
);
replay_stream
.
push_back
(
p
);
}
}
void
SingleMode
::
SinglePlayRefresh
(
int
flag
)
{
void
SingleMode
::
SinglePlayRefresh
(
int
flag
)
{
...
...
gframe/single_mode.h
View file @
b346701c
...
@@ -29,7 +29,7 @@ public:
...
@@ -29,7 +29,7 @@ public:
protected:
protected:
static
Replay
last_replay
;
static
Replay
last_replay
;
static
Replay
new_replay
;
static
Replay
new_replay
;
static
std
::
vector
<
BufferIO
::
ReplayPacket
>
replay_stream
;
static
std
::
vector
<
ReplayPacket
>
replay_stream
;
};
};
}
}
...
...
gframe/tag_duel.cpp
View file @
b346701c
...
@@ -9,7 +9,7 @@
...
@@ -9,7 +9,7 @@
namespace
ygo
{
namespace
ygo
{
std
::
vector
<
BufferIO
::
ReplayPacket
>
TagDuel
::
replay_stream
;
std
::
vector
<
ReplayPacket
>
TagDuel
::
replay_stream
;
TagDuel
::
TagDuel
()
{
TagDuel
::
TagDuel
()
{
game_started
=
false
;
game_started
=
false
;
...
@@ -533,7 +533,7 @@ void TagDuel::TPResult(DuelPlayer* dp, unsigned char tp) {
...
@@ -533,7 +533,7 @@ void TagDuel::TPResult(DuelPlayer* dp, unsigned char tp) {
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
SendBufferToPlayer
(
*
oit
,
STOC_GAME_MSG
,
startbuf
,
18
);
NetServer
::
SendBufferToPlayer
(
*
oit
,
STOC_GAME_MSG
,
startbuf
,
18
);
startbuf
[
1
]
=
0
;
startbuf
[
1
]
=
0
;
BufferIO
::
ReplayPacket
p
((
char
*
)
startbuf
,
17
);
ReplayPacket
p
((
char
*
)
startbuf
,
17
);
replay_stream
.
push_back
(
p
);
replay_stream
.
push_back
(
p
);
PseudoRefreshDeck
(
0
);
PseudoRefreshDeck
(
0
);
PseudoRefreshDeck
(
1
);
PseudoRefreshDeck
(
1
);
...
@@ -579,7 +579,7 @@ int TagDuel::Analyze(char* msgbuffer, unsigned int len) {
...
@@ -579,7 +579,7 @@ int TagDuel::Analyze(char* msgbuffer, unsigned int len) {
while
(
pbuf
-
msgbuffer
<
(
int
)
len
)
{
while
(
pbuf
-
msgbuffer
<
(
int
)
len
)
{
replay_stream
.
clear
();
replay_stream
.
clear
();
bool
record
=
true
;
bool
record
=
true
;
BufferIO
::
ReplayPacket
p
;
ReplayPacket
p
;
offset
=
pbuf
;
offset
=
pbuf
;
unsigned
char
engType
=
BufferIO
::
ReadUInt8
(
pbuf
);
unsigned
char
engType
=
BufferIO
::
ReadUInt8
(
pbuf
);
p
.
message
=
engType
;
p
.
message
=
engType
;
...
@@ -1579,7 +1579,7 @@ void TagDuel::EndDuel() {
...
@@ -1579,7 +1579,7 @@ void TagDuel::EndDuel() {
pbuf
+=
sizeof
(
ReplayHeader
);
pbuf
+=
sizeof
(
ReplayHeader
);
memcpy
(
pbuf
,
last_replay
.
comp_data
,
last_replay
.
comp_size
);
memcpy
(
pbuf
,
last_replay
.
comp_data
,
last_replay
.
comp_size
);
replay_stream
.
push_back
(
BufferIO
::
ReplayPacket
(
OLD_REPLAY_MODE
,
replaybuf
,
sizeof
(
ReplayHeader
)
+
last_replay
.
comp_size
));
replay_stream
.
push_back
(
ReplayPacket
(
OLD_REPLAY_MODE
,
replaybuf
,
sizeof
(
ReplayHeader
)
+
last_replay
.
comp_size
));
//in case of remaining packets, e.g. MSG_WIN
//in case of remaining packets, e.g. MSG_WIN
new_replay
.
WriteStream
(
replay_stream
);
new_replay
.
WriteStream
(
replay_stream
);
...
@@ -1642,7 +1642,7 @@ void TagDuel::RefreshMzone(int player, int flag, int use_cache) {
...
@@ -1642,7 +1642,7 @@ void TagDuel::RefreshMzone(int player, int flag, int use_cache) {
int
len
=
query_field_card
(
pduel
,
player
,
LOCATION_MZONE
,
flag
,
(
unsigned
char
*
)
qbuf
,
use_cache
);
int
len
=
query_field_card
(
pduel
,
player
,
LOCATION_MZONE
,
flag
,
(
unsigned
char
*
)
qbuf
,
use_cache
);
int
pid
=
(
player
==
0
)
?
0
:
2
;
int
pid
=
(
player
==
0
)
?
0
:
2
;
NetServer
::
SendBufferToPlayer
(
players
[
pid
],
STOC_GAME_MSG
,
query_buffer
,
len
+
3
);
NetServer
::
SendBufferToPlayer
(
players
[
pid
],
STOC_GAME_MSG
,
query_buffer
,
len
+
3
);
BufferIO
::
ReplayPacket
p
((
char
*
)
query_buffer
,
len
+
2
);
ReplayPacket
p
((
char
*
)
query_buffer
,
len
+
2
);
replay_stream
.
push_back
(
p
);
replay_stream
.
push_back
(
p
);
NetServer
::
ReSendToPlayer
(
players
[
pid
+
1
]);
NetServer
::
ReSendToPlayer
(
players
[
pid
+
1
]);
int
qlen
=
0
;
int
qlen
=
0
;
...
@@ -1670,7 +1670,7 @@ void TagDuel::RefreshSzone(int player, int flag, int use_cache) {
...
@@ -1670,7 +1670,7 @@ void TagDuel::RefreshSzone(int player, int flag, int use_cache) {
int
len
=
query_field_card
(
pduel
,
player
,
LOCATION_SZONE
,
flag
,
(
unsigned
char
*
)
qbuf
,
use_cache
);
int
len
=
query_field_card
(
pduel
,
player
,
LOCATION_SZONE
,
flag
,
(
unsigned
char
*
)
qbuf
,
use_cache
);
int
pid
=
(
player
==
0
)
?
0
:
2
;
int
pid
=
(
player
==
0
)
?
0
:
2
;
NetServer
::
SendBufferToPlayer
(
players
[
pid
],
STOC_GAME_MSG
,
query_buffer
,
len
+
3
);
NetServer
::
SendBufferToPlayer
(
players
[
pid
],
STOC_GAME_MSG
,
query_buffer
,
len
+
3
);
BufferIO
::
ReplayPacket
p
((
char
*
)
query_buffer
,
len
+
2
);
ReplayPacket
p
((
char
*
)
query_buffer
,
len
+
2
);
replay_stream
.
push_back
(
p
);
replay_stream
.
push_back
(
p
);
NetServer
::
ReSendToPlayer
(
players
[
pid
+
1
]);
NetServer
::
ReSendToPlayer
(
players
[
pid
+
1
]);
int
qlen
=
0
;
int
qlen
=
0
;
...
@@ -1697,7 +1697,7 @@ void TagDuel::RefreshHand(int player, int flag, int use_cache) {
...
@@ -1697,7 +1697,7 @@ void TagDuel::RefreshHand(int player, int flag, int use_cache) {
BufferIO
::
WriteInt8
(
qbuf
,
LOCATION_HAND
);
BufferIO
::
WriteInt8
(
qbuf
,
LOCATION_HAND
);
int
len
=
query_field_card
(
pduel
,
player
,
LOCATION_HAND
,
flag
|
QUERY_IS_PUBLIC
,
(
unsigned
char
*
)
qbuf
,
use_cache
);
int
len
=
query_field_card
(
pduel
,
player
,
LOCATION_HAND
,
flag
|
QUERY_IS_PUBLIC
,
(
unsigned
char
*
)
qbuf
,
use_cache
);
NetServer
::
SendBufferToPlayer
(
cur_player
[
player
],
STOC_GAME_MSG
,
query_buffer
,
len
+
3
);
NetServer
::
SendBufferToPlayer
(
cur_player
[
player
],
STOC_GAME_MSG
,
query_buffer
,
len
+
3
);
BufferIO
::
ReplayPacket
p
((
char
*
)
query_buffer
,
len
+
2
);
ReplayPacket
p
((
char
*
)
query_buffer
,
len
+
2
);
replay_stream
.
push_back
(
p
);
replay_stream
.
push_back
(
p
);
int
qlen
=
0
;
int
qlen
=
0
;
while
(
qlen
<
len
)
{
while
(
qlen
<
len
)
{
...
@@ -1732,7 +1732,7 @@ void TagDuel::RefreshGrave(int player, int flag, int use_cache) {
...
@@ -1732,7 +1732,7 @@ void TagDuel::RefreshGrave(int player, int flag, int use_cache) {
NetServer
::
ReSendToPlayer
(
players
[
3
]);
NetServer
::
ReSendToPlayer
(
players
[
3
]);
for
(
auto
pit
=
observers
.
begin
();
pit
!=
observers
.
end
();
++
pit
)
for
(
auto
pit
=
observers
.
begin
();
pit
!=
observers
.
end
();
++
pit
)
NetServer
::
ReSendToPlayer
(
*
pit
);
NetServer
::
ReSendToPlayer
(
*
pit
);
BufferIO
::
ReplayPacket
p
((
char
*
)
query_buffer
,
len
+
2
);
ReplayPacket
p
((
char
*
)
query_buffer
,
len
+
2
);
replay_stream
.
push_back
(
p
);
replay_stream
.
push_back
(
p
);
}
}
void
TagDuel
::
RefreshExtra
(
int
player
,
int
flag
,
int
use_cache
)
{
void
TagDuel
::
RefreshExtra
(
int
player
,
int
flag
,
int
use_cache
)
{
...
@@ -1743,7 +1743,7 @@ void TagDuel::RefreshExtra(int player, int flag, int use_cache) {
...
@@ -1743,7 +1743,7 @@ void TagDuel::RefreshExtra(int player, int flag, int use_cache) {
BufferIO
::
WriteInt8
(
qbuf
,
LOCATION_EXTRA
);
BufferIO
::
WriteInt8
(
qbuf
,
LOCATION_EXTRA
);
int
len
=
query_field_card
(
pduel
,
player
,
LOCATION_EXTRA
,
flag
,
(
unsigned
char
*
)
qbuf
,
use_cache
);
int
len
=
query_field_card
(
pduel
,
player
,
LOCATION_EXTRA
,
flag
,
(
unsigned
char
*
)
qbuf
,
use_cache
);
NetServer
::
SendBufferToPlayer
(
cur_player
[
player
],
STOC_GAME_MSG
,
query_buffer
,
len
+
3
);
NetServer
::
SendBufferToPlayer
(
cur_player
[
player
],
STOC_GAME_MSG
,
query_buffer
,
len
+
3
);
BufferIO
::
ReplayPacket
p
((
char
*
)
query_buffer
,
len
+
2
);
ReplayPacket
p
((
char
*
)
query_buffer
,
len
+
2
);
replay_stream
.
push_back
(
p
);
replay_stream
.
push_back
(
p
);
}
}
void
TagDuel
::
RefreshSingle
(
int
player
,
int
location
,
int
sequence
,
int
flag
)
{
void
TagDuel
::
RefreshSingle
(
int
player
,
int
location
,
int
sequence
,
int
flag
)
{
...
@@ -1754,7 +1754,7 @@ void TagDuel::RefreshSingle(int player, int location, int sequence, int flag) {
...
@@ -1754,7 +1754,7 @@ void TagDuel::RefreshSingle(int player, int location, int sequence, int flag) {
BufferIO
::
WriteInt8
(
qbuf
,
location
);
BufferIO
::
WriteInt8
(
qbuf
,
location
);
BufferIO
::
WriteInt8
(
qbuf
,
sequence
);
BufferIO
::
WriteInt8
(
qbuf
,
sequence
);
int
len
=
query_card
(
pduel
,
player
,
location
,
sequence
,
flag
,
(
unsigned
char
*
)
qbuf
,
0
);
int
len
=
query_card
(
pduel
,
player
,
location
,
sequence
,
flag
,
(
unsigned
char
*
)
qbuf
,
0
);
BufferIO
::
ReplayPacket
p
((
char
*
)
query_buffer
,
len
+
3
);
ReplayPacket
p
((
char
*
)
query_buffer
,
len
+
3
);
replay_stream
.
push_back
(
p
);
replay_stream
.
push_back
(
p
);
if
(
location
&
LOCATION_ONFIELD
)
{
if
(
location
&
LOCATION_ONFIELD
)
{
int
pid
=
(
player
==
0
)
?
0
:
2
;
int
pid
=
(
player
==
0
)
?
0
:
2
;
...
@@ -1789,7 +1789,7 @@ void TagDuel::PseudoRefreshDeck(int player, int flag) {
...
@@ -1789,7 +1789,7 @@ void TagDuel::PseudoRefreshDeck(int player, int flag) {
BufferIO
::
WriteInt8
(
qbuf
,
player
);
BufferIO
::
WriteInt8
(
qbuf
,
player
);
BufferIO
::
WriteInt8
(
qbuf
,
LOCATION_DECK
);
BufferIO
::
WriteInt8
(
qbuf
,
LOCATION_DECK
);
int
len
=
query_field_card
(
pduel
,
player
,
LOCATION_DECK
,
flag
,
(
unsigned
char
*
)
qbuf
,
0
);
int
len
=
query_field_card
(
pduel
,
player
,
LOCATION_DECK
,
flag
,
(
unsigned
char
*
)
qbuf
,
0
);
BufferIO
::
ReplayPacket
p
((
char
*
)
query_buffer
,
len
+
2
);
ReplayPacket
p
((
char
*
)
query_buffer
,
len
+
2
);
replay_stream
.
push_back
(
p
);
replay_stream
.
push_back
(
p
);
}
}
int
TagDuel
::
MessageHandler
(
long
fduel
,
int
type
)
{
int
TagDuel
::
MessageHandler
(
long
fduel
,
int
type
)
{
...
@@ -1813,7 +1813,7 @@ void TagDuel::TagTimer(evutil_socket_t fd, short events, void* arg) {
...
@@ -1813,7 +1813,7 @@ void TagDuel::TagTimer(evutil_socket_t fd, short events, void* arg) {
NetServer
::
ReSendToPlayer
(
sd
->
players
[
1
]);
NetServer
::
ReSendToPlayer
(
sd
->
players
[
1
]);
NetServer
::
ReSendToPlayer
(
sd
->
players
[
2
]);
NetServer
::
ReSendToPlayer
(
sd
->
players
[
2
]);
NetServer
::
ReSendToPlayer
(
sd
->
players
[
3
]);
NetServer
::
ReSendToPlayer
(
sd
->
players
[
3
]);
BufferIO
::
ReplayPacket
p
((
char
*
)
wbuf
,
3
);
ReplayPacket
p
((
char
*
)
wbuf
,
3
);
sd
->
replay_stream
.
push_back
(
p
);
sd
->
replay_stream
.
push_back
(
p
);
sd
->
EndDuel
();
sd
->
EndDuel
();
sd
->
DuelEndProc
();
sd
->
DuelEndProc
();
...
...
gframe/tag_duel.h
View file @
b346701c
...
@@ -42,7 +42,7 @@ public:
...
@@ -42,7 +42,7 @@ public:
static
void
TagTimer
(
evutil_socket_t
fd
,
short
events
,
void
*
arg
);
static
void
TagTimer
(
evutil_socket_t
fd
,
short
events
,
void
*
arg
);
void
PseudoRefreshDeck
(
int
player
,
int
flag
=
0x181fff
);
void
PseudoRefreshDeck
(
int
player
,
int
flag
=
0x181fff
);
static
std
::
vector
<
BufferIO
::
ReplayPacket
>
replay_stream
;
static
std
::
vector
<
ReplayPacket
>
replay_stream
;
protected:
protected:
DuelPlayer
*
players
[
4
];
DuelPlayer
*
players
[
4
];
...
...
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