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
Commits
c85207e4
Commit
c85207e4
authored
Feb 04, 2025
by
wind2009
Browse files
Options
Browse Files
Download
Plain Diff
Merge remote-tracking branch 'hub/server' into server-develop
parents
12bbd88b
f1ce2613
Changes
19
Hide whitespace changes
Inline
Side-by-side
Showing
19 changed files
with
136 additions
and
116 deletions
+136
-116
cards.cdb
cards.cdb
+0
-0
gframe/config.h
gframe/config.h
+5
-6
gframe/data_manager.cpp
gframe/data_manager.cpp
+53
-51
gframe/data_manager.h
gframe/data_manager.h
+19
-6
gframe/deck_con.cpp
gframe/deck_con.cpp
+3
-3
gframe/duelclient.cpp
gframe/duelclient.cpp
+5
-5
gframe/event_handler.cpp
gframe/event_handler.cpp
+2
-2
gframe/game.cpp
gframe/game.cpp
+5
-5
gframe/gframe.cpp
gframe/gframe.cpp
+15
-15
gframe/menu_handler.cpp
gframe/menu_handler.cpp
+11
-11
gframe/network.h
gframe/network.h
+1
-1
gframe/replay.h
gframe/replay.h
+2
-2
gframe/single_duel.cpp
gframe/single_duel.cpp
+5
-3
gframe/single_duel.h
gframe/single_duel.h
+1
-0
gframe/single_mode.cpp
gframe/single_mode.cpp
+1
-1
gframe/tag_duel.cpp
gframe/tag_duel.cpp
+5
-3
gframe/tag_duel.h
gframe/tag_duel.h
+1
-0
ocgcore
ocgcore
+1
-1
script
script
+1
-1
No files found.
cards.cdb
View file @
c85207e4
No preview for this file type
gframe/config.h
View file @
c85207e4
...
@@ -43,12 +43,6 @@
...
@@ -43,12 +43,6 @@
#define mystrncasecmp strncasecmp
#define mystrncasecmp strncasecmp
#endif
#endif
#include <wchar.h>
template
<
size_t
N
,
typename
...
TR
>
inline
int
myswprintf
(
wchar_t
(
&
buf
)[
N
],
const
wchar_t
*
fmt
,
TR
...
args
)
{
return
swprintf
(
buf
,
N
,
fmt
,
args
...);
}
#include <stdio.h>
#include <stdio.h>
#include <stdlib.h>
#include <stdlib.h>
#include <iostream>
#include <iostream>
...
@@ -58,6 +52,11 @@ inline int myswprintf(wchar_t(&buf)[N], const wchar_t* fmt, TR... args) {
...
@@ -58,6 +52,11 @@ inline int myswprintf(wchar_t(&buf)[N], const wchar_t* fmt, TR... args) {
#include "../ocgcore/ocgapi.h"
#include "../ocgcore/ocgapi.h"
#include "../ocgcore/common.h"
#include "../ocgcore/common.h"
template
<
size_t
N
,
typename
...
TR
>
inline
int
myswprintf
(
wchar_t
(
&
buf
)[
N
],
const
wchar_t
*
fmt
,
TR
...
args
)
{
return
std
::
swprintf
(
buf
,
N
,
fmt
,
args
...);
}
inline
FILE
*
myfopen
(
const
wchar_t
*
filename
,
const
char
*
mode
)
{
inline
FILE
*
myfopen
(
const
wchar_t
*
filename
,
const
char
*
mode
)
{
FILE
*
fp
{};
FILE
*
fp
{};
#ifdef _WIN32
#ifdef _WIN32
...
...
gframe/data_manager.cpp
View file @
c85207e4
...
@@ -130,6 +130,7 @@ bool DataManager::LoadDB(const wchar_t* wfile) {
...
@@ -130,6 +130,7 @@ bool DataManager::LoadDB(const wchar_t* wfile) {
#endif //YGOPRO_SERVER_MODE
#endif //YGOPRO_SERVER_MODE
return
ret
;
return
ret
;
}
}
#ifndef YGOPRO_SERVER_MODE
bool
DataManager
::
LoadStrings
(
const
char
*
file
)
{
bool
DataManager
::
LoadStrings
(
const
char
*
file
)
{
FILE
*
fp
=
fopen
(
file
,
"r"
);
FILE
*
fp
=
fopen
(
file
,
"r"
);
if
(
!
fp
)
if
(
!
fp
)
...
@@ -141,7 +142,6 @@ bool DataManager::LoadStrings(const char* file) {
...
@@ -141,7 +142,6 @@ bool DataManager::LoadStrings(const char* file) {
fclose
(
fp
);
fclose
(
fp
);
return
true
;
return
true
;
}
}
#ifndef YGOPRO_SERVER_MODE
bool
DataManager
::
LoadStrings
(
irr
::
io
::
IReadFile
*
reader
)
{
bool
DataManager
::
LoadStrings
(
irr
::
io
::
IReadFile
*
reader
)
{
char
ch
{};
char
ch
{};
std
::
string
linebuf
;
std
::
string
linebuf
;
...
@@ -157,7 +157,6 @@ bool DataManager::LoadStrings(irr::io::IReadFile* reader) {
...
@@ -157,7 +157,6 @@ bool DataManager::LoadStrings(irr::io::IReadFile* reader) {
reader
->
drop
();
reader
->
drop
();
return
true
;
return
true
;
}
}
#endif //YGOPRO_SERVER_MODE
void
DataManager
::
ReadStringConfLine
(
const
char
*
linebuf
)
{
void
DataManager
::
ReadStringConfLine
(
const
char
*
linebuf
)
{
if
(
linebuf
[
0
]
!=
'!'
)
if
(
linebuf
[
0
]
!=
'!'
)
return
;
return
;
...
@@ -189,6 +188,7 @@ void DataManager::ReadStringConfLine(const char* linebuf) {
...
@@ -189,6 +188,7 @@ void DataManager::ReadStringConfLine(const char* linebuf) {
_setnameStrings
[
value
]
=
strBuffer
;
_setnameStrings
[
value
]
=
strBuffer
;
}
}
}
}
#endif //YGOPRO_SERVER_MODE
bool
DataManager
::
Error
(
sqlite3
*
pDB
,
sqlite3_stmt
*
pStmt
)
{
bool
DataManager
::
Error
(
sqlite3
*
pDB
,
sqlite3_stmt
*
pStmt
)
{
errmsg
[
0
]
=
'\0'
;
errmsg
[
0
]
=
'\0'
;
std
::
strncat
(
errmsg
,
sqlite3_errmsg
(
pDB
),
sizeof
errmsg
-
1
);
std
::
strncat
(
errmsg
,
sqlite3_errmsg
(
pDB
),
sizeof
errmsg
-
1
);
...
@@ -199,6 +199,7 @@ bool DataManager::Error(sqlite3* pDB, sqlite3_stmt* pStmt) {
...
@@ -199,6 +199,7 @@ bool DataManager::Error(sqlite3* pDB, sqlite3_stmt* pStmt) {
code_pointer
DataManager
::
GetCodePointer
(
unsigned
int
code
)
const
{
code_pointer
DataManager
::
GetCodePointer
(
unsigned
int
code
)
const
{
return
_datas
.
find
(
code
);
return
_datas
.
find
(
code
);
}
}
#ifndef YGOPRO_SERVER_MODE
string_pointer
DataManager
::
GetStringPointer
(
unsigned
int
code
)
const
{
string_pointer
DataManager
::
GetStringPointer
(
unsigned
int
code
)
const
{
return
_strings
.
find
(
code
);
return
_strings
.
find
(
code
);
}
}
...
@@ -214,6 +215,7 @@ string_pointer DataManager::strings_begin() const {
...
@@ -214,6 +215,7 @@ string_pointer DataManager::strings_begin() const {
string_pointer
DataManager
::
strings_end
()
const
{
string_pointer
DataManager
::
strings_end
()
const
{
return
_strings
.
cend
();
return
_strings
.
cend
();
}
}
#endif //YGOPRO_SERVER_MODE
bool
DataManager
::
GetData
(
unsigned
int
code
,
CardData
*
pData
)
const
{
bool
DataManager
::
GetData
(
unsigned
int
code
,
CardData
*
pData
)
const
{
auto
cdit
=
_datas
.
find
(
code
);
auto
cdit
=
_datas
.
find
(
code
);
if
(
cdit
==
_datas
.
end
())
if
(
cdit
==
_datas
.
end
())
...
@@ -223,6 +225,7 @@ bool DataManager::GetData(unsigned int code, CardData* pData) const {
...
@@ -223,6 +225,7 @@ bool DataManager::GetData(unsigned int code, CardData* pData) const {
}
}
return
true
;
return
true
;
}
}
#ifndef YGOPRO_SERVER_MODE
bool
DataManager
::
GetString
(
unsigned
int
code
,
CardString
*
pStr
)
const
{
bool
DataManager
::
GetString
(
unsigned
int
code
,
CardString
*
pStr
)
const
{
auto
csit
=
_strings
.
find
(
code
);
auto
csit
=
_strings
.
find
(
code
);
if
(
csit
==
_strings
.
end
())
{
if
(
csit
==
_strings
.
end
())
{
...
@@ -284,7 +287,7 @@ const wchar_t* DataManager::GetCounterName(int code) const {
...
@@ -284,7 +287,7 @@ const wchar_t* DataManager::GetCounterName(int code) const {
const
wchar_t
*
DataManager
::
GetSetName
(
int
code
)
const
{
const
wchar_t
*
DataManager
::
GetSetName
(
int
code
)
const
{
auto
csit
=
_setnameStrings
.
find
(
code
);
auto
csit
=
_setnameStrings
.
find
(
code
);
if
(
csit
==
_setnameStrings
.
end
())
if
(
csit
==
_setnameStrings
.
end
())
return
nullptr
;
return
unknown_string
;
return
csit
->
second
.
c_str
();
return
csit
->
second
.
c_str
();
}
}
std
::
vector
<
unsigned
int
>
DataManager
::
GetSetCodes
(
std
::
wstring
setname
)
const
{
std
::
vector
<
unsigned
int
>
DataManager
::
GetSetCodes
(
std
::
wstring
setname
)
const
{
...
@@ -380,11 +383,9 @@ std::wstring DataManager::FormatSetName(const uint16_t setcode[]) const {
...
@@ -380,11 +383,9 @@ std::wstring DataManager::FormatSetName(const uint16_t setcode[]) const {
if
(
!
setcode
[
i
])
if
(
!
setcode
[
i
])
break
;
break
;
const
wchar_t
*
setname
=
GetSetName
(
setcode
[
i
]);
const
wchar_t
*
setname
=
GetSetName
(
setcode
[
i
]);
if
(
setname
)
{
if
(
!
buffer
.
empty
())
if
(
!
buffer
.
empty
())
buffer
.
push_back
(
L'|'
);
buffer
.
push_back
(
L'|'
);
buffer
.
append
(
setname
);
buffer
.
append
(
setname
);
}
}
}
if
(
buffer
.
empty
())
if
(
buffer
.
empty
())
return
std
::
wstring
(
unknown_string
);
return
std
::
wstring
(
unknown_string
);
...
@@ -410,54 +411,53 @@ std::wstring DataManager::FormatLinkMarker(unsigned int link_marker) const {
...
@@ -410,54 +411,53 @@ std::wstring DataManager::FormatLinkMarker(unsigned int link_marker) const {
buffer
.
append
(
L"[\u2198]"
);
buffer
.
append
(
L"[\u2198]"
);
return
buffer
;
return
buffer
;
}
}
#endif //YGOPRO_SERVER_MODE
uint32_t
DataManager
::
CardReader
(
uint32_t
code
,
card_data
*
pData
)
{
uint32_t
DataManager
::
CardReader
(
uint32_t
code
,
card_data
*
pData
)
{
if
(
!
dataManager
.
GetData
(
code
,
pData
))
if
(
!
dataManager
.
GetData
(
code
,
pData
))
pData
->
clear
();
pData
->
clear
();
return
0
;
return
0
;
}
}
unsigned
char
*
DataManager
::
ScriptReaderEx
(
const
char
*
script_name
,
int
*
slen
)
{
unsigned
char
*
DataManager
::
ScriptReaderEx
(
const
char
*
script_path
,
int
*
slen
)
{
if
(
std
::
strncmp
(
script_name
,
"./script"
,
8
)
!=
0
)
// default script name: ./script/c%d.lua
return
DefaultScriptReader
(
script_name
,
slen
);
if
(
std
::
strncmp
(
script_path
,
"./script"
,
8
)
!=
0
)
// not a card script file
unsigned
char
*
buffer
;
return
ReadScriptFromFile
(
script_path
,
slen
);
#ifndef YGOPRO_SERVER_MODE
const
char
*
script_name
=
script_path
+
2
;
if
(
!
mainGame
->
gameConf
.
prefer_expansion_script
)
{
char
expansions_path
[
1024
]{};
buffer
=
ScriptReaderExSingle
(
""
,
script_name
,
slen
);
std
::
snprintf
(
expansions_path
,
sizeof
expansions_path
,
"./expansions/%s"
,
script_name
);
if
(
buffer
)
#ifdef YGOPRO_SERVER_MODE
return
buffer
;
char
special_path
[
1024
]{};
}
std
::
snprintf
(
special_path
,
sizeof
special_path
,
"./specials/%s"
,
script_path
+
9
);
#endif //YGOPRO_SERVER_MODE
if
(
ReadScriptFromFile
(
special_path
,
slen
))
buffer
=
ScriptReaderExSingle
(
"specials/"
,
script_name
,
slen
,
9
);
return
scriptBuffer
;
if
(
buffer
)
if
(
ReadScriptFromFile
(
expansions_path
,
slen
))
// always read expansions first
return
buffer
;
return
scriptBuffer
;
buffer
=
ScriptReaderExSingle
(
"expansions/"
,
script_name
,
slen
);
#ifdef SERVER_ZIP_SUPPORT
if
(
buffer
)
if
(
ReadScriptFromIrrFS
(
script_name
,
slen
))
return
buffer
;
return
scriptBuffer
;
#if !defined(YGOPRO_SERVER_MODE) || defined(SERVER_ZIP_SUPPORT)
buffer
=
ScriptReaderExSingle
(
""
,
script_name
,
slen
,
2
,
TRUE
);
if
(
buffer
)
return
buffer
;
#endif
#endif
return
ScriptReaderExSingle
(
""
,
script_name
,
slen
);
if
(
ReadScriptFromFile
(
script_path
,
slen
))
}
return
scriptBuffer
;
unsigned
char
*
DataManager
::
ScriptReaderExSingle
(
const
char
*
path
,
const
char
*
script_name
,
int
*
slen
,
int
pre_len
,
unsigned
int
use_irr
)
{
#else //YGOPRO_SERVER_MODE
char
sname
[
256
];
if
(
mainGame
->
gameConf
.
prefer_expansion_script
)
{
// debug script with raw file in expansions
snprintf
(
sname
,
sizeof
sname
,
"%s%s"
,
path
,
script_name
+
pre_len
);
//default script name: ./script/c%d.lua
if
(
ReadScriptFromFile
(
expansions_path
,
slen
))
if
(
use_irr
)
{
return
scriptBuffer
;
return
ScriptReader
(
sname
,
slen
);
if
(
ReadScriptFromIrrFS
(
script_name
,
slen
))
return
scriptBuffer
;
if
(
ReadScriptFromFile
(
script_path
,
slen
))
return
scriptBuffer
;
}
else
{
if
(
ReadScriptFromIrrFS
(
script_name
,
slen
))
return
scriptBuffer
;
if
(
ReadScriptFromFile
(
script_path
,
slen
))
return
scriptBuffer
;
if
(
ReadScriptFromFile
(
expansions_path
,
slen
))
return
scriptBuffer
;
}
}
return
DefaultScriptReader
(
sname
,
slen
);
#endif //YGOPRO_SERVER_MODE
return
nullptr
;
}
}
unsigned
char
*
DataManager
::
ScriptReader
(
const
char
*
script_name
,
int
*
slen
)
{
#if !defined(YGOPRO_SERVER_MODE) || defined(SERVER_ZIP_SUPPORT)
#if defined(YGOPRO_SERVER_MODE) && !defined(SERVER_ZIP_SUPPORT)
unsigned
char
*
DataManager
::
ReadScriptFromIrrFS
(
const
char
*
script_name
,
int
*
slen
)
{
FILE
*
fp
=
fopen
(
script_name
,
"rb"
);
if
(
!
fp
)
return
0
;
int
len
=
fread
(
scriptBuffer
,
1
,
sizeof
(
scriptBuffer
),
fp
);
fclose
(
fp
);
if
(
len
>=
sizeof
(
scriptBuffer
))
return
0
;
*
slen
=
len
;
#else
#ifdef _WIN32
#ifdef _WIN32
wchar_t
fname
[
256
]{};
wchar_t
fname
[
256
]{};
BufferIO
::
DecodeUTF8
(
script_name
,
fname
);
BufferIO
::
DecodeUTF8
(
script_name
,
fname
);
...
@@ -472,10 +472,10 @@ unsigned char* DataManager::ScriptReader(const char* script_name, int* slen) {
...
@@ -472,10 +472,10 @@ unsigned char* DataManager::ScriptReader(const char* script_name, int* slen) {
if
(
size
>=
(
int
)
sizeof
scriptBuffer
)
if
(
size
>=
(
int
)
sizeof
scriptBuffer
)
return
nullptr
;
return
nullptr
;
*
slen
=
size
;
*
slen
=
size
;
#endif //YGOPRO_SERVER_MODE
return
scriptBuffer
;
return
scriptBuffer
;
}
}
unsigned
char
*
DataManager
::
DefaultScriptReader
(
const
char
*
script_name
,
int
*
slen
)
{
#endif //YGOPRO_SERVER_MODE
unsigned
char
*
DataManager
::
ReadScriptFromFile
(
const
char
*
script_name
,
int
*
slen
)
{
wchar_t
fname
[
256
]{};
wchar_t
fname
[
256
]{};
BufferIO
::
DecodeUTF8
(
script_name
,
fname
);
BufferIO
::
DecodeUTF8
(
script_name
,
fname
);
FILE
*
fp
=
myfopen
(
fname
,
"rb"
);
FILE
*
fp
=
myfopen
(
fname
,
"rb"
);
...
@@ -488,6 +488,7 @@ unsigned char* DataManager::DefaultScriptReader(const char* script_name, int* sl
...
@@ -488,6 +488,7 @@ unsigned char* DataManager::DefaultScriptReader(const char* script_name, int* sl
*
slen
=
(
int
)
len
;
*
slen
=
(
int
)
len
;
return
scriptBuffer
;
return
scriptBuffer
;
}
}
#ifndef YGOPRO_SERVER_MODE
bool
DataManager
::
deck_sort_lv
(
code_pointer
p1
,
code_pointer
p2
)
{
bool
DataManager
::
deck_sort_lv
(
code_pointer
p1
,
code_pointer
p2
)
{
if
((
p1
->
second
.
type
&
0x7
)
!=
(
p2
->
second
.
type
&
0x7
))
if
((
p1
->
second
.
type
&
0x7
)
!=
(
p2
->
second
.
type
&
0x7
))
return
(
p1
->
second
.
type
&
0x7
)
<
(
p2
->
second
.
type
&
0x7
);
return
(
p1
->
second
.
type
&
0x7
)
<
(
p2
->
second
.
type
&
0x7
);
...
@@ -551,10 +552,11 @@ bool DataManager::deck_sort_def(code_pointer p1, code_pointer p2) {
...
@@ -551,10 +552,11 @@ bool DataManager::deck_sort_def(code_pointer p1, code_pointer p2) {
bool
DataManager
::
deck_sort_name
(
code_pointer
p1
,
code_pointer
p2
)
{
bool
DataManager
::
deck_sort_name
(
code_pointer
p1
,
code_pointer
p2
)
{
const
wchar_t
*
name1
=
dataManager
.
GetName
(
p1
->
first
);
const
wchar_t
*
name1
=
dataManager
.
GetName
(
p1
->
first
);
const
wchar_t
*
name2
=
dataManager
.
GetName
(
p2
->
first
);
const
wchar_t
*
name2
=
dataManager
.
GetName
(
p2
->
first
);
int
res
=
wcscmp
(
name1
,
name2
);
int
res
=
std
::
wcscmp
(
name1
,
name2
);
if
(
res
!=
0
)
if
(
res
!=
0
)
return
res
<
0
;
return
res
<
0
;
return
p1
->
first
<
p2
->
first
;
return
p1
->
first
<
p2
->
first
;
}
}
#endif //YGOPRO_SERVER_MODE
}
}
gframe/data_manager.h
View file @
c85207e4
...
@@ -44,20 +44,23 @@ public:
...
@@ -44,20 +44,23 @@ public:
DataManager
();
DataManager
();
bool
ReadDB
(
sqlite3
*
pDB
);
bool
ReadDB
(
sqlite3
*
pDB
);
bool
LoadDB
(
const
wchar_t
*
wfile
);
bool
LoadDB
(
const
wchar_t
*
wfile
);
bool
LoadStrings
(
const
char
*
file
);
#ifndef YGOPRO_SERVER_MODE
#ifndef YGOPRO_SERVER_MODE
bool
LoadStrings
(
const
char
*
file
);
bool
LoadStrings
(
irr
::
io
::
IReadFile
*
reader
);
bool
LoadStrings
(
irr
::
io
::
IReadFile
*
reader
);
#endif
void
ReadStringConfLine
(
const
char
*
linebuf
);
void
ReadStringConfLine
(
const
char
*
linebuf
);
#endif
bool
Error
(
sqlite3
*
pDB
,
sqlite3_stmt
*
pStmt
=
nullptr
);
bool
Error
(
sqlite3
*
pDB
,
sqlite3_stmt
*
pStmt
=
nullptr
);
code_pointer
GetCodePointer
(
unsigned
int
code
)
const
;
code_pointer
GetCodePointer
(
unsigned
int
code
)
const
;
#ifndef YGOPRO_SERVER_MODE
string_pointer
GetStringPointer
(
unsigned
int
code
)
const
;
string_pointer
GetStringPointer
(
unsigned
int
code
)
const
;
code_pointer
datas_begin
()
const
;
code_pointer
datas_begin
()
const
;
code_pointer
datas_end
()
const
;
code_pointer
datas_end
()
const
;
string_pointer
strings_begin
()
const
;
string_pointer
strings_begin
()
const
;
string_pointer
strings_end
()
const
;
string_pointer
strings_end
()
const
;
#endif
bool
GetData
(
unsigned
int
code
,
CardData
*
pData
)
const
;
bool
GetData
(
unsigned
int
code
,
CardData
*
pData
)
const
;
#ifndef YGOPRO_SERVER_MODE
bool
GetString
(
unsigned
int
code
,
CardString
*
pStr
)
const
;
bool
GetString
(
unsigned
int
code
,
CardString
*
pStr
)
const
;
const
wchar_t
*
GetName
(
unsigned
int
code
)
const
;
const
wchar_t
*
GetName
(
unsigned
int
code
)
const
;
const
wchar_t
*
GetText
(
unsigned
int
code
)
const
;
const
wchar_t
*
GetText
(
unsigned
int
code
)
const
;
...
@@ -79,22 +82,32 @@ public:
...
@@ -79,22 +82,32 @@ public:
std
::
unordered_map
<
unsigned
int
,
std
::
wstring
>
_victoryStrings
;
std
::
unordered_map
<
unsigned
int
,
std
::
wstring
>
_victoryStrings
;
std
::
unordered_map
<
unsigned
int
,
std
::
wstring
>
_setnameStrings
;
std
::
unordered_map
<
unsigned
int
,
std
::
wstring
>
_setnameStrings
;
std
::
unordered_map
<
unsigned
int
,
std
::
wstring
>
_sysStrings
;
std
::
unordered_map
<
unsigned
int
,
std
::
wstring
>
_sysStrings
;
#endif
char
errmsg
[
512
]{};
char
errmsg
[
512
]{};
static
unsigned
char
scriptBuffer
[
0x100000
];
static
unsigned
char
scriptBuffer
[
0x100000
];
static
const
wchar_t
*
unknown_string
;
static
const
wchar_t
*
unknown_string
;
static
uint32_t
CardReader
(
uint32_t
,
card_data
*
);
static
uint32_t
CardReader
(
uint32_t
,
card_data
*
);
static
unsigned
char
*
ScriptReaderEx
(
const
char
*
script_name
,
int
*
slen
);
static
unsigned
char
*
ScriptReaderEx
(
const
char
*
script_path
,
int
*
slen
);
static
unsigned
char
*
ScriptReaderExSingle
(
const
char
*
path
,
const
char
*
script_name
,
int
*
slen
,
int
pre_len
=
2
,
unsigned
int
use_irr
=
FALSE
);
#if !defined(YGOPRO_SERVER_MODE) || defined(SERVER_ZIP_SUPPORT)
//read by IFileSystem
//read by IFileSystem
static
unsigned
char
*
ScriptReader
(
const
char
*
script_name
,
int
*
slen
);
static
unsigned
char
*
ReadScriptFromIrrFS
(
const
char
*
script_name
,
int
*
slen
);
#endif
//read by fread
//read by fread
static
unsigned
char
*
DefaultScriptReader
(
const
char
*
script_name
,
int
*
slen
);
static
unsigned
char
*
ReadScriptFromFile
(
const
char
*
script_name
,
int
*
slen
);
#if !defined(YGOPRO_SERVER_MODE) || defined(SERVER_ZIP_SUPPORT)
#if !defined(YGOPRO_SERVER_MODE) || defined(SERVER_ZIP_SUPPORT)
static
irr
::
io
::
IFileSystem
*
FileSystem
;
static
irr
::
io
::
IFileSystem
*
FileSystem
;
#endif
#endif
#ifndef YGOPRO_SERVER_MODE
static
bool
deck_sort_lv
(
code_pointer
l1
,
code_pointer
l2
);
static
bool
deck_sort_atk
(
code_pointer
l1
,
code_pointer
l2
);
static
bool
deck_sort_def
(
code_pointer
l1
,
code_pointer
l2
);
static
bool
deck_sort_name
(
code_pointer
l1
,
code_pointer
l2
);
#endif
static
bool
deck_sort_lv
(
code_pointer
l1
,
code_pointer
l2
);
static
bool
deck_sort_lv
(
code_pointer
l1
,
code_pointer
l2
);
static
bool
deck_sort_atk
(
code_pointer
l1
,
code_pointer
l2
);
static
bool
deck_sort_atk
(
code_pointer
l1
,
code_pointer
l2
);
static
bool
deck_sort_def
(
code_pointer
l1
,
code_pointer
l2
);
static
bool
deck_sort_def
(
code_pointer
l1
,
code_pointer
l2
);
...
...
gframe/deck_con.cpp
View file @
c85207e4
...
@@ -178,7 +178,7 @@ bool DeckBuilder::OnEvent(const irr::SEvent& event) {
...
@@ -178,7 +178,7 @@ bool DeckBuilder::OnEvent(const irr::SEvent& event) {
break
;
break
;
int
sel
=
-
1
;
int
sel
=
-
1
;
for
(
size_t
i
=
0
;
i
<
mainGame
->
cbDBDecks
->
getItemCount
();
++
i
)
{
for
(
size_t
i
=
0
;
i
<
mainGame
->
cbDBDecks
->
getItemCount
();
++
i
)
{
if
(
!
wcscmp
(
dname
,
mainGame
->
cbDBDecks
->
getItem
(
i
)))
{
if
(
!
std
::
wcscmp
(
dname
,
mainGame
->
cbDBDecks
->
getItem
(
i
)))
{
sel
=
i
;
sel
=
i
;
break
;
break
;
}
}
...
@@ -1524,7 +1524,7 @@ void DeckBuilder::FilterCards() {
...
@@ -1524,7 +1524,7 @@ void DeckBuilder::FilterCards() {
SortList
();
SortList
();
}
}
void
DeckBuilder
::
InstantSearch
()
{
void
DeckBuilder
::
InstantSearch
()
{
if
(
mainGame
->
gameConf
.
auto_search_limit
>=
0
&&
((
int
)
wcslen
(
mainGame
->
ebCardName
->
getText
())
>=
mainGame
->
gameConf
.
auto_search_limit
))
if
(
mainGame
->
gameConf
.
auto_search_limit
>=
0
&&
((
int
)
std
::
wcslen
(
mainGame
->
ebCardName
->
getText
())
>=
mainGame
->
gameConf
.
auto_search_limit
))
StartFilter
();
StartFilter
();
}
}
void
DeckBuilder
::
ClearSearch
()
{
void
DeckBuilder
::
ClearSearch
()
{
...
@@ -1565,7 +1565,7 @@ void DeckBuilder::SortList() {
...
@@ -1565,7 +1565,7 @@ void DeckBuilder::SortList() {
auto
left
=
results
.
begin
();
auto
left
=
results
.
begin
();
const
wchar_t
*
pstr
=
mainGame
->
ebCardName
->
getText
();
const
wchar_t
*
pstr
=
mainGame
->
ebCardName
->
getText
();
for
(
auto
it
=
results
.
begin
();
it
!=
results
.
end
();
++
it
)
{
for
(
auto
it
=
results
.
begin
();
it
!=
results
.
end
();
++
it
)
{
if
(
wcscmp
(
pstr
,
dataManager
.
GetName
((
*
it
)
->
first
))
==
0
)
{
if
(
std
::
wcscmp
(
pstr
,
dataManager
.
GetName
((
*
it
)
->
first
))
==
0
)
{
std
::
iter_swap
(
left
,
it
);
std
::
iter_swap
(
left
,
it
);
++
left
;
++
left
;
}
}
...
...
gframe/duelclient.cpp
View file @
c85207e4
...
@@ -141,10 +141,10 @@ void DuelClient::ClientEvent(bufferevent* bev, short events, void* ctx) {
...
@@ -141,10 +141,10 @@ void DuelClient::ClientEvent(bufferevent* bev, short events, void* ctx) {
BufferIO
::
CopyCharArray
(
mainGame
->
ebServerPass
->
getText
(),
cscg
.
pass
);
BufferIO
::
CopyCharArray
(
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
=
std
::
wcstol
(
mainGame
->
ebStartHand
->
getText
(),
nullptr
,
10
);
cscg
.
info
.
start_lp
=
wcstol
(
mainGame
->
ebStartLP
->
getText
(),
nullptr
,
10
);
cscg
.
info
.
start_lp
=
std
::
wcstol
(
mainGame
->
ebStartLP
->
getText
(),
nullptr
,
10
);
cscg
.
info
.
draw_count
=
wcstol
(
mainGame
->
ebDrawCount
->
getText
(),
nullptr
,
10
);
cscg
.
info
.
draw_count
=
std
::
wcstol
(
mainGame
->
ebDrawCount
->
getText
(),
nullptr
,
10
);
cscg
.
info
.
time_limit
=
wcstol
(
mainGame
->
ebTimeLimit
->
getText
(),
nullptr
,
10
);
cscg
.
info
.
time_limit
=
std
::
wcstol
(
mainGame
->
ebTimeLimit
->
getText
(),
nullptr
,
10
);
cscg
.
info
.
lflist
=
mainGame
->
cbHostLFlist
->
getItemData
(
mainGame
->
cbHostLFlist
->
getSelected
());
cscg
.
info
.
lflist
=
mainGame
->
cbHostLFlist
->
getItemData
(
mainGame
->
cbHostLFlist
->
getSelected
());
cscg
.
info
.
duel_rule
=
mainGame
->
cbDuelRule
->
getSelected
()
+
1
;
cscg
.
info
.
duel_rule
=
mainGame
->
cbDuelRule
->
getSelected
()
+
1
;
cscg
.
info
.
no_check_deck
=
mainGame
->
chkNoCheckDeck
->
isChecked
();
cscg
.
info
.
no_check_deck
=
mainGame
->
chkNoCheckDeck
->
isChecked
();
...
@@ -732,7 +732,7 @@ void DuelClient::HandleSTOCPacketLan(unsigned char* data, int len) {
...
@@ -732,7 +732,7 @@ void DuelClient::HandleSTOCPacketLan(unsigned char* data, int len) {
tm
*
localedtime
=
localtime
(
&
starttime
);
tm
*
localedtime
=
localtime
(
&
starttime
);
wchar_t
timetext
[
40
];
wchar_t
timetext
[
40
];
wcsftime
(
timetext
,
40
,
L"%Y-%m-%d %H-%M-%S"
,
localedtime
);
std
::
wcsftime
(
timetext
,
40
,
L"%Y-%m-%d %H-%M-%S"
,
localedtime
);
mainGame
->
ebRSName
->
setText
(
timetext
);
mainGame
->
ebRSName
->
setText
(
timetext
);
if
(
!
mainGame
->
chkAutoSaveReplay
->
isChecked
())
{
if
(
!
mainGame
->
chkAutoSaveReplay
->
isChecked
())
{
mainGame
->
wReplaySave
->
setText
(
dataManager
.
GetSysString
(
1340
));
mainGame
->
wReplaySave
->
setText
(
dataManager
.
GetSysString
(
1340
));
...
...
gframe/event_handler.cpp
View file @
c85207e4
...
@@ -1584,7 +1584,7 @@ bool ClientField::OnEvent(const irr::SEvent& event) {
...
@@ -1584,7 +1584,7 @@ bool ClientField::OnEvent(const irr::SEvent& event) {
myswprintf
(
formatBuffer
,
L"%ls"
,
dataManager
.
GetName
(
mcard
->
code
));
myswprintf
(
formatBuffer
,
L"%ls"
,
dataManager
.
GetName
(
mcard
->
code
));
str
.
append
(
formatBuffer
);
str
.
append
(
formatBuffer
);
if
(
mcard
->
type
&
TYPE_MONSTER
)
{
if
(
mcard
->
type
&
TYPE_MONSTER
)
{
if
(
mcard
->
alias
&&
wcscmp
(
dataManager
.
GetName
(
mcard
->
code
),
dataManager
.
GetName
(
mcard
->
alias
)))
{
if
(
mcard
->
alias
&&
std
::
wcscmp
(
dataManager
.
GetName
(
mcard
->
code
),
dataManager
.
GetName
(
mcard
->
alias
)))
{
myswprintf
(
formatBuffer
,
L"
\n
(%ls)"
,
dataManager
.
GetName
(
mcard
->
alias
));
myswprintf
(
formatBuffer
,
L"
\n
(%ls)"
,
dataManager
.
GetName
(
mcard
->
alias
));
str
.
append
(
formatBuffer
);
str
.
append
(
formatBuffer
);
}
}
...
@@ -1606,7 +1606,7 @@ bool ClientField::OnEvent(const irr::SEvent& event) {
...
@@ -1606,7 +1606,7 @@ bool ClientField::OnEvent(const irr::SEvent& event) {
str
.
append
(
formatBuffer
);
str
.
append
(
formatBuffer
);
}
}
}
else
{
}
else
{
if
(
mcard
->
alias
&&
wcscmp
(
dataManager
.
GetName
(
mcard
->
code
),
dataManager
.
GetName
(
mcard
->
alias
)))
{
if
(
mcard
->
alias
&&
std
::
wcscmp
(
dataManager
.
GetName
(
mcard
->
code
),
dataManager
.
GetName
(
mcard
->
alias
)))
{
myswprintf
(
formatBuffer
,
L"
\n
(%ls)"
,
dataManager
.
GetName
(
mcard
->
alias
));
myswprintf
(
formatBuffer
,
L"
\n
(%ls)"
,
dataManager
.
GetName
(
mcard
->
alias
));
str
.
append
(
formatBuffer
);
str
.
append
(
formatBuffer
);
}
}
...
...
gframe/game.cpp
View file @
c85207e4
...
@@ -84,13 +84,13 @@ HostInfo game_info;
...
@@ -84,13 +84,13 @@ HostInfo game_info;
void
Game
::
MainServerLoop
()
{
void
Game
::
MainServerLoop
()
{
#ifdef SERVER_ZIP_SUPPORT
#ifdef SERVER_ZIP_SUPPORT
dataManager
.
FileSystem
=
new
irr
::
io
::
CFileSystem
();
DataManager
::
FileSystem
=
new
irr
::
io
::
CFileSystem
();
#endif
#endif
deckManager
.
LoadLFList
();
deckManager
.
LoadLFList
();
dataManager
.
LoadDB
(
L"cards.cdb"
);
dataManager
.
LoadDB
(
L"cards.cdb"
);
LoadExpansions
();
LoadExpansions
();
#ifdef SERVER_PRO2_SUPPORT
#ifdef SERVER_PRO2_SUPPORT
dataManager
.
FileSystem
->
addFileArchive
(
"data/script.zip"
,
true
,
false
,
EFAT_ZIP
);
DataManager
::
FileSystem
->
addFileArchive
(
"data/script.zip"
,
true
,
false
,
EFAT_ZIP
);
#endif
#endif
server_port
=
NetServer
::
StartServer
(
server_port
);
server_port
=
NetServer
::
StartServer
(
server_port
);
...
@@ -1182,7 +1182,7 @@ std::wstring Game::SetStaticText(irr::gui::IGUIStaticText* pControl, u32 cWidth,
...
@@ -1182,7 +1182,7 @@ std::wstring Game::SetStaticText(irr::gui::IGUIStaticText* pControl, u32 cWidth,
wchar_t
strBuffer
[
4096
];
wchar_t
strBuffer
[
4096
];
std
::
wstring
ret
;
std
::
wstring
ret
;
for
(
size_t
i
=
0
;
text
[
i
]
!=
0
&&
i
<
wcslen
(
text
);
++
i
)
{
for
(
size_t
i
=
0
;
text
[
i
]
!=
0
&&
i
<
std
::
wcslen
(
text
);
++
i
)
{
wchar_t
c
=
text
[
i
];
wchar_t
c
=
text
[
i
];
u32
w
=
font
->
getCharDimension
(
c
).
Width
+
font
->
getKerningWidth
(
c
,
prev
);
u32
w
=
font
->
getCharDimension
(
c
).
Width
+
font
->
getKerningWidth
(
c
,
prev
);
prev
=
c
;
prev
=
c
;
...
@@ -1300,7 +1300,7 @@ void Game::RefreshCategoryDeck(irr::gui::IGUIComboBox* cbCategory, irr::gui::IGU
...
@@ -1300,7 +1300,7 @@ void Game::RefreshCategoryDeck(irr::gui::IGUIComboBox* cbCategory, irr::gui::IGU
cbCategory
->
setSelected
(
2
);
cbCategory
->
setSelected
(
2
);
if
(
selectlastused
)
{
if
(
selectlastused
)
{
for
(
size_t
i
=
0
;
i
<
cbCategory
->
getItemCount
();
++
i
)
{
for
(
size_t
i
=
0
;
i
<
cbCategory
->
getItemCount
();
++
i
)
{
if
(
!
wcscmp
(
cbCategory
->
getItem
(
i
),
gameConf
.
lastcategory
))
{
if
(
!
std
::
wcscmp
(
cbCategory
->
getItem
(
i
),
gameConf
.
lastcategory
))
{
cbCategory
->
setSelected
(
i
);
cbCategory
->
setSelected
(
i
);
break
;
break
;
}
}
...
@@ -1309,7 +1309,7 @@ void Game::RefreshCategoryDeck(irr::gui::IGUIComboBox* cbCategory, irr::gui::IGU
...
@@ -1309,7 +1309,7 @@ void Game::RefreshCategoryDeck(irr::gui::IGUIComboBox* cbCategory, irr::gui::IGU
RefreshDeck
(
cbCategory
,
cbDeck
);
RefreshDeck
(
cbCategory
,
cbDeck
);
if
(
selectlastused
)
{
if
(
selectlastused
)
{
for
(
size_t
i
=
0
;
i
<
cbDeck
->
getItemCount
();
++
i
)
{
for
(
size_t
i
=
0
;
i
<
cbDeck
->
getItemCount
();
++
i
)
{
if
(
!
wcscmp
(
cbDeck
->
getItem
(
i
),
gameConf
.
lastdeck
))
{
if
(
!
std
::
wcscmp
(
cbDeck
->
getItem
(
i
),
gameConf
.
lastdeck
))
{
cbDeck
->
setSelected
(
i
);
cbDeck
->
setSelected
(
i
);
break
;
break
;
}
}
...
...
gframe/gframe.cpp
View file @
c85207e4
...
@@ -44,7 +44,7 @@ int main(int argc, char* argv[]) {
...
@@ -44,7 +44,7 @@ int main(int argc, char* argv[]) {
&&
(
!
mystrncasecmp
(
pstrext
,
".ydk"
,
4
)
||
!
mystrncasecmp
(
pstrext
,
".yrp"
,
4
)))
{
&&
(
!
mystrncasecmp
(
pstrext
,
".ydk"
,
4
)
||
!
mystrncasecmp
(
pstrext
,
".yrp"
,
4
)))
{
wchar_t
exepath
[
MAX_PATH
];
wchar_t
exepath
[
MAX_PATH
];
GetModuleFileNameW
(
nullptr
,
exepath
,
MAX_PATH
);
GetModuleFileNameW
(
nullptr
,
exepath
,
MAX_PATH
);
wchar_t
*
p
=
wcsrchr
(
exepath
,
'\\'
);
wchar_t
*
p
=
std
::
wcsrchr
(
exepath
,
'\\'
);
*
p
=
'\0'
;
*
p
=
'\0'
;
SetCurrentDirectoryW
(
exepath
);
SetCurrentDirectoryW
(
exepath
);
}
}
...
@@ -144,42 +144,42 @@ int main(int argc, char* argv[]) {
...
@@ -144,42 +144,42 @@ int main(int argc, char* argv[]) {
ygo
::
dataManager
.
LoadDB
(
&
wargv
[
i
][
2
]);
ygo
::
dataManager
.
LoadDB
(
&
wargv
[
i
][
2
]);
continue
;
continue
;
}
}
if
(
!
wcscmp
(
wargv
[
i
],
L"-e"
))
{
// extra database
if
(
!
std
::
wcscmp
(
wargv
[
i
],
L"-e"
))
{
// extra database
++
i
;
++
i
;
if
(
i
<
wargc
)
{
if
(
i
<
wargc
)
{
ygo
::
dataManager
.
LoadDB
(
wargv
[
i
]);
ygo
::
dataManager
.
LoadDB
(
wargv
[
i
]);
}
}
continue
;
continue
;
}
else
if
(
!
wcscmp
(
wargv
[
i
],
L"-n"
))
{
// nickName
}
else
if
(
!
std
::
wcscmp
(
wargv
[
i
],
L"-n"
))
{
// nickName
++
i
;
++
i
;
if
(
i
<
wargc
)
if
(
i
<
wargc
)
ygo
::
mainGame
->
ebNickName
->
setText
(
wargv
[
i
]);
ygo
::
mainGame
->
ebNickName
->
setText
(
wargv
[
i
]);
continue
;
continue
;
}
else
if
(
!
wcscmp
(
wargv
[
i
],
L"-h"
))
{
// Host address
}
else
if
(
!
std
::
wcscmp
(
wargv
[
i
],
L"-h"
))
{
// Host address
++
i
;
++
i
;
if
(
i
<
wargc
)
if
(
i
<
wargc
)
ygo
::
mainGame
->
ebJoinHost
->
setText
(
wargv
[
i
]);
ygo
::
mainGame
->
ebJoinHost
->
setText
(
wargv
[
i
]);
continue
;
continue
;
}
else
if
(
!
wcscmp
(
wargv
[
i
],
L"-p"
))
{
// host Port
}
else
if
(
!
std
::
wcscmp
(
wargv
[
i
],
L"-p"
))
{
// host Port
++
i
;
++
i
;
if
(
i
<
wargc
)
if
(
i
<
wargc
)
ygo
::
mainGame
->
ebJoinPort
->
setText
(
wargv
[
i
]);
ygo
::
mainGame
->
ebJoinPort
->
setText
(
wargv
[
i
]);
continue
;
continue
;
}
else
if
(
!
wcscmp
(
wargv
[
i
],
L"-w"
))
{
// host passWord
}
else
if
(
!
std
::
wcscmp
(
wargv
[
i
],
L"-w"
))
{
// host passWord
++
i
;
++
i
;
if
(
i
<
wargc
)
if
(
i
<
wargc
)
ygo
::
mainGame
->
ebJoinPass
->
setText
(
wargv
[
i
]);
ygo
::
mainGame
->
ebJoinPass
->
setText
(
wargv
[
i
]);
continue
;
continue
;
}
else
if
(
!
wcscmp
(
wargv
[
i
],
L"-k"
))
{
// Keep on return
}
else
if
(
!
std
::
wcscmp
(
wargv
[
i
],
L"-k"
))
{
// Keep on return
exit_on_return
=
false
;
exit_on_return
=
false
;
keep_on_return
=
true
;
keep_on_return
=
true
;
}
else
if
(
!
wcscmp
(
wargv
[
i
],
L"--deck-category"
))
{
}
else
if
(
!
std
::
wcscmp
(
wargv
[
i
],
L"--deck-category"
))
{
++
i
;
++
i
;
if
(
i
<
wargc
)
{
if
(
i
<
wargc
)
{
deckCategorySpecified
=
true
;
deckCategorySpecified
=
true
;
BufferIO
::
CopyWideString
(
wargv
[
i
],
ygo
::
mainGame
->
gameConf
.
lastcategory
);
BufferIO
::
CopyWideString
(
wargv
[
i
],
ygo
::
mainGame
->
gameConf
.
lastcategory
);
}
}
}
else
if
(
!
wcscmp
(
wargv
[
i
],
L"-d"
))
{
// Deck
}
else
if
(
!
std
::
wcscmp
(
wargv
[
i
],
L"-d"
))
{
// Deck
++
i
;
++
i
;
if
(
!
deckCategorySpecified
)
if
(
!
deckCategorySpecified
)
ygo
::
mainGame
->
gameConf
.
lastcategory
[
0
]
=
0
;
ygo
::
mainGame
->
gameConf
.
lastcategory
[
0
]
=
0
;
...
@@ -203,17 +203,17 @@ int main(int argc, char* argv[]) {
...
@@ -203,17 +203,17 @@ int main(int argc, char* argv[]) {
ClickButton
(
ygo
::
mainGame
->
btnDeckEdit
);
ClickButton
(
ygo
::
mainGame
->
btnDeckEdit
);
break
;
break
;
}
}
}
else
if
(
!
wcscmp
(
wargv
[
i
],
L"-c"
))
{
// Create host
}
else
if
(
!
std
::
wcscmp
(
wargv
[
i
],
L"-c"
))
{
// Create host
exit_on_return
=
!
keep_on_return
;
exit_on_return
=
!
keep_on_return
;
ygo
::
mainGame
->
HideElement
(
ygo
::
mainGame
->
wMainMenu
);
ygo
::
mainGame
->
HideElement
(
ygo
::
mainGame
->
wMainMenu
);
ClickButton
(
ygo
::
mainGame
->
btnHostConfirm
);
ClickButton
(
ygo
::
mainGame
->
btnHostConfirm
);
break
;
break
;
}
else
if
(
!
wcscmp
(
wargv
[
i
],
L"-j"
))
{
// Join host
}
else
if
(
!
std
::
wcscmp
(
wargv
[
i
],
L"-j"
))
{
// Join host
exit_on_return
=
!
keep_on_return
;
exit_on_return
=
!
keep_on_return
;
ygo
::
mainGame
->
HideElement
(
ygo
::
mainGame
->
wMainMenu
);
ygo
::
mainGame
->
HideElement
(
ygo
::
mainGame
->
wMainMenu
);
ClickButton
(
ygo
::
mainGame
->
btnJoinHost
);
ClickButton
(
ygo
::
mainGame
->
btnJoinHost
);
break
;
break
;
}
else
if
(
!
wcscmp
(
wargv
[
i
],
L"-r"
))
{
// Replay
}
else
if
(
!
std
::
wcscmp
(
wargv
[
i
],
L"-r"
))
{
// Replay
exit_on_return
=
!
keep_on_return
;
exit_on_return
=
!
keep_on_return
;
++
i
;
++
i
;
if
(
i
<
wargc
)
{
if
(
i
<
wargc
)
{
...
@@ -224,7 +224,7 @@ int main(int argc, char* argv[]) {
...
@@ -224,7 +224,7 @@ int main(int argc, char* argv[]) {
if
(
open_file
)
if
(
open_file
)
ClickButton
(
ygo
::
mainGame
->
btnLoadReplay
);
ClickButton
(
ygo
::
mainGame
->
btnLoadReplay
);
break
;
break
;
}
else
if
(
!
wcscmp
(
wargv
[
i
],
L"-s"
))
{
// Single
}
else
if
(
!
std
::
wcscmp
(
wargv
[
i
],
L"-s"
))
{
// Single
exit_on_return
=
!
keep_on_return
;
exit_on_return
=
!
keep_on_return
;
++
i
;
++
i
;
if
(
i
<
wargc
)
{
if
(
i
<
wargc
)
{
...
@@ -235,8 +235,8 @@ int main(int argc, char* argv[]) {
...
@@ -235,8 +235,8 @@ int main(int argc, char* argv[]) {
if
(
open_file
)
if
(
open_file
)
ClickButton
(
ygo
::
mainGame
->
btnLoadSinglePlay
);
ClickButton
(
ygo
::
mainGame
->
btnLoadSinglePlay
);
break
;
break
;
}
else
if
(
wargc
==
2
&&
wcslen
(
wargv
[
1
])
>=
4
)
{
}
else
if
(
wargc
==
2
&&
std
::
wcslen
(
wargv
[
1
])
>=
4
)
{
wchar_t
*
pstrext
=
wargv
[
1
]
+
wcslen
(
wargv
[
1
])
-
4
;
wchar_t
*
pstrext
=
wargv
[
1
]
+
std
::
wcslen
(
wargv
[
1
])
-
4
;
if
(
!
mywcsncasecmp
(
pstrext
,
L".ydk"
,
4
))
{
if
(
!
mywcsncasecmp
(
pstrext
,
L".ydk"
,
4
))
{
open_file
=
true
;
open_file
=
true
;
BufferIO
::
CopyWideString
(
wargv
[
i
],
open_file_name
);
BufferIO
::
CopyWideString
(
wargv
[
i
],
open_file_name
);
...
...
gframe/menu_handler.cpp
View file @
c85207e4
...
@@ -98,7 +98,7 @@ bool MenuHandler::OnEvent(const irr::SEvent& event) {
...
@@ -98,7 +98,7 @@ bool MenuHandler::OnEvent(const irr::SEvent& event) {
evutil_freeaddrinfo
(
answer
);
evutil_freeaddrinfo
(
answer
);
}
}
}
}
unsigned
int
remote_port
=
wcstol
(
portstr
,
nullptr
,
10
);
unsigned
int
remote_port
=
std
::
wcstol
(
portstr
,
nullptr
,
10
);
BufferIO
::
CopyWideString
(
pstr
,
mainGame
->
gameConf
.
lasthost
);
BufferIO
::
CopyWideString
(
pstr
,
mainGame
->
gameConf
.
lasthost
);
BufferIO
::
CopyWideString
(
portstr
,
mainGame
->
gameConf
.
lastport
);
BufferIO
::
CopyWideString
(
portstr
,
mainGame
->
gameConf
.
lastport
);
if
(
DuelClient
::
StartClient
(
remote_addr
,
remote_port
,
false
))
{
if
(
DuelClient
::
StartClient
(
remote_addr
,
remote_port
,
false
))
{
...
@@ -257,7 +257,7 @@ bool MenuHandler::OnEvent(const irr::SEvent& event) {
...
@@ -257,7 +257,7 @@ bool MenuHandler::OnEvent(const irr::SEvent& event) {
mainGame
->
dField
.
Clear
();
mainGame
->
dField
.
Clear
();
mainGame
->
HideElement
(
mainGame
->
wReplay
);
mainGame
->
HideElement
(
mainGame
->
wReplay
);
mainGame
->
device
->
setEventReceiver
(
&
mainGame
->
dField
);
mainGame
->
device
->
setEventReceiver
(
&
mainGame
->
dField
);
unsigned
int
start_turn
=
wcstol
(
mainGame
->
ebRepStartTurn
->
getText
(),
nullptr
,
10
);
unsigned
int
start_turn
=
std
::
wcstol
(
mainGame
->
ebRepStartTurn
->
getText
(),
nullptr
,
10
);
if
(
start_turn
==
1
)
if
(
start_turn
==
1
)
start_turn
=
0
;
start_turn
=
0
;
ReplayMode
::
StartReplay
(
start_turn
);
ReplayMode
::
StartReplay
(
start_turn
);
...
@@ -435,14 +435,14 @@ bool MenuHandler::OnEvent(const irr::SEvent& event) {
...
@@ -435,14 +435,14 @@ bool MenuHandler::OnEvent(const irr::SEvent& event) {
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
=
std
::
wcsrchr
(
open_file_name
,
L'\\'
);
#else
#else
wchar_t
*
dash
=
wcsrchr
(
open_file_name
,
L'/'
);
wchar_t
*
dash
=
std
::
wcsrchr
(
open_file_name
,
L'/'
);
#endif
#endif
wchar_t
*
dot
=
wcsrchr
(
open_file_name
,
L'.'
);
wchar_t
*
dot
=
std
::
wcsrchr
(
open_file_name
,
L'.'
);
if
(
dash
&&
dot
&&
!
mywcsncasecmp
(
dot
,
L".ydk"
,
4
))
{
// full path
if
(
dash
&&
dot
&&
!
mywcsncasecmp
(
dot
,
L".ydk"
,
4
))
{
// full path
wchar_t
deck_name
[
256
];
wchar_t
deck_name
[
256
];
wcsncpy
(
deck_name
,
dash
+
1
,
dot
-
dash
-
1
);
std
::
wcsncpy
(
deck_name
,
dash
+
1
,
dot
-
dash
-
1
);
deck_name
[
dot
-
dash
-
1
]
=
L'\0'
;
deck_name
[
dot
-
dash
-
1
]
=
L'\0'
;
mainGame
->
ebDeckname
->
setText
(
deck_name
);
mainGame
->
ebDeckname
->
setText
(
deck_name
);
mainGame
->
cbDBCategory
->
setSelected
(
-
1
);
mainGame
->
cbDBCategory
->
setSelected
(
-
1
);
...
@@ -452,9 +452,9 @@ bool MenuHandler::OnEvent(const irr::SEvent& event) {
...
@@ -452,9 +452,9 @@ bool MenuHandler::OnEvent(const irr::SEvent& event) {
mainGame
->
cbDBDecks
->
setEnabled
(
false
);
mainGame
->
cbDBDecks
->
setEnabled
(
false
);
}
else
if
(
dash
)
{
// has category
}
else
if
(
dash
)
{
// has category
wchar_t
deck_name
[
256
];
wchar_t
deck_name
[
256
];
wcsncpy
(
deck_name
,
dash
+
1
,
256
);
std
::
wcsncpy
(
deck_name
,
dash
+
1
,
256
);
for
(
size_t
i
=
0
;
i
<
mainGame
->
cbDBDecks
->
getItemCount
();
++
i
)
{
for
(
size_t
i
=
0
;
i
<
mainGame
->
cbDBDecks
->
getItemCount
();
++
i
)
{
if
(
!
wcscmp
(
mainGame
->
cbDBDecks
->
getItem
(
i
),
deck_name
))
{
if
(
!
std
::
wcscmp
(
mainGame
->
cbDBDecks
->
getItem
(
i
),
deck_name
))
{
BufferIO
::
CopyWideString
(
deck_name
,
mainGame
->
gameConf
.
lastdeck
);
BufferIO
::
CopyWideString
(
deck_name
,
mainGame
->
gameConf
.
lastdeck
);
mainGame
->
cbDBDecks
->
setSelected
(
i
);
mainGame
->
cbDBDecks
->
setSelected
(
i
);
break
;
break
;
...
@@ -462,7 +462,7 @@ bool MenuHandler::OnEvent(const irr::SEvent& event) {
...
@@ -462,7 +462,7 @@ bool MenuHandler::OnEvent(const irr::SEvent& event) {
}
}
}
else
{
// only deck name
}
else
{
// only deck name
for
(
size_t
i
=
0
;
i
<
mainGame
->
cbDBDecks
->
getItemCount
();
++
i
)
{
for
(
size_t
i
=
0
;
i
<
mainGame
->
cbDBDecks
->
getItemCount
();
++
i
)
{
if
(
!
wcscmp
(
mainGame
->
cbDBDecks
->
getItem
(
i
),
open_file_name
))
{
if
(
!
std
::
wcscmp
(
mainGame
->
cbDBDecks
->
getItem
(
i
),
open_file_name
))
{
BufferIO
::
CopyWideString
(
open_file_name
,
mainGame
->
gameConf
.
lastdeck
);
BufferIO
::
CopyWideString
(
open_file_name
,
mainGame
->
gameConf
.
lastdeck
);
mainGame
->
cbDBDecks
->
setSelected
(
i
);
mainGame
->
cbDBDecks
->
setSelected
(
i
);
break
;
break
;
...
@@ -502,7 +502,7 @@ bool MenuHandler::OnEvent(const irr::SEvent& event) {
...
@@ -502,7 +502,7 @@ bool MenuHandler::OnEvent(const irr::SEvent& event) {
if
(
prev_operation
==
BUTTON_RENAME_REPLAY
)
{
if
(
prev_operation
==
BUTTON_RENAME_REPLAY
)
{
wchar_t
newname
[
256
];
wchar_t
newname
[
256
];
BufferIO
::
CopyWideString
(
mainGame
->
ebRSName
->
getText
(),
newname
);
BufferIO
::
CopyWideString
(
mainGame
->
ebRSName
->
getText
(),
newname
);
if
(
mywcsncasecmp
(
newname
+
wcslen
(
newname
)
-
4
,
L".yrp"
,
4
))
{
if
(
mywcsncasecmp
(
newname
+
std
::
wcslen
(
newname
)
-
4
,
L".yrp"
,
4
))
{
myswprintf
(
newname
,
L"%ls.yrp"
,
mainGame
->
ebRSName
->
getText
());
myswprintf
(
newname
,
L"%ls.yrp"
,
mainGame
->
ebRSName
->
getText
());
}
}
if
(
Replay
::
RenameReplay
(
mainGame
->
lstReplayList
->
getListItem
(
prev_sel
),
newname
))
{
if
(
Replay
::
RenameReplay
(
mainGame
->
lstReplayList
->
getListItem
(
prev_sel
),
newname
))
{
...
@@ -557,7 +557,7 @@ bool MenuHandler::OnEvent(const irr::SEvent& event) {
...
@@ -557,7 +557,7 @@ bool MenuHandler::OnEvent(const irr::SEvent& event) {
else
else
curtime
=
ReplayMode
::
cur_replay
.
pheader
.
seed
;
curtime
=
ReplayMode
::
cur_replay
.
pheader
.
seed
;
tm
*
st
=
localtime
(
&
curtime
);
tm
*
st
=
localtime
(
&
curtime
);
wcsftime
(
infobuf
,
256
,
L"%Y/%m/%d %H:%M:%S
\n
"
,
st
);
std
::
wcsftime
(
infobuf
,
256
,
L"%Y/%m/%d %H:%M:%S
\n
"
,
st
);
repinfo
.
append
(
infobuf
);
repinfo
.
append
(
infobuf
);
wchar_t
namebuf
[
4
][
20
]{};
wchar_t
namebuf
[
4
][
20
]{};
ReplayMode
::
cur_replay
.
ReadName
(
namebuf
[
0
]);
ReplayMode
::
cur_replay
.
ReadName
(
namebuf
[
0
]);
...
...
gframe/network.h
View file @
c85207e4
...
@@ -14,7 +14,7 @@
...
@@ -14,7 +14,7 @@
namespace
ygo
{
namespace
ygo
{
constexpr
int
SIZE_NETWORK_BUFFER
=
0x20000
;
constexpr
int
SIZE_NETWORK_BUFFER
=
0x20000
;
constexpr
int
MAX_DATA_SIZE
=
SIZE_NETWORK_BUFFER
-
3
;
constexpr
int
MAX_DATA_SIZE
=
UINT16_MAX
-
1
;
constexpr
int
MAINC_MAX
=
250
;
// the limit of card_state
constexpr
int
MAINC_MAX
=
250
;
// the limit of card_state
constexpr
int
SIDEC_MAX
=
MAINC_MAX
;
constexpr
int
SIDEC_MAX
=
MAINC_MAX
;
...
...
gframe/replay.h
View file @
c85207e4
...
@@ -13,8 +13,8 @@ namespace ygo {
...
@@ -13,8 +13,8 @@ namespace ygo {
#define REPLAY_UNIFORM 0x10
#define REPLAY_UNIFORM 0x10
// max size
// max size
#define MAX_REPLAY_SIZE 0x20000
constexpr
int
MAX_REPLAY_SIZE
=
0x20000
;
#define MAX_COMP_SIZE 0x2000
constexpr
int
MAX_COMP_SIZE
=
UINT16_MAX
+
1
;
#ifdef YGOPRO_SERVER_MODE
#ifdef YGOPRO_SERVER_MODE
#define REPLAY_MODE_SAVE_IN_SERVER 0x1
#define REPLAY_MODE_SAVE_IN_SERVER 0x1
...
...
gframe/single_duel.cpp
View file @
c85207e4
...
@@ -63,18 +63,18 @@ void SingleDuel::JoinGame(DuelPlayer* dp, unsigned char* pdata, bool is_creater)
...
@@ -63,18 +63,18 @@ void SingleDuel::JoinGame(DuelPlayer* dp, unsigned char* pdata, bool is_creater)
BufferIO
::
NullTerminate
(
pkt
->
pass
);
BufferIO
::
NullTerminate
(
pkt
->
pass
);
BufferIO
::
CopyCharArray
(
pkt
->
pass
,
jpass
);
BufferIO
::
CopyCharArray
(
pkt
->
pass
,
jpass
);
#ifdef YGOPRO_SERVER_MODE
#ifdef YGOPRO_SERVER_MODE
if
(
!
wcscmp
(
jpass
,
L"the Big Brother"
)
&&
!
cache_recorder
)
{
if
(
!
std
::
wcscmp
(
jpass
,
L"the Big Brother"
)
&&
!
cache_recorder
)
{
is_recorder
=
true
;
is_recorder
=
true
;
cache_recorder
=
dp
;
cache_recorder
=
dp
;
}
}
#ifndef YGOPRO_SERVER_MODE_DISABLE_CLOUD_REPLAY
#ifndef YGOPRO_SERVER_MODE_DISABLE_CLOUD_REPLAY
if
(
!
wcscmp
(
jpass
,
L"Marshtomp"
)
&&
!
replay_recorder
)
{
if
(
!
std
::
wcscmp
(
jpass
,
L"Marshtomp"
)
&&
!
replay_recorder
)
{
is_recorder
=
true
;
is_recorder
=
true
;
replay_recorder
=
dp
;
replay_recorder
=
dp
;
}
}
#endif //YGOPRO_SERVER_MODE_DISABLE_CLOUD_REPLAY
#endif //YGOPRO_SERVER_MODE_DISABLE_CLOUD_REPLAY
#else
#else
if
(
wcscmp
(
jpass
,
pass
))
{
if
(
std
::
wcscmp
(
jpass
,
pass
))
{
STOC_ErrorMsg
scem
;
STOC_ErrorMsg
scem
;
scem
.
msg
=
ERRMSG_JOINERROR
;
scem
.
msg
=
ERRMSG_JOINERROR
;
scem
.
code
=
1
;
scem
.
code
=
1
;
...
@@ -392,6 +392,8 @@ void SingleDuel::PlayerKick(DuelPlayer* dp, unsigned char pos) {
...
@@ -392,6 +392,8 @@ void SingleDuel::PlayerKick(DuelPlayer* dp, unsigned char pos) {
void
SingleDuel
::
UpdateDeck
(
DuelPlayer
*
dp
,
unsigned
char
*
pdata
,
int
len
)
{
void
SingleDuel
::
UpdateDeck
(
DuelPlayer
*
dp
,
unsigned
char
*
pdata
,
int
len
)
{
if
(
dp
->
type
>
1
||
ready
[
dp
->
type
])
if
(
dp
->
type
>
1
||
ready
[
dp
->
type
])
return
;
return
;
if
(
len
<
8
||
len
>
sizeof
(
CTOS_DeckData
))
return
;
bool
valid
=
true
;
bool
valid
=
true
;
const
int
deck_size
=
len
-
2
*
sizeof
(
int32_t
);
const
int
deck_size
=
len
-
2
*
sizeof
(
int32_t
);
CTOS_DeckData
deckbuf
;
CTOS_DeckData
deckbuf
;
...
...
gframe/single_duel.h
View file @
c85207e4
...
@@ -90,3 +90,4 @@ protected:
...
@@ -90,3 +90,4 @@ protected:
}
}
#endif //SINGLE_DUEL_H
#endif //SINGLE_DUEL_H
gframe/single_mode.cpp
View file @
c85207e4
...
@@ -138,7 +138,7 @@ int SingleMode::SinglePlayThread() {
...
@@ -138,7 +138,7 @@ int SingleMode::SinglePlayThread() {
time_t
nowtime
=
time
(
nullptr
);
time_t
nowtime
=
time
(
nullptr
);
tm
*
localedtime
=
localtime
(
&
nowtime
);
tm
*
localedtime
=
localtime
(
&
nowtime
);
wchar_t
timetext
[
40
];
wchar_t
timetext
[
40
];
wcsftime
(
timetext
,
40
,
L"%Y-%m-%d %H-%M-%S"
,
localedtime
);
std
::
wcsftime
(
timetext
,
40
,
L"%Y-%m-%d %H-%M-%S"
,
localedtime
);
mainGame
->
ebRSName
->
setText
(
timetext
);
mainGame
->
ebRSName
->
setText
(
timetext
);
if
(
!
mainGame
->
chkAutoSaveReplay
->
isChecked
())
{
if
(
!
mainGame
->
chkAutoSaveReplay
->
isChecked
())
{
mainGame
->
wReplaySave
->
setText
(
dataManager
.
GetSysString
(
1340
));
mainGame
->
wReplaySave
->
setText
(
dataManager
.
GetSysString
(
1340
));
...
...
gframe/tag_duel.cpp
View file @
c85207e4
...
@@ -67,18 +67,18 @@ void TagDuel::JoinGame(DuelPlayer* dp, unsigned char* pdata, bool is_creater) {
...
@@ -67,18 +67,18 @@ void TagDuel::JoinGame(DuelPlayer* dp, unsigned char* pdata, bool is_creater) {
BufferIO
::
NullTerminate
(
pkt
->
pass
);
BufferIO
::
NullTerminate
(
pkt
->
pass
);
BufferIO
::
CopyCharArray
(
pkt
->
pass
,
jpass
);
BufferIO
::
CopyCharArray
(
pkt
->
pass
,
jpass
);
#ifdef YGOPRO_SERVER_MODE
#ifdef YGOPRO_SERVER_MODE
if
(
!
wcscmp
(
jpass
,
L"the Big Brother"
)
&&
!
cache_recorder
)
{
if
(
!
std
::
wcscmp
(
jpass
,
L"the Big Brother"
)
&&
!
cache_recorder
)
{
is_recorder
=
true
;
is_recorder
=
true
;
cache_recorder
=
dp
;
cache_recorder
=
dp
;
}
}
#ifndef YGOPRO_SERVER_MODE_DISABLE_CLOUD_REPLAY
#ifndef YGOPRO_SERVER_MODE_DISABLE_CLOUD_REPLAY
if
(
!
wcscmp
(
jpass
,
L"Marshtomp"
)
&&
!
replay_recorder
)
{
if
(
!
std
::
wcscmp
(
jpass
,
L"Marshtomp"
)
&&
!
replay_recorder
)
{
is_recorder
=
true
;
is_recorder
=
true
;
replay_recorder
=
dp
;
replay_recorder
=
dp
;
}
}
#endif //YGOPRO_SERVER_MODE_DISABLE_CLOUD_REPLAY
#endif //YGOPRO_SERVER_MODE_DISABLE_CLOUD_REPLAY
#else
#else
if
(
wcscmp
(
jpass
,
pass
))
{
if
(
std
::
wcscmp
(
jpass
,
pass
))
{
STOC_ErrorMsg
scem
;
STOC_ErrorMsg
scem
;
scem
.
msg
=
ERRMSG_JOINERROR
;
scem
.
msg
=
ERRMSG_JOINERROR
;
scem
.
code
=
1
;
scem
.
code
=
1
;
...
@@ -378,6 +378,8 @@ void TagDuel::PlayerKick(DuelPlayer* dp, unsigned char pos) {
...
@@ -378,6 +378,8 @@ void TagDuel::PlayerKick(DuelPlayer* dp, unsigned char pos) {
void
TagDuel
::
UpdateDeck
(
DuelPlayer
*
dp
,
unsigned
char
*
pdata
,
int
len
)
{
void
TagDuel
::
UpdateDeck
(
DuelPlayer
*
dp
,
unsigned
char
*
pdata
,
int
len
)
{
if
(
dp
->
type
>
3
||
ready
[
dp
->
type
])
if
(
dp
->
type
>
3
||
ready
[
dp
->
type
])
return
;
return
;
if
(
len
<
8
||
len
>
sizeof
(
CTOS_DeckData
))
return
;
bool
valid
=
true
;
bool
valid
=
true
;
const
int
deck_size
=
len
-
2
*
sizeof
(
int32_t
);
const
int
deck_size
=
len
-
2
*
sizeof
(
int32_t
);
CTOS_DeckData
deckbuf
;
CTOS_DeckData
deckbuf
;
...
...
gframe/tag_duel.h
View file @
c85207e4
...
@@ -88,3 +88,4 @@ protected:
...
@@ -88,3 +88,4 @@ protected:
}
}
#endif //TAG_DUEL_H
#endif //TAG_DUEL_H
ocgcore
@
488371e3
Subproject commit
87421ada2f3a956c008c06a1ff2a8faa735bf553
Subproject commit
488371e3164ba985c62255033968e60cb23c22eb
script
@
5a640df5
Subproject commit
a3b6b284fea27f7601a6a479bdc22ac682939e8f
Subproject commit
5a640df5b0d406573ebdb5a743bef38fd38e5ed3
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