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
f548456a
Commit
f548456a
authored
Aug 09, 2017
by
mercury233
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
test
parent
8d0c7b3b
Changes
1
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
73 additions
and
90 deletions
+73
-90
gframe/replay.cpp
gframe/replay.cpp
+73
-90
No files found.
gframe/replay.cpp
View file @
f548456a
...
@@ -3,7 +3,6 @@
...
@@ -3,7 +3,6 @@
#include "../ocgcore/card.h"
#include "../ocgcore/card.h"
#include <algorithm>
#include <algorithm>
#include "lzma/LzmaLib.h"
#include "lzma/LzmaLib.h"
#include <sstream>
namespace
ygo
{
namespace
ygo
{
...
@@ -20,42 +19,20 @@ Replay::~Replay() {
...
@@ -20,42 +19,20 @@ Replay::~Replay() {
delete
[]
replay_data
;
delete
[]
replay_data
;
delete
[]
comp_data
;
delete
[]
comp_data
;
}
}
std
::
wstring
SA2W
(
std
::
string
&
strA
)
{
setlocale
(
LC_ALL
,
"chs"
);
const
char
*
_Source
=
strA
.
c_str
();
size_t
_Dsize
=
strA
.
size
()
+
1
;
wchar_t
*
_Dest
=
new
wchar_t
[
_Dsize
];
wmemset
(
_Dest
,
0
,
_Dsize
);
mbstowcs
(
_Dest
,
_Source
,
_Dsize
);
std
::
wstring
result
=
_Dest
;
delete
[]
_Dest
;
setlocale
(
LC_ALL
,
"C"
);
return
result
;
}
void
Replay
::
BeginRecord
()
{
void
Replay
::
BeginRecord
()
{
if
(
ygo
::
replay_mode
>
0
)
{
#ifdef YGOPRO_SERVER_MODE
if
(
ygo
::
replay_mode
==
0
)
return
;
#endif //YGOPRO_SERVER_MODE
#ifdef _WIN32
#ifdef _WIN32
if
(
is_recording
)
if
(
is_recording
)
CloseHandle
(
recording_fp
);
CloseHandle
(
recording_fp
);
std
::
stringstream
ss
;
time_t
nowtime
=
time
(
NULL
);
ss
<<
ygo
::
aServerPort
;
struct
tm
*
localedtime
=
localtime
(
&
nowtime
);
std
::
string
ssss
;
wchar_t
tmppath
[
80
];
ssss
=
ss
.
str
();
wcsftime
(
tmppath
,
80
,
"./replay/%Y-%m-%d %H-%M-%S %%u.yrp"
,
localedtime
);
wchar_t
path
[
80
];
std
::
wstring
comPrefix
=
L"./replay/"
;
myswprintf
(
path
,
tmppath
,
ygo
::
aServerPort
);
recording_fp
=
CreateFileW
(
path
,
GENERIC_WRITE
,
0
,
NULL
,
CREATE_ALWAYS
,
FILE_FLAG_WRITE_THROUGH
,
NULL
);
std
::
wstring
comID
=
comPrefix
+
SA2W
(
ssss
)
+
L"Replay.yrp"
;
recording_fp
=
CreateFileW
(
comID
.
c_str
(),
GENERIC_WRITE
,
0
,
NULL
,
CREATE_ALWAYS
,
FILE_FLAG_WRITE_THROUGH
,
NULL
);
if
(
recording_fp
==
INVALID_HANDLE_VALUE
)
if
(
recording_fp
==
INVALID_HANDLE_VALUE
)
return
;
return
;
#else
#else
...
@@ -71,13 +48,14 @@ void Replay::BeginRecord() {
...
@@ -71,13 +48,14 @@ void Replay::BeginRecord() {
if
(
!
fp
)
if
(
!
fp
)
return
;
return
;
#endif
#endif
}
pdata
=
replay_data
;
pdata
=
replay_data
;
is_recording
=
true
;
is_recording
=
true
;
}
}
void
Replay
::
WriteHeader
(
ReplayHeader
&
header
)
{
void
Replay
::
WriteHeader
(
ReplayHeader
&
header
)
{
pheader
=
header
;
pheader
=
header
;
if
(
ygo
::
replay_mode
>
0
)
{
#ifdef YGOPRO_SERVER_MODE
if
(
ygo
::
replay_mode
==
0
)
return
;
#endif //YGOPRO_SERVER_MODE
#ifdef _WIN32
#ifdef _WIN32
DWORD
size
;
DWORD
size
;
WriteFile
(
recording_fp
,
&
header
,
sizeof
(
header
),
&
size
,
NULL
);
WriteFile
(
recording_fp
,
&
header
,
sizeof
(
header
),
&
size
,
NULL
);
...
@@ -85,14 +63,15 @@ void Replay::WriteHeader(ReplayHeader& header) {
...
@@ -85,14 +63,15 @@ void Replay::WriteHeader(ReplayHeader& header) {
fwrite
(
&
header
,
sizeof
(
header
),
1
,
fp
);
fwrite
(
&
header
,
sizeof
(
header
),
1
,
fp
);
fflush
(
fp
);
fflush
(
fp
);
#endif
#endif
}
}
}
void
Replay
::
WriteData
(
const
void
*
data
,
unsigned
int
length
,
bool
flush
)
{
void
Replay
::
WriteData
(
const
void
*
data
,
unsigned
int
length
,
bool
flush
)
{
if
(
!
is_recording
)
if
(
!
is_recording
)
return
;
return
;
memcpy
(
pdata
,
data
,
length
);
memcpy
(
pdata
,
data
,
length
);
pdata
+=
length
;
pdata
+=
length
;
if
(
ygo
::
replay_mode
>
0
)
{
#ifdef YGOPRO_SERVER_MODE
if
(
ygo
::
replay_mode
==
0
)
return
;
#endif //YGOPRO_SERVER_MODE
#ifdef _WIN32
#ifdef _WIN32
DWORD
size
;
DWORD
size
;
WriteFile
(
recording_fp
,
data
,
length
,
&
size
,
NULL
);
WriteFile
(
recording_fp
,
data
,
length
,
&
size
,
NULL
);
...
@@ -101,14 +80,15 @@ void Replay::WriteData(const void* data, unsigned int length, bool flush) {
...
@@ -101,14 +80,15 @@ void Replay::WriteData(const void* data, unsigned int length, bool flush) {
if
(
flush
)
if
(
flush
)
fflush
(
fp
);
fflush
(
fp
);
#endif
#endif
}
}
}
void
Replay
::
WriteInt32
(
int
data
,
bool
flush
)
{
void
Replay
::
WriteInt32
(
int
data
,
bool
flush
)
{
if
(
!
is_recording
)
if
(
!
is_recording
)
return
;
return
;
*
((
int
*
)(
pdata
))
=
data
;
*
((
int
*
)(
pdata
))
=
data
;
pdata
+=
4
;
pdata
+=
4
;
if
(
ygo
::
replay_mode
>
0
)
{
#ifdef YGOPRO_SERVER_MODE
if
(
ygo
::
replay_mode
==
0
)
return
;
#endif //YGOPRO_SERVER_MODE
#ifdef _WIN32
#ifdef _WIN32
DWORD
size
;
DWORD
size
;
WriteFile
(
recording_fp
,
&
data
,
sizeof
(
int
),
&
size
,
NULL
);
WriteFile
(
recording_fp
,
&
data
,
sizeof
(
int
),
&
size
,
NULL
);
...
@@ -117,14 +97,15 @@ void Replay::WriteInt32(int data, bool flush) {
...
@@ -117,14 +97,15 @@ void Replay::WriteInt32(int data, bool flush) {
if
(
flush
)
if
(
flush
)
fflush
(
fp
);
fflush
(
fp
);
#endif
#endif
}
}
}
void
Replay
::
WriteInt16
(
short
data
,
bool
flush
)
{
void
Replay
::
WriteInt16
(
short
data
,
bool
flush
)
{
if
(
!
is_recording
)
if
(
!
is_recording
)
return
;
return
;
*
((
short
*
)(
pdata
))
=
data
;
*
((
short
*
)(
pdata
))
=
data
;
pdata
+=
2
;
pdata
+=
2
;
if
(
ygo
::
replay_mode
>
0
)
{
#ifdef YGOPRO_SERVER_MODE
if
(
ygo
::
replay_mode
==
0
)
return
;
#endif //YGOPRO_SERVER_MODE
#ifdef _WIN32
#ifdef _WIN32
DWORD
size
;
DWORD
size
;
WriteFile
(
recording_fp
,
&
data
,
sizeof
(
short
),
&
size
,
NULL
);
WriteFile
(
recording_fp
,
&
data
,
sizeof
(
short
),
&
size
,
NULL
);
...
@@ -133,14 +114,15 @@ void Replay::WriteInt16(short data, bool flush) {
...
@@ -133,14 +114,15 @@ void Replay::WriteInt16(short data, bool flush) {
if
(
flush
)
if
(
flush
)
fflush
(
fp
);
fflush
(
fp
);
#endif
#endif
}
}
}
void
Replay
::
WriteInt8
(
char
data
,
bool
flush
)
{
void
Replay
::
WriteInt8
(
char
data
,
bool
flush
)
{
if
(
!
is_recording
)
if
(
!
is_recording
)
return
;
return
;
*
pdata
=
data
;
*
pdata
=
data
;
pdata
++
;
pdata
++
;
if
(
ygo
::
replay_mode
>
0
)
{
#ifdef YGOPRO_SERVER_MODE
if
(
ygo
::
replay_mode
==
0
)
return
;
#endif //YGOPRO_SERVER_MODE
#ifdef _WIN32
#ifdef _WIN32
DWORD
size
;
DWORD
size
;
WriteFile
(
recording_fp
,
&
data
,
sizeof
(
char
),
&
size
,
NULL
);
WriteFile
(
recording_fp
,
&
data
,
sizeof
(
char
),
&
size
,
NULL
);
...
@@ -149,28 +131,29 @@ void Replay::WriteInt8(char data, bool flush) {
...
@@ -149,28 +131,29 @@ void Replay::WriteInt8(char data, bool flush) {
if
(
flush
)
if
(
flush
)
fflush
(
fp
);
fflush
(
fp
);
#endif
#endif
}
}
}
void
Replay
::
Flush
()
{
void
Replay
::
Flush
()
{
if
(
!
is_recording
)
if
(
!
is_recording
)
return
;
return
;
if
(
ygo
::
replay_mode
>
0
)
{
#ifdef YGOPRO_SERVER_MODE
if
(
ygo
::
replay_mode
==
0
)
return
;
#endif //YGOPRO_SERVER_MODE
#ifdef _WIN32
#ifdef _WIN32
#else
#else
fflush
(
fp
);
fflush
(
fp
);
#endif
#endif
}
}
}
void
Replay
::
EndRecord
()
{
void
Replay
::
EndRecord
()
{
if
(
!
is_recording
)
if
(
!
is_recording
)
return
;
return
;
if
(
ygo
::
replay_mode
>
0
)
{
#ifdef YGOPRO_SERVER_MODE
if
(
ygo
::
replay_mode
==
0
)
return
;
#endif //YGOPRO_SERVER_MODE
#ifdef _WIN32
#ifdef _WIN32
CloseHandle
(
recording_fp
);
CloseHandle
(
recording_fp
);
#else
#else
fclose
(
fp
);
fclose
(
fp
);
#endif
#endif
}
pheader
.
datasize
=
pdata
-
replay_data
;
pheader
.
datasize
=
pdata
-
replay_data
;
pheader
.
flag
|=
REPLAY_COMPRESSED
;
pheader
.
flag
|=
REPLAY_COMPRESSED
;
size_t
propsize
=
5
;
size_t
propsize
=
5
;
...
...
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