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
f1ce2613
Commit
f1ce2613
authored
Jan 27, 2025
by
mercury233
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'master' of
https://github.com/Fluorohydride/ygopro
into server
parents
60dc4cd7
122b4187
Changes
2
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
46 additions
and
40 deletions
+46
-40
gframe/data_manager.cpp
gframe/data_manager.cpp
+41
-36
gframe/data_manager.h
gframe/data_manager.h
+5
-4
No files found.
gframe/data_manager.cpp
View file @
f1ce2613
...
@@ -8,7 +8,7 @@
...
@@ -8,7 +8,7 @@
namespace
ygo
{
namespace
ygo
{
const
wchar_t
*
DataManager
::
unknown_string
=
L"???"
;
const
wchar_t
*
DataManager
::
unknown_string
=
L"???"
;
unsigned
char
DataManager
::
scriptBuffer
[
0x100000
];
unsigned
char
DataManager
::
scriptBuffer
[
0x100000
]
=
{}
;
#if !defined(YGOPRO_SERVER_MODE) || defined(SERVER_ZIP_SUPPORT)
#if !defined(YGOPRO_SERVER_MODE) || defined(SERVER_ZIP_SUPPORT)
irr
::
io
::
IFileSystem
*
DataManager
::
FileSystem
=
nullptr
;
irr
::
io
::
IFileSystem
*
DataManager
::
FileSystem
=
nullptr
;
#endif
#endif
...
@@ -417,42 +417,47 @@ uint32_t DataManager::CardReader(uint32_t code, card_data* pData) {
...
@@ -417,42 +417,47 @@ uint32_t DataManager::CardReader(uint32_t code, card_data* 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
)
{
return
DefaultScriptReader
(
script_name
,
slen
);
#else
#ifdef _WIN32
#ifdef _WIN32
wchar_t
fname
[
256
]{};
wchar_t
fname
[
256
]{};
BufferIO
::
DecodeUTF8
(
script_name
,
fname
);
BufferIO
::
DecodeUTF8
(
script_name
,
fname
);
...
@@ -468,9 +473,9 @@ unsigned char* DataManager::ScriptReader(const char* script_name, int* slen) {
...
@@ -468,9 +473,9 @@ unsigned char* DataManager::ScriptReader(const char* script_name, int* slen) {
return
nullptr
;
return
nullptr
;
*
slen
=
size
;
*
slen
=
size
;
return
scriptBuffer
;
return
scriptBuffer
;
#endif //YGOPRO_SERVER_MODE
}
}
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"
);
...
...
gframe/data_manager.h
View file @
f1ce2613
...
@@ -88,13 +88,14 @@ public:
...
@@ -88,13 +88,14 @@ public:
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
;
...
...
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