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
4939dcf0
Commit
4939dcf0
authored
Nov 23, 2024
by
wind2009
Browse files
Options
Browse Files
Download
Plain Diff
Merge remote-tracking branch 'upstream/master' into develop
parents
f98d9e50
b7541e82
Changes
16
Hide whitespace changes
Inline
Side-by-side
Showing
16 changed files
with
108 additions
and
88 deletions
+108
-88
gframe/bufferio.h
gframe/bufferio.h
+12
-2
gframe/config.h
gframe/config.h
+1
-1
gframe/data_manager.cpp
gframe/data_manager.cpp
+16
-16
gframe/deck_manager.cpp
gframe/deck_manager.cpp
+2
-2
gframe/drawing.cpp
gframe/drawing.cpp
+2
-2
gframe/duelclient.cpp
gframe/duelclient.cpp
+31
-31
gframe/event_handler.cpp
gframe/event_handler.cpp
+1
-1
gframe/game.cpp
gframe/game.cpp
+6
-5
gframe/game.h
gframe/game.h
+4
-0
gframe/gframe.cpp
gframe/gframe.cpp
+1
-1
gframe/menu_handler.cpp
gframe/menu_handler.cpp
+1
-1
gframe/myfilesystem.h
gframe/myfilesystem.h
+11
-6
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 @
4939dcf0
...
@@ -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,8 +56,12 @@ public:
...
@@ -50,8 +56,12 @@ 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
,
wchar_t
(
&
dst
)[
N
])
{
static
void
CopyString
(
const
char
*
src
,
char
(
&
dst
)[
N
])
{
dst
[
0
]
=
0
;
dst
[
0
]
=
0
;
std
::
strncat
(
dst
,
src
,
N
-
1
);
std
::
strncat
(
dst
,
src
,
N
-
1
);
}
}
...
...
gframe/config.h
View file @
4939dcf0
...
@@ -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/data_manager.cpp
View file @
4939dcf0
...
@@ -111,23 +111,23 @@ bool DataManager::LoadStrings(const char* file) {
...
@@ -111,23 +111,23 @@ bool DataManager::LoadStrings(const char* file) {
FILE
*
fp
=
fopen
(
file
,
"r"
);
FILE
*
fp
=
fopen
(
file
,
"r"
);
if
(
!
fp
)
if
(
!
fp
)
return
false
;
return
false
;
char
linebuf
[
256
]
;
char
linebuf
[
TEXT_LINE_SIZE
]{}
;
while
(
fgets
(
linebuf
,
256
,
fp
))
{
while
(
fgets
(
linebuf
,
sizeof
linebuf
,
fp
))
{
ReadStringConfLine
(
linebuf
);
ReadStringConfLine
(
linebuf
);
}
}
fclose
(
fp
);
fclose
(
fp
);
return
true
;
return
true
;
}
}
bool
DataManager
::
LoadStrings
(
IReadFile
*
reader
)
{
bool
DataManager
::
LoadStrings
(
IReadFile
*
reader
)
{
char
ch
[
2
]
=
" "
;
char
ch
{}
;
char
linebuf
[
256
]
=
""
;
std
::
string
linebuf
;
while
(
reader
->
read
(
&
ch
[
0
]
,
1
))
{
while
(
reader
->
read
(
&
ch
,
1
))
{
if
(
ch
[
0
]
==
'\0'
)
if
(
ch
==
'\0'
)
break
;
break
;
std
::
strcat
(
linebuf
,
ch
);
linebuf
.
push_back
(
ch
);
if
(
ch
[
0
]
==
'\n'
)
{
if
(
ch
==
'\n'
||
linebuf
.
size
()
>=
TEXT_LINE_SIZE
-
1
)
{
ReadStringConfLine
(
linebuf
);
ReadStringConfLine
(
linebuf
.
data
()
);
linebuf
[
0
]
=
'\0'
;
linebuf
.
clear
()
;
}
}
}
}
reader
->
drop
();
reader
->
drop
();
...
@@ -136,7 +136,7 @@ bool DataManager::LoadStrings(IReadFile* reader) {
...
@@ -136,7 +136,7 @@ bool DataManager::LoadStrings(IReadFile* reader) {
void
DataManager
::
ReadStringConfLine
(
const
char
*
linebuf
)
{
void
DataManager
::
ReadStringConfLine
(
const
char
*
linebuf
)
{
if
(
linebuf
[
0
]
!=
'!'
)
if
(
linebuf
[
0
]
!=
'!'
)
return
;
return
;
char
strbuf
[
256
]{};
char
strbuf
[
TEXT_LINE_SIZE
]{};
int
value
{};
int
value
{};
wchar_t
strBuffer
[
4096
]{};
wchar_t
strBuffer
[
4096
]{};
if
(
sscanf
(
linebuf
,
"!%63s"
,
strbuf
)
!=
1
)
if
(
sscanf
(
linebuf
,
"!%63s"
,
strbuf
)
!=
1
)
...
@@ -414,16 +414,16 @@ byte* DataManager::ScriptReader(const char* script_name, int* slen) {
...
@@ -414,16 +414,16 @@ byte* DataManager::ScriptReader(const char* script_name, int* slen) {
#else
#else
IReadFile
*
reader
=
FileSystem
->
createAndOpenFile
(
script_name
);
IReadFile
*
reader
=
FileSystem
->
createAndOpenFile
(
script_name
);
#endif
#endif
if
(
reader
==
NULL
)
if
(
!
reader
)
return
0
;
return
nullptr
;
size_t
size
=
reader
->
getSize
();
size_t
size
=
reader
->
getSize
();
if
(
size
>
sizeof
(
scriptBuffer
)
)
{
if
(
size
>
sizeof
scriptBuffer
)
{
reader
->
drop
();
reader
->
drop
();
return
0
;
return
nullptr
;
}
}
reader
->
read
(
scriptBuffer
,
size
);
reader
->
read
(
scriptBuffer
,
size
);
reader
->
drop
();
reader
->
drop
();
*
slen
=
size
;
*
slen
=
(
int
)
size
;
return
scriptBuffer
;
return
scriptBuffer
;
}
}
...
...
gframe/deck_manager.cpp
View file @
4939dcf0
...
@@ -269,7 +269,7 @@ FILE* DeckManager::OpenDeckFile(const wchar_t* file, const char* mode) {
...
@@ -269,7 +269,7 @@ FILE* DeckManager::OpenDeckFile(const wchar_t* file, const char* mode) {
return
fp
;
return
fp
;
}
}
IReadFile
*
DeckManager
::
OpenDeckReader
(
const
wchar_t
*
file
)
{
IReadFile
*
DeckManager
::
OpenDeckReader
(
const
wchar_t
*
file
)
{
#ifdef WIN32
#ifdef
_
WIN32
IReadFile
*
reader
=
dataManager
.
FileSystem
->
createAndOpenFile
(
file
);
IReadFile
*
reader
=
dataManager
.
FileSystem
->
createAndOpenFile
(
file
);
#else
#else
char
file2
[
256
];
char
file2
[
256
];
...
@@ -333,7 +333,7 @@ bool DeckManager::SaveDeck(Deck& deck, const wchar_t* file) {
...
@@ -333,7 +333,7 @@ bool DeckManager::SaveDeck(Deck& deck, const wchar_t* file) {
return
true
;
return
true
;
}
}
bool
DeckManager
::
DeleteDeck
(
const
wchar_t
*
file
)
{
bool
DeckManager
::
DeleteDeck
(
const
wchar_t
*
file
)
{
#ifdef WIN32
#ifdef
_
WIN32
BOOL
result
=
DeleteFileW
(
file
);
BOOL
result
=
DeleteFileW
(
file
);
return
!!
result
;
return
!!
result
;
#else
#else
...
...
gframe/drawing.cpp
View file @
4939dcf0
...
@@ -412,8 +412,8 @@ void Game::DrawCard(ClientCard* pcard) {
...
@@ -412,8 +412,8 @@ void Game::DrawCard(ClientCard* pcard) {
}
}
}
}
template
<
typename
T
>
template
<
typename
T
>
inline
void
DrawShadowText
(
irr
::
gui
::
CGUITTFont
*
font
,
const
T
&
text
,
const
core
::
rect
<
s32
>&
position
,
const
core
::
rect
<
s32
>&
padding
,
void
Game
::
DrawShadowText
(
irr
::
gui
::
CGUITTFont
*
font
,
const
T
&
text
,
const
core
::
rect
<
s32
>&
position
,
const
core
::
rect
<
s32
>&
padding
,
video
::
SColor
color
=
0xffffffff
,
video
::
SColor
shadowcolor
=
0xff000000
,
bool
hcenter
=
false
,
bool
vcenter
=
false
,
const
core
::
rect
<
s32
>*
clip
=
nullptr
)
{
video
::
SColor
color
,
video
::
SColor
shadowcolor
,
bool
hcenter
,
bool
vcenter
,
const
core
::
rect
<
s32
>*
clip
)
{
core
::
rect
<
s32
>
shadowposition
=
recti
(
position
.
UpperLeftCorner
.
X
-
padding
.
UpperLeftCorner
.
X
,
position
.
UpperLeftCorner
.
Y
-
padding
.
UpperLeftCorner
.
Y
,
core
::
rect
<
s32
>
shadowposition
=
recti
(
position
.
UpperLeftCorner
.
X
-
padding
.
UpperLeftCorner
.
X
,
position
.
UpperLeftCorner
.
Y
-
padding
.
UpperLeftCorner
.
Y
,
position
.
LowerRightCorner
.
X
-
padding
.
LowerRightCorner
.
X
,
position
.
LowerRightCorner
.
Y
-
padding
.
LowerRightCorner
.
Y
);
position
.
LowerRightCorner
.
X
-
padding
.
LowerRightCorner
.
X
,
position
.
LowerRightCorner
.
Y
-
padding
.
LowerRightCorner
.
Y
);
font
->
drawUstring
(
text
,
shadowposition
,
shadowcolor
,
hcenter
,
vcenter
,
clip
);
font
->
drawUstring
(
text
,
shadowposition
,
shadowcolor
,
hcenter
,
vcenter
,
clip
);
...
...
gframe/duelclient.cpp
View file @
4939dcf0
...
@@ -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 @
4939dcf0
...
@@ -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/game.cpp
View file @
4939dcf0
...
@@ -51,8 +51,8 @@ void DuelInfo::Clear() {
...
@@ -51,8 +51,8 @@ void DuelInfo::Clear() {
}
}
bool
IsExtension
(
const
wchar_t
*
filename
,
const
wchar_t
*
extension
)
{
bool
IsExtension
(
const
wchar_t
*
filename
,
const
wchar_t
*
extension
)
{
int
flen
=
std
::
wcslen
(
filename
);
auto
flen
=
std
::
wcslen
(
filename
);
int
elen
=
std
::
wcslen
(
extension
);
auto
elen
=
std
::
wcslen
(
extension
);
if
(
!
elen
||
flen
<
elen
)
if
(
!
elen
||
flen
<
elen
)
return
false
;
return
false
;
return
!
mywcsncasecmp
(
filename
+
(
flen
-
elen
),
extension
,
elen
);
return
!
mywcsncasecmp
(
filename
+
(
flen
-
elen
),
extension
,
elen
);
...
@@ -1272,9 +1272,10 @@ void Game::RefreshDeck(const wchar_t* deckpath, const std::function<void(const w
...
@@ -1272,9 +1272,10 @@ void Game::RefreshDeck(const wchar_t* deckpath, const std::function<void(const w
FileSystem
::
TraversalDir
(
deckpath
,
[
additem
](
const
wchar_t
*
name
,
bool
isdir
)
{
FileSystem
::
TraversalDir
(
deckpath
,
[
additem
](
const
wchar_t
*
name
,
bool
isdir
)
{
if
(
!
isdir
&&
IsExtension
(
name
,
L".ydk"
))
{
if
(
!
isdir
&&
IsExtension
(
name
,
L".ydk"
))
{
size_t
len
=
std
::
wcslen
(
name
);
size_t
len
=
std
::
wcslen
(
name
);
wchar_t
deckname
[
256
];
wchar_t
deckname
[
256
]{};
std
::
wcsncpy
(
deckname
,
name
,
len
-
4
);
size_t
count
=
std
::
min
(
len
-
4
,
sizeof
deckname
/
sizeof
deckname
[
0
]
-
1
);
deckname
[
len
-
4
]
=
0
;
std
::
wcsncpy
(
deckname
,
name
,
count
);
deckname
[
count
]
=
0
;
additem
(
deckname
);
additem
(
deckname
);
}
}
});
});
...
...
gframe/game.h
View file @
4939dcf0
...
@@ -24,6 +24,7 @@
...
@@ -24,6 +24,7 @@
constexpr
int
DEFAULT_DUEL_RULE
=
5
;
constexpr
int
DEFAULT_DUEL_RULE
=
5
;
constexpr
int
CONFIG_LINE_SIZE
=
1024
;
constexpr
int
CONFIG_LINE_SIZE
=
1024
;
constexpr
int
TEXT_LINE_SIZE
=
256
;
namespace
ygo
{
namespace
ygo
{
...
@@ -219,6 +220,9 @@ public:
...
@@ -219,6 +220,9 @@ public:
void
SetWindowsScale
(
float
scale
);
void
SetWindowsScale
(
float
scale
);
void
FlashWindow
();
void
FlashWindow
();
void
SetCursor
(
ECURSOR_ICON
icon
);
void
SetCursor
(
ECURSOR_ICON
icon
);
template
<
typename
T
>
static
void
DrawShadowText
(
irr
::
gui
::
CGUITTFont
*
font
,
const
T
&
text
,
const
core
::
rect
<
s32
>&
position
,
const
core
::
rect
<
s32
>&
padding
,
video
::
SColor
color
=
0xffffffff
,
video
::
SColor
shadowcolor
=
0xff000000
,
bool
hcenter
=
false
,
bool
vcenter
=
false
,
const
core
::
rect
<
s32
>*
clip
=
nullptr
);
std
::
mutex
gMutex
;
std
::
mutex
gMutex
;
Signal
frameSignal
;
Signal
frameSignal
;
...
...
gframe/gframe.cpp
View file @
4939dcf0
...
@@ -129,7 +129,7 @@ int main(int argc, char* argv[]) {
...
@@ -129,7 +129,7 @@ int main(int argc, char* argv[]) {
if
(
i
<
wargc
)
{
if
(
i
<
wargc
)
{
open_file
=
true
;
open_file
=
true
;
if
(
deckCategorySpecified
)
{
if
(
deckCategorySpecified
)
{
#ifdef WIN32
#ifdef
_
WIN32
myswprintf
(
open_file_name
,
L"%ls
\\
%ls"
,
ygo
::
mainGame
->
gameConf
.
lastcategory
,
wargv
[
i
]);
myswprintf
(
open_file_name
,
L"%ls
\\
%ls"
,
ygo
::
mainGame
->
gameConf
.
lastcategory
,
wargv
[
i
]);
#else
#else
myswprintf
(
open_file_name
,
L"%ls/%ls"
,
ygo
::
mainGame
->
gameConf
.
lastcategory
,
wargv
[
i
]);
myswprintf
(
open_file_name
,
L"%ls/%ls"
,
ygo
::
mainGame
->
gameConf
.
lastcategory
,
wargv
[
i
]);
...
...
gframe/menu_handler.cpp
View file @
4939dcf0
...
@@ -428,7 +428,7 @@ bool MenuHandler::OnEvent(const irr::SEvent& event) {
...
@@ -428,7 +428,7 @@ bool MenuHandler::OnEvent(const irr::SEvent& event) {
case
BUTTON_DECK_EDIT
:
{
case
BUTTON_DECK_EDIT
:
{
mainGame
->
RefreshCategoryDeck
(
mainGame
->
cbDBCategory
,
mainGame
->
cbDBDecks
);
mainGame
->
RefreshCategoryDeck
(
mainGame
->
cbDBCategory
,
mainGame
->
cbDBDecks
);
if
(
open_file
&&
deckManager
.
LoadCurrentDeck
(
open_file_name
))
{
if
(
open_file
&&
deckManager
.
LoadCurrentDeck
(
open_file_name
))
{
#ifdef WIN32
#ifdef
_
WIN32
wchar_t
*
dash
=
wcsrchr
(
open_file_name
,
L'\\'
);
wchar_t
*
dash
=
wcsrchr
(
open_file_name
,
L'\\'
);
#else
#else
wchar_t
*
dash
=
wcsrchr
(
open_file_name
,
L'/'
);
wchar_t
*
dash
=
wcsrchr
(
open_file_name
,
L'/'
);
...
...
gframe/myfilesystem.h
View file @
4939dcf0
...
@@ -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
;
...
@@ -174,8 +173,12 @@ public:
...
@@ -174,8 +173,12 @@ public:
static
bool
DeleteDir
(
const
char
*
dir
)
{
static
bool
DeleteDir
(
const
char
*
dir
)
{
bool
success
=
true
;
bool
success
=
true
;
TraversalDir
(
dir
,
[
dir
,
&
success
](
const
char
*
name
,
bool
isdir
)
{
TraversalDir
(
dir
,
[
dir
,
&
success
](
const
char
*
name
,
bool
isdir
)
{
char
full_path
[
256
];
char
full_path
[
1024
];
snprintf
(
full_path
,
sizeof
full_path
,
"%s/%s"
,
dir
,
name
);
int
len
=
std
::
snprintf
(
full_path
,
sizeof
full_path
,
"%s/%s"
,
dir
,
name
);
if
(
len
<
0
||
len
>=
(
int
)(
sizeof
full_path
))
{
success
=
false
;
return
;
}
if
(
isdir
)
if
(
isdir
)
{
{
if
(
!
DeleteDir
(
full_path
))
if
(
!
DeleteDir
(
full_path
))
...
@@ -207,7 +210,9 @@ public:
...
@@ -207,7 +210,9 @@ public:
while
((
dirp
=
readdir
(
dir
))
!=
nullptr
)
{
while
((
dirp
=
readdir
(
dir
))
!=
nullptr
)
{
file_unit
funit
;
file_unit
funit
;
char
fname
[
1024
];
char
fname
[
1024
];
std
::
snprintf
(
fname
,
sizeof
fname
,
"%s/%s"
,
path
,
dirp
->
d_name
);
int
len
=
std
::
snprintf
(
fname
,
sizeof
fname
,
"%s/%s"
,
path
,
dirp
->
d_name
);
if
(
len
<
0
||
len
>=
(
int
)(
sizeof
fname
))
continue
;
stat
(
fname
,
&
fileStat
);
stat
(
fname
,
&
fileStat
);
funit
.
filename
=
std
::
string
(
dirp
->
d_name
);
funit
.
filename
=
std
::
string
(
dirp
->
d_name
);
funit
.
is_dir
=
S_ISDIR
(
fileStat
.
st_mode
);
funit
.
is_dir
=
S_ISDIR
(
fileStat
.
st_mode
);
...
...
gframe/netserver.cpp
View file @
4939dcf0
...
@@ -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
:
{
...
@@ -288,8 +288,8 @@ void NetServer::HandleCTOSPacket(DuelPlayer* dp, unsigned char* data, int len) {
...
@@ -288,8 +288,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 @
4939dcf0
...
@@ -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 @
4939dcf0
...
@@ -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 @
4939dcf0
...
@@ -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