Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
R
rd-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
0
Merge Requests
0
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
苍蓝
rd-ygopro
Commits
1110ff16
Commit
1110ff16
authored
Dec 14, 2023
by
Chen Bill
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
use std::vector buffer
parent
0423cf88
Changes
4
Show whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
46 additions
and
34 deletions
+46
-34
gframe/replay_mode.cpp
gframe/replay_mode.cpp
+12
-10
gframe/single_duel.cpp
gframe/single_duel.cpp
+12
-8
gframe/single_mode.cpp
gframe/single_mode.cpp
+10
-8
gframe/tag_duel.cpp
gframe/tag_duel.cpp
+12
-8
No files found.
gframe/replay_mode.cpp
View file @
1110ff16
...
...
@@ -74,13 +74,14 @@ int ReplayMode::ReplayThread() {
mainGame
->
dInfo
.
isFinished
=
false
;
mainGame
->
dInfo
.
isReplay
=
true
;
mainGame
->
dInfo
.
isReplaySkiping
=
(
skip_turn
>
0
);
char
engineBuffer
[
0x1000
];
std
::
vector
<
char
>
engineBuffer
;
engineBuffer
.
resize
(
MESSAGE_BUFFER_SIZE
);
is_continuing
=
true
;
skip_step
=
0
;
if
(
mainGame
->
dInfo
.
isSingleMode
)
{
int
len
=
get_message
(
pduel
,
(
byte
*
)
engineBuffer
);
int
len
=
get_message
(
pduel
,
(
byte
*
)
engineBuffer
.
data
()
);
if
(
len
>
0
)
is_continuing
=
ReplayAnalyze
(
engineBuffer
,
len
);
is_continuing
=
ReplayAnalyze
(
engineBuffer
.
data
()
,
len
);
}
else
{
ReplayRefreshDeck
(
0
);
ReplayRefreshDeck
(
1
);
...
...
@@ -92,12 +93,13 @@ int ReplayMode::ReplayThread() {
if
(
mainGame
->
dInfo
.
isReplaySkiping
)
mainGame
->
gMutex
.
lock
();
while
(
is_continuing
&&
!
exit_pending
)
{
int
result
=
process
(
pduel
);
int
len
=
result
&
0xffff
;
/*int flag = result >> 16;*/
unsigned
int
result
=
process
(
pduel
);
int
len
=
result
&
PROCESSOR_BUFFER_LEN
;
if
(
len
>
0
)
{
get_message
(
pduel
,
(
byte
*
)
engineBuffer
);
is_continuing
=
ReplayAnalyze
(
engineBuffer
,
len
);
if
(
len
>
(
int
)
engineBuffer
.
size
())
engineBuffer
.
resize
(
len
);
get_message
(
pduel
,
(
byte
*
)
engineBuffer
.
data
());
is_continuing
=
ReplayAnalyze
(
engineBuffer
.
data
(),
len
);
if
(
is_restarting
)
{
mainGame
->
gMutex
.
lock
();
is_restarting
=
false
;
...
...
@@ -109,9 +111,9 @@ int ReplayMode::ReplayThread() {
if
(
mainGame
->
dInfo
.
isSingleMode
)
{
is_continuing
=
true
;
skip_step
=
0
;
int
len
=
get_message
(
pduel
,
(
byte
*
)
engineBuffer
);
int
len
=
get_message
(
pduel
,
(
byte
*
)
engineBuffer
.
data
()
);
if
(
len
>
0
)
{
is_continuing
=
ReplayAnalyze
(
engineBuffer
,
len
);
is_continuing
=
ReplayAnalyze
(
engineBuffer
.
data
()
,
len
);
}
}
else
{
ReplayRefreshDeck
(
0
);
...
...
gframe/single_duel.cpp
View file @
1110ff16
...
...
@@ -492,18 +492,22 @@ void SingleDuel::TPResult(DuelPlayer* dp, unsigned char tp) {
Process
();
}
void
SingleDuel
::
Process
()
{
char
engineBuffer
[
0x1000
];
unsigned
int
engFlag
=
0
,
engLen
=
0
;
std
::
vector
<
char
>
engineBuffer
;
engineBuffer
.
reserve
(
MESSAGE_BUFFER_SIZE
);
unsigned
int
engFlag
=
0
;
int
engLen
=
0
;
int
stop
=
0
;
while
(
!
stop
)
{
if
(
engFlag
==
2
)
if
(
engFlag
==
PROCESSOR_END
)
break
;
int
result
=
process
(
pduel
);
engLen
=
result
&
0xffff
;
engFlag
=
result
>>
16
;
unsigned
int
result
=
process
(
pduel
);
engLen
=
result
&
PROCESSOR_BUFFER_LEN
;
engFlag
=
result
&
PROCESSOR_FLAG
;
if
(
engLen
>
0
)
{
get_message
(
pduel
,
(
byte
*
)
&
engineBuffer
);
stop
=
Analyze
(
engineBuffer
,
engLen
);
if
(
engLen
>
(
int
)
engineBuffer
.
size
())
engineBuffer
.
resize
(
engLen
);
get_message
(
pduel
,
(
byte
*
)
engineBuffer
.
data
());
stop
=
Analyze
(
engineBuffer
.
data
(),
engLen
);
}
}
if
(
stop
==
2
)
...
...
gframe/single_mode.cpp
View file @
1110ff16
...
...
@@ -98,12 +98,13 @@ int SingleMode::SinglePlayThread() {
mainGame
->
dInfo
.
isSingleMode
=
true
;
mainGame
->
device
->
setEventReceiver
(
&
mainGame
->
dField
);
mainGame
->
gMutex
.
unlock
();
char
engineBuffer
[
0x1000
];
std
::
vector
<
char
>
engineBuffer
;
engineBuffer
.
resize
(
MESSAGE_BUFFER_SIZE
);
is_closing
=
false
;
is_continuing
=
true
;
int
len
=
get_message
(
pduel
,
(
byte
*
)
engineBuffer
);
int
len
=
get_message
(
pduel
,
(
byte
*
)
engineBuffer
.
data
()
);
if
(
len
>
0
)
is_continuing
=
SinglePlayAnalyze
(
engineBuffer
,
len
);
is_continuing
=
SinglePlayAnalyze
(
engineBuffer
.
data
()
,
len
);
last_replay
.
BeginRecord
();
last_replay
.
WriteHeader
(
rh
);
unsigned
short
buffer
[
20
];
...
...
@@ -120,12 +121,13 @@ int SingleMode::SinglePlayThread() {
last_replay
.
Flush
();
start_duel
(
pduel
,
opt
);
while
(
is_continuing
)
{
int
result
=
process
(
pduel
);
len
=
result
&
0xffff
;
/* int flag = result >> 16; */
unsigned
int
result
=
process
(
pduel
);
len
=
result
&
PROCESSOR_BUFFER_LEN
;
if
(
len
>
0
)
{
get_message
(
pduel
,
(
byte
*
)
engineBuffer
);
is_continuing
=
SinglePlayAnalyze
(
engineBuffer
,
len
);
if
(
len
>
(
int
)
engineBuffer
.
size
())
engineBuffer
.
resize
(
len
);
get_message
(
pduel
,
(
byte
*
)
engineBuffer
.
data
());
is_continuing
=
SinglePlayAnalyze
(
engineBuffer
.
data
(),
len
);
}
}
last_replay
.
EndRecord
();
...
...
gframe/tag_duel.cpp
View file @
1110ff16
...
...
@@ -488,18 +488,22 @@ void TagDuel::TPResult(DuelPlayer* dp, unsigned char tp) {
Process
();
}
void
TagDuel
::
Process
()
{
char
engineBuffer
[
0x1000
];
unsigned
int
engFlag
=
0
,
engLen
=
0
;
std
::
vector
<
char
>
engineBuffer
;
engineBuffer
.
reserve
(
MESSAGE_BUFFER_SIZE
);
unsigned
int
engFlag
=
0
;
int
engLen
=
0
;
int
stop
=
0
;
while
(
!
stop
)
{
if
(
engFlag
==
2
)
if
(
engFlag
==
PROCESSOR_END
)
break
;
int
result
=
process
(
pduel
);
engLen
=
result
&
0xffff
;
engFlag
=
result
>>
16
;
unsigned
int
result
=
process
(
pduel
);
engLen
=
result
&
PROCESSOR_BUFFER_LEN
;
engFlag
=
result
&
PROCESSOR_FLAG
;
if
(
engLen
>
0
)
{
get_message
(
pduel
,
(
byte
*
)
&
engineBuffer
);
stop
=
Analyze
(
engineBuffer
,
engLen
);
if
(
engLen
>
(
int
)
engineBuffer
.
size
())
engineBuffer
.
resize
(
engLen
);
get_message
(
pduel
,
(
byte
*
)
engineBuffer
.
data
());
stop
=
Analyze
(
engineBuffer
.
data
(),
engLen
);
}
}
if
(
stop
==
2
)
...
...
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