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
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
YGOPRO-520DIY
ygopro
Commits
51929625
Commit
51929625
authored
Nov 16, 2024
by
salix5
Committed by
GitHub
Nov 16, 2024
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
BufferIO: add CopyCharArray (#2616)
array length is determined by reference to array
parent
7e5da6c6
Changes
9
Show whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
66 additions
and
57 deletions
+66
-57
gframe/bufferio.h
gframe/bufferio.h
+11
-1
gframe/config.h
gframe/config.h
+1
-1
gframe/duelclient.cpp
gframe/duelclient.cpp
+31
-31
gframe/event_handler.cpp
gframe/event_handler.cpp
+1
-1
gframe/myfilesystem.h
gframe/myfilesystem.h
+2
-3
gframe/netserver.cpp
gframe/netserver.cpp
+4
-4
gframe/single_duel.cpp
gframe/single_duel.cpp
+5
-5
gframe/single_mode.cpp
gframe/single_mode.cpp
+7
-7
gframe/tag_duel.cpp
gframe/tag_duel.cpp
+4
-4
No files found.
gframe/bufferio.h
View file @
51929625
...
@@ -28,7 +28,13 @@ public:
...
@@ -28,7 +28,13 @@ public:
static
void
WriteInt8
(
unsigned
char
*&
p
,
char
val
)
{
static
void
WriteInt8
(
unsigned
char
*&
p
,
char
val
)
{
buffer_write
<
char
>
(
p
,
val
);
buffer_write
<
char
>
(
p
,
val
);
}
}
// return: string length
/**
* @brief Copy a C-style string to another C-style string.
* @param src The source wide string
* @param pstr The destination char string
* @param bufsize The size of the destination buffer
* @return The length of the copied string
*/
template
<
typename
T1
,
typename
T2
>
template
<
typename
T1
,
typename
T2
>
static
int
CopyWStr
(
const
T1
*
src
,
T2
*
pstr
,
int
bufsize
)
{
static
int
CopyWStr
(
const
T1
*
src
,
T2
*
pstr
,
int
bufsize
)
{
int
l
=
0
;
int
l
=
0
;
...
@@ -50,6 +56,10 @@ public:
...
@@ -50,6 +56,10 @@ public:
*
pstr
=
0
;
*
pstr
=
0
;
return
l
;
return
l
;
}
}
template
<
typename
T1
,
typename
T2
,
size_t
N
>
static
int
CopyCharArray
(
const
T1
*
src
,
T2
(
&
dst
)[
N
])
{
return
CopyWStr
(
src
,
dst
,
N
);
}
template
<
size_t
N
>
template
<
size_t
N
>
static
void
CopyString
(
const
char
*
src
,
char
(
&
dst
)[
N
])
{
static
void
CopyString
(
const
char
*
src
,
char
(
&
dst
)[
N
])
{
dst
[
0
]
=
0
;
dst
[
0
]
=
0
;
...
...
gframe/config.h
View file @
51929625
...
@@ -64,7 +64,7 @@ inline FILE* myfopen(const char* filename, const char* mode) {
...
@@ -64,7 +64,7 @@ inline FILE* myfopen(const char* filename, const char* mode) {
wchar_t
wname
[
256
]{};
wchar_t
wname
[
256
]{};
wchar_t
wmode
[
20
]{};
wchar_t
wmode
[
20
]{};
BufferIO
::
DecodeUTF8
(
filename
,
wname
);
BufferIO
::
DecodeUTF8
(
filename
,
wname
);
BufferIO
::
Copy
WStr
(
mode
,
wmode
,
sizeof
wmode
/
sizeof
wmode
[
0
]
);
BufferIO
::
Copy
CharArray
(
mode
,
wmode
);
fp
=
_wfopen
(
wname
,
wmode
);
fp
=
_wfopen
(
wname
,
wmode
);
#else
#else
fp
=
fopen
(
filename
,
mode
);
fp
=
fopen
(
filename
,
mode
);
...
...
gframe/duelclient.cpp
View file @
51929625
...
@@ -122,13 +122,13 @@ void DuelClient::ClientEvent(bufferevent *bev, short events, void *ctx) {
...
@@ -122,13 +122,13 @@ void DuelClient::ClientEvent(bufferevent *bev, short events, void *ctx) {
if
(
events
&
BEV_EVENT_CONNECTED
)
{
if
(
events
&
BEV_EVENT_CONNECTED
)
{
bool
create_game
=
(
size_t
)
ctx
!=
0
;
bool
create_game
=
(
size_t
)
ctx
!=
0
;
CTOS_PlayerInfo
cspi
;
CTOS_PlayerInfo
cspi
;
BufferIO
::
Copy
WStr
(
mainGame
->
ebNickName
->
getText
(),
cspi
.
name
,
20
);
BufferIO
::
Copy
CharArray
(
mainGame
->
ebNickName
->
getText
(),
cspi
.
name
);
SendPacketToServer
(
CTOS_PLAYER_INFO
,
cspi
);
SendPacketToServer
(
CTOS_PLAYER_INFO
,
cspi
);
if
(
create_game
)
{
if
(
create_game
)
{
CTOS_CreateGame
cscg
;
CTOS_CreateGame
cscg
;
if
(
bot_mode
)
{
if
(
bot_mode
)
{
BufferIO
::
Copy
WStr
(
L"Bot Game"
,
cscg
.
name
,
20
);
BufferIO
::
Copy
CharArray
(
L"Bot Game"
,
cscg
.
name
);
BufferIO
::
Copy
WStr
(
L""
,
cscg
.
pass
,
20
);
BufferIO
::
Copy
CharArray
(
L""
,
cscg
.
pass
);
cscg
.
info
.
rule
=
5
;
cscg
.
info
.
rule
=
5
;
cscg
.
info
.
mode
=
0
;
cscg
.
info
.
mode
=
0
;
cscg
.
info
.
start_hand
=
5
;
cscg
.
info
.
start_hand
=
5
;
...
@@ -141,8 +141,8 @@ void DuelClient::ClientEvent(bufferevent *bev, short events, void *ctx) {
...
@@ -141,8 +141,8 @@ void DuelClient::ClientEvent(bufferevent *bev, short events, void *ctx) {
cscg
.
info
.
no_shuffle_deck
=
mainGame
->
chkBotNoShuffleDeck
->
isChecked
();
cscg
.
info
.
no_shuffle_deck
=
mainGame
->
chkBotNoShuffleDeck
->
isChecked
();
}
}
else
{
else
{
BufferIO
::
Copy
WStr
(
mainGame
->
ebServerName
->
getText
(),
cscg
.
name
,
20
);
BufferIO
::
Copy
CharArray
(
mainGame
->
ebServerName
->
getText
(),
cscg
.
name
);
BufferIO
::
Copy
WStr
(
mainGame
->
ebServerPass
->
getText
(),
cscg
.
pass
,
20
);
BufferIO
::
Copy
CharArray
(
mainGame
->
ebServerPass
->
getText
(),
cscg
.
pass
);
cscg
.
info
.
rule
=
mainGame
->
cbRule
->
getSelected
();
cscg
.
info
.
rule
=
mainGame
->
cbRule
->
getSelected
();
cscg
.
info
.
mode
=
mainGame
->
cbMatchMode
->
getSelected
();
cscg
.
info
.
mode
=
mainGame
->
cbMatchMode
->
getSelected
();
cscg
.
info
.
start_hand
=
wcstol
(
mainGame
->
ebStartHand
->
getText
(),
nullptr
,
10
);
cscg
.
info
.
start_hand
=
wcstol
(
mainGame
->
ebStartHand
->
getText
(),
nullptr
,
10
);
...
@@ -159,7 +159,7 @@ void DuelClient::ClientEvent(bufferevent *bev, short events, void *ctx) {
...
@@ -159,7 +159,7 @@ void DuelClient::ClientEvent(bufferevent *bev, short events, void *ctx) {
CTOS_JoinGame
csjg
;
CTOS_JoinGame
csjg
;
csjg
.
version
=
PRO_VERSION
;
csjg
.
version
=
PRO_VERSION
;
csjg
.
gameid
=
0
;
csjg
.
gameid
=
0
;
BufferIO
::
Copy
WStr
(
mainGame
->
ebJoinPass
->
getText
(),
csjg
.
pass
,
20
);
BufferIO
::
Copy
CharArray
(
mainGame
->
ebJoinPass
->
getText
(),
csjg
.
pass
);
SendPacketToServer
(
CTOS_JOIN_GAME
,
csjg
);
SendPacketToServer
(
CTOS_JOIN_GAME
,
csjg
);
}
}
bufferevent_enable
(
bev
,
EV_READ
);
bufferevent_enable
(
bev
,
EV_READ
);
...
@@ -649,11 +649,11 @@ void DuelClient::HandleSTOCPacketLan(unsigned char* data, int len) {
...
@@ -649,11 +649,11 @@ void DuelClient::HandleSTOCPacketLan(unsigned char* data, int len) {
mainGame
->
btnSpectatorSwap
->
setVisible
(
true
);
mainGame
->
btnSpectatorSwap
->
setVisible
(
true
);
}
}
if
(
selftype
!=
1
)
{
if
(
selftype
!=
1
)
{
BufferIO
::
CopyW
Str
(
mainGame
->
stHostPrepDuelist
[
0
]
->
getToolTipText
().
c_str
(),
mainGame
->
dInfo
.
hostname
,
20
);
BufferIO
::
CopyW
ideString
(
mainGame
->
stHostPrepDuelist
[
0
]
->
getToolTipText
().
c_str
(),
mainGame
->
dInfo
.
hostname
);
BufferIO
::
CopyW
Str
(
mainGame
->
stHostPrepDuelist
[
1
]
->
getToolTipText
().
c_str
(),
mainGame
->
dInfo
.
clientname
,
20
);
BufferIO
::
CopyW
ideString
(
mainGame
->
stHostPrepDuelist
[
1
]
->
getToolTipText
().
c_str
(),
mainGame
->
dInfo
.
clientname
);
}
else
{
}
else
{
BufferIO
::
CopyW
Str
(
mainGame
->
stHostPrepDuelist
[
1
]
->
getToolTipText
().
c_str
(),
mainGame
->
dInfo
.
hostname
,
20
);
BufferIO
::
CopyW
ideString
(
mainGame
->
stHostPrepDuelist
[
1
]
->
getToolTipText
().
c_str
(),
mainGame
->
dInfo
.
hostname
);
BufferIO
::
CopyW
Str
(
mainGame
->
stHostPrepDuelist
[
0
]
->
getToolTipText
().
c_str
(),
mainGame
->
dInfo
.
clientname
,
20
);
BufferIO
::
CopyW
ideString
(
mainGame
->
stHostPrepDuelist
[
0
]
->
getToolTipText
().
c_str
(),
mainGame
->
dInfo
.
clientname
);
}
}
}
else
{
}
else
{
if
(
selftype
>
3
)
{
if
(
selftype
>
3
)
{
...
@@ -663,15 +663,15 @@ void DuelClient::HandleSTOCPacketLan(unsigned char* data, int len) {
...
@@ -663,15 +663,15 @@ void DuelClient::HandleSTOCPacketLan(unsigned char* data, int len) {
mainGame
->
btnSpectatorSwap
->
setVisible
(
true
);
mainGame
->
btnSpectatorSwap
->
setVisible
(
true
);
}
}
if
(
selftype
>
1
&&
selftype
<
4
)
{
if
(
selftype
>
1
&&
selftype
<
4
)
{
BufferIO
::
CopyW
Str
(
mainGame
->
stHostPrepDuelist
[
2
]
->
getToolTipText
().
c_str
(),
mainGame
->
dInfo
.
hostname
,
20
);
BufferIO
::
CopyW
ideString
(
mainGame
->
stHostPrepDuelist
[
2
]
->
getToolTipText
().
c_str
(),
mainGame
->
dInfo
.
hostname
);
BufferIO
::
CopyW
Str
(
mainGame
->
stHostPrepDuelist
[
3
]
->
getToolTipText
().
c_str
(),
mainGame
->
dInfo
.
hostname_tag
,
20
);
BufferIO
::
CopyW
ideString
(
mainGame
->
stHostPrepDuelist
[
3
]
->
getToolTipText
().
c_str
(),
mainGame
->
dInfo
.
hostname_tag
);
BufferIO
::
CopyW
Str
(
mainGame
->
stHostPrepDuelist
[
0
]
->
getToolTipText
().
c_str
(),
mainGame
->
dInfo
.
clientname
,
20
);
BufferIO
::
CopyW
ideString
(
mainGame
->
stHostPrepDuelist
[
0
]
->
getToolTipText
().
c_str
(),
mainGame
->
dInfo
.
clientname
);
BufferIO
::
CopyW
Str
(
mainGame
->
stHostPrepDuelist
[
1
]
->
getToolTipText
().
c_str
(),
mainGame
->
dInfo
.
clientname_tag
,
20
);
BufferIO
::
CopyW
ideString
(
mainGame
->
stHostPrepDuelist
[
1
]
->
getToolTipText
().
c_str
(),
mainGame
->
dInfo
.
clientname_tag
);
}
else
{
}
else
{
BufferIO
::
CopyW
Str
(
mainGame
->
stHostPrepDuelist
[
0
]
->
getToolTipText
().
c_str
(),
mainGame
->
dInfo
.
hostname
,
20
);
BufferIO
::
CopyW
ideString
(
mainGame
->
stHostPrepDuelist
[
0
]
->
getToolTipText
().
c_str
(),
mainGame
->
dInfo
.
hostname
);
BufferIO
::
CopyW
Str
(
mainGame
->
stHostPrepDuelist
[
1
]
->
getToolTipText
().
c_str
(),
mainGame
->
dInfo
.
hostname_tag
,
20
);
BufferIO
::
CopyW
ideString
(
mainGame
->
stHostPrepDuelist
[
1
]
->
getToolTipText
().
c_str
(),
mainGame
->
dInfo
.
hostname_tag
);
BufferIO
::
CopyW
Str
(
mainGame
->
stHostPrepDuelist
[
2
]
->
getToolTipText
().
c_str
(),
mainGame
->
dInfo
.
clientname
,
20
);
BufferIO
::
CopyW
ideString
(
mainGame
->
stHostPrepDuelist
[
2
]
->
getToolTipText
().
c_str
(),
mainGame
->
dInfo
.
clientname
);
BufferIO
::
CopyW
Str
(
mainGame
->
stHostPrepDuelist
[
3
]
->
getToolTipText
().
c_str
(),
mainGame
->
dInfo
.
clientname_tag
,
20
);
BufferIO
::
CopyW
ideString
(
mainGame
->
stHostPrepDuelist
[
3
]
->
getToolTipText
().
c_str
(),
mainGame
->
dInfo
.
clientname_tag
);
}
}
mainGame
->
dInfo
.
tag_player
[
0
]
=
false
;
mainGame
->
dInfo
.
tag_player
[
0
]
=
false
;
mainGame
->
dInfo
.
tag_player
[
1
]
=
false
;
mainGame
->
dInfo
.
tag_player
[
1
]
=
false
;
...
@@ -810,7 +810,7 @@ void DuelClient::HandleSTOCPacketLan(unsigned char* data, int len) {
...
@@ -810,7 +810,7 @@ void DuelClient::HandleSTOCPacketLan(unsigned char* data, int len) {
}
}
// UTF-16 to wchar_t
// UTF-16 to wchar_t
wchar_t
msg
[
LEN_CHAT_MSG
];
wchar_t
msg
[
LEN_CHAT_MSG
];
BufferIO
::
Copy
WStr
(
chat_msg
,
msg
,
LEN_CHAT_MSG
);
BufferIO
::
Copy
CharArray
(
chat_msg
,
msg
);
mainGame
->
gMutex
.
lock
();
mainGame
->
gMutex
.
lock
();
mainGame
->
AddChatMsg
(
msg
,
player
,
play_sound
);
mainGame
->
AddChatMsg
(
msg
,
player
,
play_sound
);
mainGame
->
gMutex
.
unlock
();
mainGame
->
gMutex
.
unlock
();
...
@@ -827,21 +827,21 @@ void DuelClient::HandleSTOCPacketLan(unsigned char* data, int len) {
...
@@ -827,21 +827,21 @@ void DuelClient::HandleSTOCPacketLan(unsigned char* data, int len) {
break
;
break
;
wchar_t
name
[
20
];
wchar_t
name
[
20
];
BufferIO
::
NullTerminate
(
pkt
->
name
);
BufferIO
::
NullTerminate
(
pkt
->
name
);
BufferIO
::
Copy
WStr
(
pkt
->
name
,
name
,
20
);
BufferIO
::
Copy
CharArray
(
pkt
->
name
,
name
);
if
(
mainGame
->
dInfo
.
isTag
)
{
if
(
mainGame
->
dInfo
.
isTag
)
{
if
(
pkt
->
pos
==
0
)
if
(
pkt
->
pos
==
0
)
BufferIO
::
Copy
WStr
(
pkt
->
name
,
mainGame
->
dInfo
.
hostname
,
20
);
BufferIO
::
Copy
CharArray
(
pkt
->
name
,
mainGame
->
dInfo
.
hostname
);
else
if
(
pkt
->
pos
==
1
)
else
if
(
pkt
->
pos
==
1
)
BufferIO
::
Copy
WStr
(
pkt
->
name
,
mainGame
->
dInfo
.
hostname_tag
,
20
);
BufferIO
::
Copy
CharArray
(
pkt
->
name
,
mainGame
->
dInfo
.
hostname_tag
);
else
if
(
pkt
->
pos
==
2
)
else
if
(
pkt
->
pos
==
2
)
BufferIO
::
Copy
WStr
(
pkt
->
name
,
mainGame
->
dInfo
.
clientname
,
20
);
BufferIO
::
Copy
CharArray
(
pkt
->
name
,
mainGame
->
dInfo
.
clientname
);
else
if
(
pkt
->
pos
==
3
)
else
if
(
pkt
->
pos
==
3
)
BufferIO
::
Copy
WStr
(
pkt
->
name
,
mainGame
->
dInfo
.
clientname_tag
,
20
);
BufferIO
::
Copy
CharArray
(
pkt
->
name
,
mainGame
->
dInfo
.
clientname_tag
);
}
else
{
}
else
{
if
(
pkt
->
pos
==
0
)
if
(
pkt
->
pos
==
0
)
BufferIO
::
Copy
WStr
(
pkt
->
name
,
mainGame
->
dInfo
.
hostname
,
20
);
BufferIO
::
Copy
CharArray
(
pkt
->
name
,
mainGame
->
dInfo
.
hostname
);
else
if
(
pkt
->
pos
==
1
)
else
if
(
pkt
->
pos
==
1
)
BufferIO
::
Copy
WStr
(
pkt
->
name
,
mainGame
->
dInfo
.
clientname
,
20
);
BufferIO
::
Copy
CharArray
(
pkt
->
name
,
mainGame
->
dInfo
.
clientname
);
}
}
mainGame
->
gMutex
.
lock
();
mainGame
->
gMutex
.
lock
();
if
(
mainGame
->
gameConf
.
hide_player_name
)
if
(
mainGame
->
gameConf
.
hide_player_name
)
...
@@ -876,13 +876,13 @@ void DuelClient::HandleSTOCPacketLan(unsigned char* data, int len) {
...
@@ -876,13 +876,13 @@ void DuelClient::HandleSTOCPacketLan(unsigned char* data, int len) {
mainGame
->
stHostPrepDuelist
[
pos
]
->
setToolTipText
(
L""
);
mainGame
->
stHostPrepDuelist
[
pos
]
->
setToolTipText
(
L""
);
mainGame
->
chkHostPrepReady
[
pos
]
->
setChecked
(
false
);
mainGame
->
chkHostPrepReady
[
pos
]
->
setChecked
(
false
);
if
(
pos
==
0
)
if
(
pos
==
0
)
BufferIO
::
Copy
WStr
(
prename
,
mainGame
->
dInfo
.
hostname
,
20
);
BufferIO
::
Copy
CharArray
(
prename
,
mainGame
->
dInfo
.
hostname
);
else
if
(
pos
==
1
)
else
if
(
pos
==
1
)
BufferIO
::
Copy
WStr
(
prename
,
mainGame
->
dInfo
.
hostname_tag
,
20
);
BufferIO
::
Copy
CharArray
(
prename
,
mainGame
->
dInfo
.
hostname_tag
);
else
if
(
pos
==
2
)
else
if
(
pos
==
2
)
BufferIO
::
Copy
WStr
(
prename
,
mainGame
->
dInfo
.
clientname
,
20
);
BufferIO
::
Copy
CharArray
(
prename
,
mainGame
->
dInfo
.
clientname
);
else
if
(
pos
==
3
)
else
if
(
pos
==
3
)
BufferIO
::
Copy
WStr
(
prename
,
mainGame
->
dInfo
.
clientname_tag
,
20
);
BufferIO
::
Copy
CharArray
(
prename
,
mainGame
->
dInfo
.
clientname_tag
);
}
else
if
(
state
==
PLAYERCHANGE_READY
)
{
}
else
if
(
state
==
PLAYERCHANGE_READY
)
{
mainGame
->
chkHostPrepReady
[
pos
]
->
setChecked
(
true
);
mainGame
->
chkHostPrepReady
[
pos
]
->
setChecked
(
true
);
if
(
pos
==
selftype
)
{
if
(
pos
==
selftype
)
{
...
@@ -4153,7 +4153,7 @@ void DuelClient::BroadcastReply(evutil_socket_t fd, short events, void * arg) {
...
@@ -4153,7 +4153,7 @@ void DuelClient::BroadcastReply(evutil_socket_t fd, short events, void * arg) {
else
hoststr
.
append
(
dataManager
.
GetSysString
(
1248
));
else
hoststr
.
append
(
dataManager
.
GetSysString
(
1248
));
hoststr
.
append
(
L"]"
);
hoststr
.
append
(
L"]"
);
wchar_t
gamename
[
20
];
wchar_t
gamename
[
20
];
BufferIO
::
Copy
WStr
(
pHP
->
name
,
gamename
,
20
);
BufferIO
::
Copy
CharArray
(
pHP
->
name
,
gamename
);
hoststr
.
append
(
gamename
);
hoststr
.
append
(
gamename
);
mainGame
->
lstHostList
->
addItem
(
hoststr
.
c_str
());
mainGame
->
lstHostList
->
addItem
(
hoststr
.
c_str
());
mainGame
->
gMutex
.
unlock
();
mainGame
->
gMutex
.
unlock
();
...
...
gframe/event_handler.cpp
View file @
51929625
...
@@ -2028,7 +2028,7 @@ bool ClientField::OnCommonEvent(const irr::SEvent& event) {
...
@@ -2028,7 +2028,7 @@ bool ClientField::OnCommonEvent(const irr::SEvent& event) {
const
wchar_t
*
input
=
mainGame
->
ebChatInput
->
getText
();
const
wchar_t
*
input
=
mainGame
->
ebChatInput
->
getText
();
if
(
input
[
0
])
{
if
(
input
[
0
])
{
uint16_t
msgbuf
[
LEN_CHAT_MSG
];
uint16_t
msgbuf
[
LEN_CHAT_MSG
];
int
len
=
BufferIO
::
Copy
WStr
(
input
,
msgbuf
,
LEN_CHAT_MSG
);
int
len
=
BufferIO
::
Copy
CharArray
(
input
,
msgbuf
);
DuelClient
::
SendBufferToServer
(
CTOS_CHAT
,
msgbuf
,
(
len
+
1
)
*
sizeof
(
uint16_t
));
DuelClient
::
SendBufferToServer
(
CTOS_CHAT
,
msgbuf
,
(
len
+
1
)
*
sizeof
(
uint16_t
));
mainGame
->
ebChatInput
->
setText
(
L""
);
mainGame
->
ebChatInput
->
setText
(
L""
);
return
true
;
return
true
;
...
...
gframe/myfilesystem.h
View file @
51929625
...
@@ -70,9 +70,8 @@ public:
...
@@ -70,9 +70,8 @@ public:
static
bool
DeleteDir
(
const
wchar_t
*
wdir
)
{
static
bool
DeleteDir
(
const
wchar_t
*
wdir
)
{
wchar_t
pdir
[
256
];
wchar_t
pdir
[
256
];
int
len
=
BufferIO
::
CopyWStr
(
wdir
,
pdir
,
sizeof
pdir
/
sizeof
pdir
[
0
]);
BufferIO
::
CopyWideString
(
wdir
,
pdir
);
pdir
[
len
+
1
]
=
0
;
SHFILEOPSTRUCTW
lpFileOp
{};
SHFILEOPSTRUCTW
lpFileOp
;
lpFileOp
.
hwnd
=
NULL
;
lpFileOp
.
hwnd
=
NULL
;
lpFileOp
.
wFunc
=
FO_DELETE
;
lpFileOp
.
wFunc
=
FO_DELETE
;
lpFileOp
.
pFrom
=
pdir
;
lpFileOp
.
pFrom
=
pdir
;
...
...
gframe/netserver.cpp
View file @
51929625
...
@@ -97,7 +97,7 @@ void NetServer::BroadcastEvent(evutil_socket_t fd, short events, void* arg) {
...
@@ -97,7 +97,7 @@ void NetServer::BroadcastEvent(evutil_socket_t fd, short events, void* arg) {
hp
.
port
=
server_port
;
hp
.
port
=
server_port
;
hp
.
version
=
PRO_VERSION
;
hp
.
version
=
PRO_VERSION
;
hp
.
host
=
duel_mode
->
host_info
;
hp
.
host
=
duel_mode
->
host_info
;
BufferIO
::
Copy
WStr
(
duel_mode
->
name
,
hp
.
name
,
20
);
BufferIO
::
Copy
CharArray
(
duel_mode
->
name
,
hp
.
name
);
sendto
(
fd
,
(
const
char
*
)
&
hp
,
sizeof
(
HostPacket
),
0
,
(
sockaddr
*
)
&
sockTo
,
sizeof
(
sockTo
));
sendto
(
fd
,
(
const
char
*
)
&
hp
,
sizeof
(
HostPacket
),
0
,
(
sockaddr
*
)
&
sockTo
,
sizeof
(
sockTo
));
}
}
}
}
...
@@ -250,7 +250,7 @@ void NetServer::HandleCTOSPacket(DuelPlayer* dp, unsigned char* data, int len) {
...
@@ -250,7 +250,7 @@ void NetServer::HandleCTOSPacket(DuelPlayer* dp, unsigned char* data, int len) {
std
::
memcpy
(
&
packet
,
pdata
,
sizeof
packet
);
std
::
memcpy
(
&
packet
,
pdata
,
sizeof
packet
);
auto
pkt
=
&
packet
;
auto
pkt
=
&
packet
;
BufferIO
::
NullTerminate
(
pkt
->
name
);
BufferIO
::
NullTerminate
(
pkt
->
name
);
BufferIO
::
Copy
WStr
(
pkt
->
name
,
dp
->
name
,
20
);
BufferIO
::
Copy
CharArray
(
pkt
->
name
,
dp
->
name
);
break
;
break
;
}
}
case
CTOS_CREATE_GAME
:
{
case
CTOS_CREATE_GAME
:
{
...
@@ -287,8 +287,8 @@ void NetServer::HandleCTOSPacket(DuelPlayer* dp, unsigned char* data, int len) {
...
@@ -287,8 +287,8 @@ void NetServer::HandleCTOSPacket(DuelPlayer* dp, unsigned char* data, int len) {
duel_mode
->
host_info
=
pkt
->
info
;
duel_mode
->
host_info
=
pkt
->
info
;
BufferIO
::
NullTerminate
(
pkt
->
name
);
BufferIO
::
NullTerminate
(
pkt
->
name
);
BufferIO
::
NullTerminate
(
pkt
->
pass
);
BufferIO
::
NullTerminate
(
pkt
->
pass
);
BufferIO
::
Copy
WStr
(
pkt
->
name
,
duel_mode
->
name
,
20
);
BufferIO
::
Copy
CharArray
(
pkt
->
name
,
duel_mode
->
name
);
BufferIO
::
Copy
WStr
(
pkt
->
pass
,
duel_mode
->
pass
,
20
);
BufferIO
::
Copy
CharArray
(
pkt
->
pass
,
duel_mode
->
pass
);
duel_mode
->
JoinGame
(
dp
,
0
,
true
);
duel_mode
->
JoinGame
(
dp
,
0
,
true
);
StartBroadcast
();
StartBroadcast
();
break
;
break
;
...
...
gframe/single_duel.cpp
View file @
51929625
...
@@ -45,7 +45,7 @@ void SingleDuel::JoinGame(DuelPlayer* dp, unsigned char* pdata, bool is_creater)
...
@@ -45,7 +45,7 @@ void SingleDuel::JoinGame(DuelPlayer* dp, unsigned char* pdata, bool is_creater)
}
}
wchar_t
jpass
[
20
];
wchar_t
jpass
[
20
];
BufferIO
::
NullTerminate
(
pkt
->
pass
);
BufferIO
::
NullTerminate
(
pkt
->
pass
);
BufferIO
::
Copy
WStr
(
pkt
->
pass
,
jpass
,
20
);
BufferIO
::
Copy
CharArray
(
pkt
->
pass
,
jpass
);
if
(
wcscmp
(
jpass
,
pass
))
{
if
(
wcscmp
(
jpass
,
pass
))
{
STOC_ErrorMsg
scem
;
STOC_ErrorMsg
scem
;
scem
.
msg
=
ERRMSG_JOINERROR
;
scem
.
msg
=
ERRMSG_JOINERROR
;
...
@@ -63,7 +63,7 @@ void SingleDuel::JoinGame(DuelPlayer* dp, unsigned char* pdata, bool is_creater)
...
@@ -63,7 +63,7 @@ void SingleDuel::JoinGame(DuelPlayer* dp, unsigned char* pdata, bool is_creater)
sctc
.
type
=
(
host_player
==
dp
)
?
0x10
:
0
;
sctc
.
type
=
(
host_player
==
dp
)
?
0x10
:
0
;
if
(
!
players
[
0
]
||
!
players
[
1
])
{
if
(
!
players
[
0
]
||
!
players
[
1
])
{
STOC_HS_PlayerEnter
scpe
;
STOC_HS_PlayerEnter
scpe
;
BufferIO
::
Copy
WStr
(
dp
->
name
,
scpe
.
name
,
20
);
BufferIO
::
Copy
CharArray
(
dp
->
name
,
scpe
.
name
);
if
(
!
players
[
0
])
if
(
!
players
[
0
])
scpe
.
pos
=
0
;
scpe
.
pos
=
0
;
else
else
...
@@ -102,7 +102,7 @@ void SingleDuel::JoinGame(DuelPlayer* dp, unsigned char* pdata, bool is_creater)
...
@@ -102,7 +102,7 @@ void SingleDuel::JoinGame(DuelPlayer* dp, unsigned char* pdata, bool is_creater)
NetServer
::
SendPacketToPlayer
(
dp
,
STOC_TYPE_CHANGE
,
sctc
);
NetServer
::
SendPacketToPlayer
(
dp
,
STOC_TYPE_CHANGE
,
sctc
);
if
(
players
[
0
])
{
if
(
players
[
0
])
{
STOC_HS_PlayerEnter
scpe
;
STOC_HS_PlayerEnter
scpe
;
BufferIO
::
Copy
WStr
(
players
[
0
]
->
name
,
scpe
.
name
,
20
);
BufferIO
::
Copy
CharArray
(
players
[
0
]
->
name
,
scpe
.
name
);
scpe
.
pos
=
0
;
scpe
.
pos
=
0
;
NetServer
::
SendPacketToPlayer
(
dp
,
STOC_HS_PLAYER_ENTER
,
scpe
);
NetServer
::
SendPacketToPlayer
(
dp
,
STOC_HS_PLAYER_ENTER
,
scpe
);
if
(
ready
[
0
])
{
if
(
ready
[
0
])
{
...
@@ -113,7 +113,7 @@ void SingleDuel::JoinGame(DuelPlayer* dp, unsigned char* pdata, bool is_creater)
...
@@ -113,7 +113,7 @@ void SingleDuel::JoinGame(DuelPlayer* dp, unsigned char* pdata, bool is_creater)
}
}
if
(
players
[
1
])
{
if
(
players
[
1
])
{
STOC_HS_PlayerEnter
scpe
;
STOC_HS_PlayerEnter
scpe
;
BufferIO
::
Copy
WStr
(
players
[
1
]
->
name
,
scpe
.
name
,
20
);
BufferIO
::
Copy
CharArray
(
players
[
1
]
->
name
,
scpe
.
name
);
scpe
.
pos
=
1
;
scpe
.
pos
=
1
;
NetServer
::
SendPacketToPlayer
(
dp
,
STOC_HS_PLAYER_ENTER
,
scpe
);
NetServer
::
SendPacketToPlayer
(
dp
,
STOC_HS_PLAYER_ENTER
,
scpe
);
if
(
ready
[
1
])
{
if
(
ready
[
1
])
{
...
@@ -191,7 +191,7 @@ void SingleDuel::ToDuelist(DuelPlayer* dp) {
...
@@ -191,7 +191,7 @@ void SingleDuel::ToDuelist(DuelPlayer* dp) {
return
;
return
;
observers
.
erase
(
dp
);
observers
.
erase
(
dp
);
STOC_HS_PlayerEnter
scpe
;
STOC_HS_PlayerEnter
scpe
;
BufferIO
::
Copy
WStr
(
dp
->
name
,
scpe
.
name
,
20
);
BufferIO
::
Copy
CharArray
(
dp
->
name
,
scpe
.
name
);
if
(
!
players
[
0
])
{
if
(
!
players
[
0
])
{
players
[
0
]
=
dp
;
players
[
0
]
=
dp
;
dp
->
type
=
NETPLAYER_TYPE_PLAYER1
;
dp
->
type
=
NETPLAYER_TYPE_PLAYER1
;
...
...
gframe/single_mode.cpp
View file @
51929625
...
@@ -49,7 +49,7 @@ int SingleMode::SinglePlayThread() {
...
@@ -49,7 +49,7 @@ int SingleMode::SinglePlayThread() {
mainGame
->
dInfo
.
start_lp
=
start_lp
;
mainGame
->
dInfo
.
start_lp
=
start_lp
;
myswprintf
(
mainGame
->
dInfo
.
strLP
[
0
],
L"%d"
,
mainGame
->
dInfo
.
lp
[
0
]);
myswprintf
(
mainGame
->
dInfo
.
strLP
[
0
],
L"%d"
,
mainGame
->
dInfo
.
lp
[
0
]);
myswprintf
(
mainGame
->
dInfo
.
strLP
[
1
],
L"%d"
,
mainGame
->
dInfo
.
lp
[
1
]);
myswprintf
(
mainGame
->
dInfo
.
strLP
[
1
],
L"%d"
,
mainGame
->
dInfo
.
lp
[
1
]);
BufferIO
::
CopyW
Str
(
mainGame
->
ebNickName
->
getText
(),
mainGame
->
dInfo
.
hostname
,
20
);
BufferIO
::
CopyW
ideString
(
mainGame
->
ebNickName
->
getText
(),
mainGame
->
dInfo
.
hostname
);
mainGame
->
dInfo
.
clientname
[
0
]
=
0
;
mainGame
->
dInfo
.
clientname
[
0
]
=
0
;
mainGame
->
dInfo
.
player_type
=
0
;
mainGame
->
dInfo
.
player_type
=
0
;
mainGame
->
dInfo
.
turn
=
0
;
mainGame
->
dInfo
.
turn
=
0
;
...
@@ -109,10 +109,10 @@ int SingleMode::SinglePlayThread() {
...
@@ -109,10 +109,10 @@ int SingleMode::SinglePlayThread() {
is_continuing
=
SinglePlayAnalyze
(
engineBuffer
.
data
(),
len
);
is_continuing
=
SinglePlayAnalyze
(
engineBuffer
.
data
(),
len
);
last_replay
.
BeginRecord
();
last_replay
.
BeginRecord
();
last_replay
.
WriteHeader
(
rh
);
last_replay
.
WriteHeader
(
rh
);
u
nsigned
shor
t
buffer
[
20
];
u
int16_
t
buffer
[
20
];
BufferIO
::
Copy
WStr
(
mainGame
->
dInfo
.
hostname
,
buffer
,
20
);
BufferIO
::
Copy
CharArray
(
mainGame
->
dInfo
.
hostname
,
buffer
);
last_replay
.
WriteData
(
buffer
,
40
,
false
);
last_replay
.
WriteData
(
buffer
,
40
,
false
);
BufferIO
::
Copy
WStr
(
mainGame
->
dInfo
.
clientname
,
buffer
,
20
);
BufferIO
::
Copy
CharArray
(
mainGame
->
dInfo
.
clientname
,
buffer
);
last_replay
.
WriteData
(
buffer
,
40
,
false
);
last_replay
.
WriteData
(
buffer
,
40
,
false
);
last_replay
.
WriteInt32
(
start_lp
,
false
);
last_replay
.
WriteInt32
(
start_lp
,
false
);
last_replay
.
WriteInt32
(
start_hand
,
false
);
last_replay
.
WriteInt32
(
start_hand
,
false
);
...
@@ -747,14 +747,14 @@ bool SingleMode::SinglePlayAnalyze(unsigned char* msg, unsigned int len) {
...
@@ -747,14 +747,14 @@ bool SingleMode::SinglePlayAnalyze(unsigned char* msg, unsigned int len) {
break
;
break
;
}
}
case
MSG_AI_NAME
:
{
case
MSG_AI_NAME
:
{
char
namebuf
[
128
];
char
namebuf
[
128
]
{}
;
wchar_t
wname
[
128
]
;
wchar_t
wname
[
20
]{}
;
int
len
=
BufferIO
::
ReadInt16
(
pbuf
);
int
len
=
BufferIO
::
ReadInt16
(
pbuf
);
auto
begin
=
pbuf
;
auto
begin
=
pbuf
;
pbuf
+=
len
+
1
;
pbuf
+=
len
+
1
;
std
::
memcpy
(
namebuf
,
begin
,
len
+
1
);
std
::
memcpy
(
namebuf
,
begin
,
len
+
1
);
BufferIO
::
DecodeUTF8
(
namebuf
,
wname
);
BufferIO
::
DecodeUTF8
(
namebuf
,
wname
);
BufferIO
::
Copy
WStr
(
wname
,
mainGame
->
dInfo
.
clientname
,
20
);
BufferIO
::
Copy
CharArray
(
wname
,
mainGame
->
dInfo
.
clientname
);
break
;
break
;
}
}
case
MSG_SHOW_HINT
:
{
case
MSG_SHOW_HINT
:
{
...
...
gframe/tag_duel.cpp
View file @
51929625
...
@@ -49,7 +49,7 @@ void TagDuel::JoinGame(DuelPlayer* dp, unsigned char* pdata, bool is_creater) {
...
@@ -49,7 +49,7 @@ void TagDuel::JoinGame(DuelPlayer* dp, unsigned char* pdata, bool is_creater) {
}
}
wchar_t
jpass
[
20
];
wchar_t
jpass
[
20
];
BufferIO
::
NullTerminate
(
pkt
->
pass
);
BufferIO
::
NullTerminate
(
pkt
->
pass
);
BufferIO
::
Copy
WStr
(
pkt
->
pass
,
jpass
,
20
);
BufferIO
::
Copy
CharArray
(
pkt
->
pass
,
jpass
);
if
(
wcscmp
(
jpass
,
pass
))
{
if
(
wcscmp
(
jpass
,
pass
))
{
STOC_ErrorMsg
scem
;
STOC_ErrorMsg
scem
;
scem
.
msg
=
ERRMSG_JOINERROR
;
scem
.
msg
=
ERRMSG_JOINERROR
;
...
@@ -67,7 +67,7 @@ void TagDuel::JoinGame(DuelPlayer* dp, unsigned char* pdata, bool is_creater) {
...
@@ -67,7 +67,7 @@ void TagDuel::JoinGame(DuelPlayer* dp, unsigned char* pdata, bool is_creater) {
sctc
.
type
=
(
host_player
==
dp
)
?
0x10
:
0
;
sctc
.
type
=
(
host_player
==
dp
)
?
0x10
:
0
;
if
(
!
players
[
0
]
||
!
players
[
1
]
||
!
players
[
2
]
||
!
players
[
3
])
{
if
(
!
players
[
0
]
||
!
players
[
1
]
||
!
players
[
2
]
||
!
players
[
3
])
{
STOC_HS_PlayerEnter
scpe
;
STOC_HS_PlayerEnter
scpe
;
BufferIO
::
Copy
WStr
(
dp
->
name
,
scpe
.
name
,
20
);
BufferIO
::
Copy
CharArray
(
dp
->
name
,
scpe
.
name
);
if
(
!
players
[
0
])
if
(
!
players
[
0
])
scpe
.
pos
=
0
;
scpe
.
pos
=
0
;
else
if
(
!
players
[
1
])
else
if
(
!
players
[
1
])
...
@@ -101,7 +101,7 @@ void TagDuel::JoinGame(DuelPlayer* dp, unsigned char* pdata, bool is_creater) {
...
@@ -101,7 +101,7 @@ void TagDuel::JoinGame(DuelPlayer* dp, unsigned char* pdata, bool is_creater) {
for
(
int
i
=
0
;
i
<
4
;
++
i
)
for
(
int
i
=
0
;
i
<
4
;
++
i
)
if
(
players
[
i
])
{
if
(
players
[
i
])
{
STOC_HS_PlayerEnter
scpe
;
STOC_HS_PlayerEnter
scpe
;
BufferIO
::
Copy
WStr
(
players
[
i
]
->
name
,
scpe
.
name
,
20
);
BufferIO
::
Copy
CharArray
(
players
[
i
]
->
name
,
scpe
.
name
);
scpe
.
pos
=
i
;
scpe
.
pos
=
i
;
NetServer
::
SendPacketToPlayer
(
dp
,
STOC_HS_PLAYER_ENTER
,
scpe
);
NetServer
::
SendPacketToPlayer
(
dp
,
STOC_HS_PLAYER_ENTER
,
scpe
);
if
(
ready
[
i
])
{
if
(
ready
[
i
])
{
...
@@ -157,7 +157,7 @@ void TagDuel::ToDuelist(DuelPlayer* dp) {
...
@@ -157,7 +157,7 @@ void TagDuel::ToDuelist(DuelPlayer* dp) {
if
(
dp
->
type
==
NETPLAYER_TYPE_OBSERVER
)
{
if
(
dp
->
type
==
NETPLAYER_TYPE_OBSERVER
)
{
observers
.
erase
(
dp
);
observers
.
erase
(
dp
);
STOC_HS_PlayerEnter
scpe
;
STOC_HS_PlayerEnter
scpe
;
BufferIO
::
Copy
WStr
(
dp
->
name
,
scpe
.
name
,
20
);
BufferIO
::
Copy
CharArray
(
dp
->
name
,
scpe
.
name
);
if
(
!
players
[
0
])
if
(
!
players
[
0
])
dp
->
type
=
0
;
dp
->
type
=
0
;
else
if
(
!
players
[
1
])
else
if
(
!
players
[
1
])
...
...
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