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
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
MyCard
ygopro
Commits
eb93522b
Commit
eb93522b
authored
May 20, 2025
by
wind2009
Browse files
Options
Browse Files
Download
Plain Diff
Merge remote-tracking branch 'upstream/master' into develop
parents
abd3f2e5
f9b5c7ed
Changes
16
Hide whitespace changes
Inline
Side-by-side
Showing
16 changed files
with
91 additions
and
90 deletions
+91
-90
.github/workflows/build.yml
.github/workflows/build.yml
+4
-32
gframe/bufferio.h
gframe/bufferio.h
+5
-5
gframe/deck_manager.cpp
gframe/deck_manager.cpp
+1
-1
gframe/deck_manager.h
gframe/deck_manager.h
+2
-2
gframe/game.cpp
gframe/game.cpp
+7
-1
gframe/gframe.cpp
gframe/gframe.cpp
+9
-3
gframe/menu_handler.cpp
gframe/menu_handler.cpp
+14
-14
gframe/premake5.lua
gframe/premake5.lua
+1
-1
gframe/replay.cpp
gframe/replay.cpp
+6
-2
gframe/replay.h
gframe/replay.h
+1
-1
gframe/replay_mode.cpp
gframe/replay_mode.cpp
+6
-4
gframe/single_mode.cpp
gframe/single_mode.cpp
+14
-10
premake/irrlicht/premake5.lua
premake/irrlicht/premake5.lua
+1
-0
premake/miniaudio/premake5.lua
premake/miniaudio/premake5.lua
+1
-1
premake5.lua
premake5.lua
+14
-12
strings.conf
strings.conf
+5
-1
No files found.
.github/workflows/build.yml
View file @
eb93522b
...
@@ -313,9 +313,7 @@ jobs:
...
@@ -313,9 +313,7 @@ jobs:
-
name
:
Use premake to generate make files
-
name
:
Use premake to generate make files
run
:
|
run
:
|
./premake5 gmake \
./premake5 gmake
--freetype-include-dir="/usr/include/freetype2" \
--opus-include-dir="/usr/include/opus"
-
name
:
Make
-
name
:
Make
run
:
|
run
:
|
...
@@ -406,35 +404,9 @@ jobs:
...
@@ -406,35 +404,9 @@ jobs:
cp -r premake/* .
cp -r premake/* .
cp -r resource/* .
cp -r resource/* .
-
name
:
Use premake to generate make files (Intel)
-
name
:
Use premake to generate make files
if
:
runner.arch == 'X64'
run
:
|
run
:
|
DYLD_LIBRARY_PATH=$(brew --prefix)/lib ./premake5 gmake --cc=clang
./premake5 gmake \
--cc=clang \
--freetype-include-dir="/usr/local/include/freetype2" \
--opus-include-dir="/usr/local/include/opus" \
--irrlicht-include-dir="../irrlicht/include" \
--irrlicht-lib-dir="../irrlicht/source/Irrlicht/MacOSX/build/Release"
-
name
:
Use premake to generate make files (ARM64)
if
:
runner.arch == 'ARM64'
run
:
|
./premake5 gmake \
--cc=clang \
--event-include-dir="/opt/homebrew/include" \
--event-lib-dir="/opt/homebrew/lib" \
--freetype-include-dir="/opt/homebrew/include/freetype2" \
--freetype-lib-dir="/opt/homebrew/lib" \
--sqlite-include-dir="/opt/homebrew/opt/sqlite/include" \
--sqlite-lib-dir="/opt/homebrew/opt/sqlite/lib" \
--miniaudio-include-dir="/opt/homebrew/include" \
--miniaudio-lib-dir="/opt/homebrew/lib" \
--opus-include-dir="/opt/homebrew/include/opus" \
--opus-lib-dir="/opt/homebrew/lib" \
--vorbis-include-dir="/opt/homebrew/include" \
--vorbis-lib-dir="/opt/homebrew/lib" \
--irrlicht-include-dir="../irrlicht/include" \
--irrlicht-lib-dir="../irrlicht/source/Irrlicht/MacOSX/build/Release"
-
name
:
Make
-
name
:
Make
run
:
|
run
:
|
...
...
gframe/bufferio.h
View file @
eb93522b
...
@@ -32,7 +32,7 @@ public:
...
@@ -32,7 +32,7 @@ public:
* @brief Copy a C-style string to another C-style string.
* @brief Copy a C-style string to another C-style string.
* @param src The source wide string
* @param src The source wide string
* @param pstr The destination char string
* @param pstr The destination char string
* @param bufsize The
size
of the destination buffer
* @param bufsize The
length
of the destination buffer
* @return The length of the copied string
* @return The length of the copied string
*/
*/
template
<
typename
T1
,
typename
T2
>
template
<
typename
T1
,
typename
T2
>
...
@@ -62,13 +62,13 @@ public:
...
@@ -62,13 +62,13 @@ public:
}
}
template
<
size_t
N
>
template
<
size_t
N
>
static
void
CopyString
(
const
char
*
src
,
char
(
&
dst
)[
N
])
{
static
void
CopyString
(
const
char
*
src
,
char
(
&
dst
)[
N
])
{
dst
[
0
]
=
0
;
std
::
strncpy
(
dst
,
src
,
N
-
1
)
;
std
::
strncat
(
dst
,
src
,
N
-
1
)
;
dst
[
N
-
1
]
=
0
;
}
}
template
<
size_t
N
>
template
<
size_t
N
>
static
void
CopyWideString
(
const
wchar_t
*
src
,
wchar_t
(
&
dst
)[
N
])
{
static
void
CopyWideString
(
const
wchar_t
*
src
,
wchar_t
(
&
dst
)[
N
])
{
dst
[
0
]
=
0
;
std
::
wcsncpy
(
dst
,
src
,
N
-
1
)
;
std
::
wcsncat
(
dst
,
src
,
N
-
1
)
;
dst
[
N
-
1
]
=
0
;
}
}
template
<
typename
T
>
template
<
typename
T
>
static
bool
CheckUTF8Byte
(
const
T
*
str
,
int
len
)
{
static
bool
CheckUTF8Byte
(
const
T
*
str
,
int
len
)
{
...
...
gframe/deck_manager.cpp
View file @
eb93522b
...
@@ -359,7 +359,7 @@ bool DeckManager::DeleteCategory(const wchar_t* name) {
...
@@ -359,7 +359,7 @@ bool DeckManager::DeleteCategory(const wchar_t* name) {
return
false
;
return
false
;
return
FileSystem
::
DeleteDir
(
localname
);
return
FileSystem
::
DeleteDir
(
localname
);
}
}
bool
DeckManager
::
SaveDeck
Buffer
(
const
ReplayDeck
&
deck
,
const
wchar_t
*
name
)
{
bool
DeckManager
::
SaveDeck
Array
(
const
DeckArray
&
deck
,
const
wchar_t
*
name
)
{
if
(
!
FileSystem
::
IsDirExists
(
L"./deck"
)
&&
!
FileSystem
::
MakeDir
(
L"./deck"
))
if
(
!
FileSystem
::
IsDirExists
(
L"./deck"
)
&&
!
FileSystem
::
MakeDir
(
L"./deck"
))
return
false
;
return
false
;
FILE
*
fp
=
OpenDeckFile
(
name
,
"w"
);
FILE
*
fp
=
OpenDeckFile
(
name
,
"w"
);
...
...
gframe/deck_manager.h
View file @
eb93522b
...
@@ -35,7 +35,7 @@ struct Deck {
...
@@ -35,7 +35,7 @@ struct Deck {
}
}
};
};
struct
ReplayDeck
{
struct
DeckArray
{
std
::
vector
<
uint32_t
>
main
;
std
::
vector
<
uint32_t
>
main
;
std
::
vector
<
uint32_t
>
extra
;
std
::
vector
<
uint32_t
>
extra
;
std
::
vector
<
uint32_t
>
side
;
std
::
vector
<
uint32_t
>
side
;
...
@@ -68,7 +68,7 @@ public:
...
@@ -68,7 +68,7 @@ public:
static
bool
CreateCategory
(
const
wchar_t
*
name
);
static
bool
CreateCategory
(
const
wchar_t
*
name
);
static
bool
RenameCategory
(
const
wchar_t
*
oldname
,
const
wchar_t
*
newname
);
static
bool
RenameCategory
(
const
wchar_t
*
oldname
,
const
wchar_t
*
newname
);
static
bool
DeleteCategory
(
const
wchar_t
*
name
);
static
bool
DeleteCategory
(
const
wchar_t
*
name
);
static
bool
SaveDeck
Buffer
(
const
ReplayDeck
&
deck
,
const
wchar_t
*
name
);
static
bool
SaveDeck
Array
(
const
DeckArray
&
deck
,
const
wchar_t
*
name
);
};
};
extern
DeckManager
deckManager
;
extern
DeckManager
deckManager
;
...
...
gframe/game.cpp
View file @
eb93522b
...
@@ -1580,7 +1580,10 @@ void Game::ShowCardInfo(int code, bool resize) {
...
@@ -1580,7 +1580,10 @@ void Game::ShowCardInfo(int code, bool resize) {
myswprintf
(
formatBuffer
,
L"%ls[%08d]"
,
dataManager
.
GetName
(
code
),
code
);
myswprintf
(
formatBuffer
,
L"%ls[%08d]"
,
dataManager
.
GetName
(
code
),
code
);
}
}
stName
->
setText
(
formatBuffer
);
stName
->
setText
(
formatBuffer
);
stName
->
setToolTipText
(
formatBuffer
);
if
((
int
)
guiFont
->
getDimension
(
formatBuffer
).
Width
>
stName
->
getRelativePosition
().
getWidth
()
-
gameConf
.
textfontsize
)
stName
->
setToolTipText
(
formatBuffer
);
else
stName
->
setToolTipText
(
nullptr
);
int
offset
=
0
;
int
offset
=
0
;
if
(
is_valid
&&
!
gameConf
.
hide_setname
)
{
if
(
is_valid
&&
!
gameConf
.
hide_setname
)
{
auto
&
cd
=
cit
->
second
;
auto
&
cd
=
cit
->
second
;
...
@@ -2057,6 +2060,9 @@ void Game::OnResize() {
...
@@ -2057,6 +2060,9 @@ void Game::OnResize() {
btnBigCardZoomIn
->
setRelativePosition
(
Resize
(
205
,
140
,
295
,
175
));
btnBigCardZoomIn
->
setRelativePosition
(
Resize
(
205
,
140
,
295
,
175
));
btnBigCardZoomOut
->
setRelativePosition
(
Resize
(
205
,
180
,
295
,
215
));
btnBigCardZoomOut
->
setRelativePosition
(
Resize
(
205
,
180
,
295
,
215
));
btnBigCardClose
->
setRelativePosition
(
Resize
(
205
,
230
,
295
,
265
));
btnBigCardClose
->
setRelativePosition
(
Resize
(
205
,
230
,
295
,
265
));
irr
::
s32
barWidth
=
(
xScale
>
1
)
?
gameConf
.
textfontsize
*
xScale
:
gameConf
.
textfontsize
;
env
->
getSkin
()
->
setSize
(
irr
::
gui
::
EGDS_SCROLLBAR_SIZE
,
barWidth
);
}
}
void
Game
::
ResizeChatInputWindow
()
{
void
Game
::
ResizeChatInputWindow
()
{
irr
::
s32
x
=
wInfos
->
getRelativePosition
().
LowerRightCorner
.
X
+
6
;
irr
::
s32
x
=
wInfos
->
getRelativePosition
().
LowerRightCorner
.
X
+
6
;
...
...
gframe/gframe.cpp
View file @
eb93522b
...
@@ -33,11 +33,17 @@ int main(int argc, char* argv[]) {
...
@@ -33,11 +33,17 @@ int main(int argc, char* argv[]) {
#ifdef __APPLE__
#ifdef __APPLE__
CFURLRef
bundle_url
=
CFBundleCopyBundleURL
(
CFBundleGetMainBundle
());
CFURLRef
bundle_url
=
CFBundleCopyBundleURL
(
CFBundleGetMainBundle
());
CFURLRef
bundle_base_url
=
CFURLCreateCopyDeletingLastPathComponent
(
nullptr
,
bundle_url
);
CFURLRef
bundle_base_url
=
CFURLCreateCopyDeletingLastPathComponent
(
nullptr
,
bundle_url
);
CFStringRef
bundle_ext
=
CFURLCopyPathExtension
(
bundle_url
);
if
(
bundle_ext
)
{
char
path
[
PATH_MAX
];
if
(
CFStringCompare
(
bundle_ext
,
CFSTR
(
"app"
),
kCFCompareCaseInsensitive
)
==
kCFCompareEqualTo
&&
CFURLGetFileSystemRepresentation
(
bundle_base_url
,
true
,
(
UInt8
*
)
path
,
PATH_MAX
))
{
chdir
(
path
);
}
CFRelease
(
bundle_ext
);
}
CFRelease
(
bundle_url
);
CFRelease
(
bundle_url
);
CFStringRef
path
=
CFURLCopyFileSystemPath
(
bundle_base_url
,
kCFURLPOSIXPathStyle
);
CFRelease
(
bundle_base_url
);
CFRelease
(
bundle_base_url
);
chdir
(
CFStringGetCStringPtr
(
path
,
kCFStringEncodingUTF8
));
CFRelease
(
path
);
#endif //__APPLE__
#endif //__APPLE__
#ifdef _WIN32
#ifdef _WIN32
if
(
argc
==
2
&&
(
ygo
::
IsExtension
(
argv
[
1
],
".ydk"
)
||
ygo
::
IsExtension
(
argv
[
1
],
".yrp"
)))
{
// open file from explorer
if
(
argc
==
2
&&
(
ygo
::
IsExtension
(
argv
[
1
],
".ydk"
)
||
ygo
::
IsExtension
(
argv
[
1
],
".yrp"
)))
{
// open file from explorer
...
...
gframe/menu_handler.cpp
View file @
eb93522b
...
@@ -299,24 +299,24 @@ bool MenuHandler::OnEvent(const irr::SEvent& event) {
...
@@ -299,24 +299,24 @@ bool MenuHandler::OnEvent(const irr::SEvent& event) {
auto
selected
=
mainGame
->
lstReplayList
->
getSelected
();
auto
selected
=
mainGame
->
lstReplayList
->
getSelected
();
if
(
selected
==
-
1
)
if
(
selected
==
-
1
)
break
;
break
;
Replay
replay
1
;
Replay
replay
;
wchar_t
replay_name
[
256
]{};
wchar_t
replay_
file
name
[
256
]{};
wchar_t
namebuf
[
4
][
20
]{};
wchar_t
namebuf
[
4
][
20
]{};
wchar_t
filename
[
256
]{};
wchar_t
filename
[
256
]{};
wchar_t
replay_path
[
256
]{};
wchar_t
replay_path
[
256
]{};
BufferIO
::
CopyWideString
(
mainGame
->
lstReplayList
->
getListItem
(
selected
),
replay_name
);
BufferIO
::
CopyWideString
(
mainGame
->
lstReplayList
->
getListItem
(
selected
),
replay_
file
name
);
myswprintf
(
replay_path
,
L"./replay/%ls"
,
replay_name
);
myswprintf
(
replay_path
,
L"./replay/%ls"
,
replay_
file
name
);
if
(
!
replay
1
.
OpenReplay
(
replay_path
))
if
(
!
replay
.
OpenReplay
(
replay_path
))
break
;
break
;
if
(
replay
1
.
pheader
.
flag
&
REPLAY_SINGLE_MODE
)
if
(
replay
.
pheader
.
flag
&
REPLAY_SINGLE_MODE
)
break
;
break
;
for
(
size_t
i
=
0
;
i
<
replay
1
.
decks
.
size
();
++
i
)
{
for
(
size_t
i
=
0
;
i
<
replay
.
decks
.
size
();
++
i
)
{
BufferIO
::
CopyWideString
(
replay
1
.
players
[
Replay
::
GetDeckPlayer
(
i
)].
c_str
(),
namebuf
[
i
]);
BufferIO
::
CopyWideString
(
replay
.
players
[
Replay
::
GetDeckPlayer
(
i
)].
c_str
(),
namebuf
[
i
]);
FileSystem
::
SafeFileName
(
namebuf
[
i
]);
FileSystem
::
SafeFileName
(
namebuf
[
i
]);
}
}
for
(
size_t
i
=
0
;
i
<
replay
1
.
decks
.
size
();
++
i
)
{
for
(
size_t
i
=
0
;
i
<
replay
.
decks
.
size
();
++
i
)
{
myswprintf
(
filename
,
L"./deck/%ls-%d %ls.ydk"
,
replay_name
,
i
+
1
,
namebuf
[
i
]);
myswprintf
(
filename
,
L"./deck/%ls-%d %ls.ydk"
,
replay_
file
name
,
i
+
1
,
namebuf
[
i
]);
DeckManager
::
SaveDeck
Buffer
(
replay1
.
decks
[
i
],
filename
);
DeckManager
::
SaveDeck
Array
(
replay
.
decks
[
i
],
filename
);
}
}
mainGame
->
stACMessage
->
setText
(
dataManager
.
GetSysString
(
1335
));
mainGame
->
stACMessage
->
setText
(
dataManager
.
GetSysString
(
1335
));
mainGame
->
PopupElement
(
mainGame
->
wACMessage
,
20
);
mainGame
->
PopupElement
(
mainGame
->
wACMessage
,
20
);
...
@@ -545,11 +545,11 @@ bool MenuHandler::OnEvent(const irr::SEvent& event) {
...
@@ -545,11 +545,11 @@ bool MenuHandler::OnEvent(const irr::SEvent& event) {
repinfo
.
append
(
path
);
repinfo
.
append
(
path
);
repinfo
.
append
(
L"
\n
"
);
repinfo
.
append
(
L"
\n
"
);
}
}
const
auto
&
namebuf
=
ReplayMode
::
cur_replay
.
players
;
const
auto
&
player_names
=
ReplayMode
::
cur_replay
.
players
;
if
(
ReplayMode
::
cur_replay
.
pheader
.
flag
&
REPLAY_TAG
)
if
(
ReplayMode
::
cur_replay
.
pheader
.
flag
&
REPLAY_TAG
)
myswprintf
(
infobuf
,
L"%ls
\n
%ls
\n
===VS===
\n
%ls
\n
%ls
\n
"
,
namebuf
[
0
].
c_str
(),
namebuf
[
1
].
c_str
(),
namebuf
[
2
].
c_str
(),
namebuf
[
3
].
c_str
());
myswprintf
(
infobuf
,
L"%ls
\n
%ls
\n
===VS===
\n
%ls
\n
%ls
\n
"
,
player_names
[
0
].
c_str
(),
player_names
[
1
].
c_str
(),
player_names
[
2
].
c_str
(),
player_names
[
3
].
c_str
());
else
else
myswprintf
(
infobuf
,
L"%ls
\n
===VS===
\n
%ls
\n
"
,
namebuf
[
0
].
c_str
(),
namebuf
[
1
].
c_str
());
myswprintf
(
infobuf
,
L"%ls
\n
===VS===
\n
%ls
\n
"
,
player_names
[
0
].
c_str
(),
player_names
[
1
].
c_str
());
repinfo
.
append
(
infobuf
);
repinfo
.
append
(
infobuf
);
mainGame
->
ebRepStartTurn
->
setText
(
L"1"
);
mainGame
->
ebRepStartTurn
->
setText
(
L"1"
);
mainGame
->
SetStaticText
(
mainGame
->
stReplayInfo
,
180
,
mainGame
->
guiFont
,
repinfo
.
c_str
());
mainGame
->
SetStaticText
(
mainGame
->
stReplayInfo
,
180
,
mainGame
->
guiFont
,
repinfo
.
c_str
());
...
...
gframe/premake5.lua
View file @
eb93522b
...
@@ -50,7 +50,7 @@ project "YGOPro"
...
@@ -50,7 +50,7 @@ project "YGOPro"
includedirs
{
"../miniaudio/extras/decoders/libopus"
,
"../miniaudio/extras/decoders/libvorbis"
}
includedirs
{
"../miniaudio/extras/decoders/libopus"
,
"../miniaudio/extras/decoders/libvorbis"
}
if
not
MINIAUDIO_BUILD_OPUS_VORBIS
then
if
not
MINIAUDIO_BUILD_OPUS_VORBIS
then
links
{
"opusfile"
,
"vorbisfile"
,
"opus"
,
"vorbis"
,
"ogg"
}
links
{
"opusfile"
,
"vorbisfile"
,
"opus"
,
"vorbis"
,
"ogg"
}
libdirs
{
OPUS_LIB_DIR
,
VORBIS_LIB_DIR
,
OGG_LIB
DIR
}
libdirs
{
OPUS_LIB_DIR
,
OPUSFILE_LIB_DIR
,
VORBIS_LIB_DIR
,
OGG_LIB_
DIR
}
end
end
end
end
end
end
...
...
gframe/replay.cpp
View file @
eb93522b
...
@@ -251,11 +251,15 @@ bool Replay::ReadInfo() {
...
@@ -251,11 +251,15 @@ bool Replay::ReadInfo() {
if
(
!
ReadData
(
filename
,
slen
))
if
(
!
ReadData
(
filename
,
slen
))
return
false
;
return
false
;
filename
[
slen
]
=
0
;
filename
[
slen
]
=
0
;
script_name
=
filename
;
if
(
std
::
strncmp
(
filename
,
"./single/"
,
9
))
return
false
;
script_name
=
filename
+
9
;
if
(
script_name
.
find_first_of
(
R"(/\)"
)
!=
std
::
string
::
npos
)
return
false
;
}
}
else
{
else
{
for
(
int
p
=
0
;
p
<
player_count
;
++
p
)
{
for
(
int
p
=
0
;
p
<
player_count
;
++
p
)
{
ReplayDeck
deck
;
DeckArray
deck
;
uint32_t
main
=
Read
<
uint32_t
>
();
uint32_t
main
=
Read
<
uint32_t
>
();
if
(
main
>
MAINC_MAX
)
if
(
main
>
MAINC_MAX
)
return
false
;
return
false
;
...
...
gframe/replay.h
View file @
eb93522b
...
@@ -94,7 +94,7 @@ public:
...
@@ -94,7 +94,7 @@ public:
std
::
vector
<
std
::
wstring
>
players
;
// 80 or 160 bytes
std
::
vector
<
std
::
wstring
>
players
;
// 80 or 160 bytes
DuelParameters
params
;
// 16 bytes
DuelParameters
params
;
// 16 bytes
std
::
vector
<
ReplayDeck
>
decks
;
// 4 bytes, main deck, 4 bytes, extra deck
std
::
vector
<
DeckArray
>
decks
;
// 4 bytes, main deck, 4 bytes, extra deck
std
::
string
script_name
;
// 2 bytes, script name (max: 256 bytes)
std
::
string
script_name
;
// 2 bytes, script name (max: 256 bytes)
private:
private:
...
...
gframe/replay_mode.cpp
View file @
eb93522b
...
@@ -159,7 +159,7 @@ bool ReplayMode::StartDuel() {
...
@@ -159,7 +159,7 @@ bool ReplayMode::StartDuel() {
unsigned
int
seed
=
rh
.
seed
;
unsigned
int
seed
=
rh
.
seed
;
std
::
mt19937
rnd
(
seed
);
std
::
mt19937
rnd
(
seed
);
cur_replay
.
SkipInfo
();
cur_replay
.
SkipInfo
();
if
(
mainGame
->
dInfo
.
isTag
)
{
if
(
rh
.
flag
&
REPLAY_TAG
)
{
BufferIO
::
CopyWideString
(
cur_replay
.
players
[
0
].
c_str
(),
mainGame
->
dInfo
.
hostname
);
BufferIO
::
CopyWideString
(
cur_replay
.
players
[
0
].
c_str
(),
mainGame
->
dInfo
.
hostname
);
BufferIO
::
CopyWideString
(
cur_replay
.
players
[
1
].
c_str
(),
mainGame
->
dInfo
.
hostname_tag
);
BufferIO
::
CopyWideString
(
cur_replay
.
players
[
1
].
c_str
(),
mainGame
->
dInfo
.
hostname_tag
);
BufferIO
::
CopyWideString
(
cur_replay
.
players
[
2
].
c_str
(),
mainGame
->
dInfo
.
clientname_tag
);
BufferIO
::
CopyWideString
(
cur_replay
.
players
[
2
].
c_str
(),
mainGame
->
dInfo
.
clientname_tag
);
...
@@ -208,7 +208,9 @@ bool ReplayMode::StartDuel() {
...
@@ -208,7 +208,9 @@ bool ReplayMode::StartDuel() {
new_tag_card
(
pduel
,
code
,
1
,
LOCATION_EXTRA
);
new_tag_card
(
pduel
,
code
,
1
,
LOCATION_EXTRA
);
}
}
}
else
{
}
else
{
if
(
!
preload_script
(
pduel
,
cur_replay
.
script_name
.
c_str
()))
{
char
filename
[
256
]{};
std
::
snprintf
(
filename
,
sizeof
filename
,
"./single/%s"
,
cur_replay
.
script_name
.
c_str
());
if
(
!
preload_script
(
pduel
,
filename
))
{
return
false
;
return
false
;
}
}
}
}
...
@@ -822,12 +824,12 @@ bool ReplayMode::ReplayAnalyze(unsigned char* msg, unsigned int len) {
...
@@ -822,12 +824,12 @@ bool ReplayMode::ReplayAnalyze(unsigned char* msg, unsigned int len) {
break
;
break
;
}
}
case
MSG_AI_NAME
:
{
case
MSG_AI_NAME
:
{
int
len
=
BufferIO
::
ReadInt16
(
pbuf
);
int
len
=
buffer_read
<
uint16_t
>
(
pbuf
);
pbuf
+=
len
+
1
;
pbuf
+=
len
+
1
;
break
;
break
;
}
}
case
MSG_SHOW_HINT
:
{
case
MSG_SHOW_HINT
:
{
int
len
=
BufferIO
::
ReadInt16
(
pbuf
);
int
len
=
buffer_read
<
uint16_t
>
(
pbuf
);
pbuf
+=
len
+
1
;
pbuf
+=
len
+
1
;
break
;
break
;
}
}
...
...
gframe/single_mode.cpp
View file @
eb93522b
...
@@ -749,21 +749,25 @@ bool SingleMode::SinglePlayAnalyze(unsigned char* msg, unsigned int len) {
...
@@ -749,21 +749,25 @@ bool SingleMode::SinglePlayAnalyze(unsigned char* msg, unsigned int len) {
case
MSG_AI_NAME
:
{
case
MSG_AI_NAME
:
{
char
namebuf
[
128
]{};
char
namebuf
[
128
]{};
wchar_t
wname
[
20
]{};
wchar_t
wname
[
20
]{};
int
len
=
BufferIO
::
ReadInt16
(
pbuf
);
int
name_len
=
buffer_read
<
uint16_t
>
(
pbuf
);
auto
begin
=
pbuf
;
if
(
name_len
+
1
<=
(
int
)
sizeof
namebuf
)
{
pbuf
+=
len
+
1
;
std
::
memcpy
(
namebuf
,
pbuf
,
name_len
);
std
::
memcpy
(
namebuf
,
begin
,
len
+
1
);
namebuf
[
name_len
]
=
0
;
}
pbuf
+=
name_len
+
1
;
BufferIO
::
DecodeUTF8
(
namebuf
,
wname
);
BufferIO
::
DecodeUTF8
(
namebuf
,
wname
);
BufferIO
::
CopyCharArray
(
wname
,
mainGame
->
dInfo
.
clientname
);
BufferIO
::
CopyCharArray
(
wname
,
mainGame
->
dInfo
.
clientname
);
break
;
break
;
}
}
case
MSG_SHOW_HINT
:
{
case
MSG_SHOW_HINT
:
{
char
msgbuf
[
1024
];
char
msgbuf
[
1024
]{};
wchar_t
msg
[
1024
];
wchar_t
msg
[
1024
]{};
int
len
=
BufferIO
::
ReadInt16
(
pbuf
);
int
msg_len
=
buffer_read
<
uint16_t
>
(
pbuf
);
auto
begin
=
pbuf
;
if
(
msg_len
+
1
<=
(
int
)
sizeof
msgbuf
)
{
pbuf
+=
len
+
1
;
std
::
memcpy
(
msgbuf
,
pbuf
,
msg_len
);
std
::
memcpy
(
msgbuf
,
begin
,
len
+
1
);
msgbuf
[
msg_len
]
=
0
;
}
pbuf
+=
msg_len
+
1
;
BufferIO
::
DecodeUTF8
(
msgbuf
,
msg
);
BufferIO
::
DecodeUTF8
(
msgbuf
,
msg
);
mainGame
->
gMutex
.
lock
();
mainGame
->
gMutex
.
lock
();
mainGame
->
SetStaticText
(
mainGame
->
stMessage
,
310
,
mainGame
->
guiFont
,
msg
);
mainGame
->
SetStaticText
(
mainGame
->
stMessage
,
310
,
mainGame
->
guiFont
,
msg
);
...
...
premake/irrlicht/premake5.lua
View file @
eb93522b
...
@@ -16,6 +16,7 @@ project "irrlicht"
...
@@ -16,6 +16,7 @@ project "irrlicht"
"_IRR_STATIC_LIB_"
,
"_IRR_STATIC_LIB_"
,
"NO_IRR_USE_NON_SYSTEM_BZLIB_"
,
"NO_IRR_USE_NON_SYSTEM_BZLIB_"
,
"NO_IRR_COMPILE_WITH_BZIP2_"
,
"NO_IRR_COMPILE_WITH_BZIP2_"
,
"NO_IRR_COMPILE_WITH_LZMA_"
,
"NO_IRR_COMPILE_WITH_CONSOLE_DEVICE_"
,
"NO_IRR_COMPILE_WITH_CONSOLE_DEVICE_"
,
"NO_IRR_COMPILE_WITH_DIRECT3D_8_"
,
"NO_IRR_COMPILE_WITH_DIRECT3D_8_"
,
"NO_IRR_COMPILE_WITH_DIRECTINPUT_JOYSTICK_"
,
"NO_IRR_COMPILE_WITH_DIRECTINPUT_JOYSTICK_"
,
...
...
premake/miniaudio/premake5.lua
View file @
eb93522b
...
@@ -123,7 +123,7 @@ project "miniaudio"
...
@@ -123,7 +123,7 @@ project "miniaudio"
"OPUS_HAVE_RTCD"
,
"OPUS_X86_MAY_HAVE_SSE"
,
"OPUS_X86_MAY_HAVE_SSE4_1"
,
"OPUS_X86_MAY_HAVE_AVX2"
,
"OPUS_HAVE_RTCD"
,
"OPUS_X86_MAY_HAVE_SSE"
,
"OPUS_X86_MAY_HAVE_SSE4_1"
,
"OPUS_X86_MAY_HAVE_AVX2"
,
}
}
else
else
includedirs
{
OPUS_INCLUDE_DIR
,
VORBIS_INCLUDE_DIR
,
OGG_INCLUDE_DIR
}
includedirs
{
OPUS_INCLUDE_DIR
,
OPUSFILE_INCLUDE_DIR
,
VORBIS_INCLUDE_DIR
,
OGG_INCLUDE_DIR
}
end
end
end
end
...
...
premake5.lua
View file @
eb93522b
...
@@ -46,14 +46,14 @@ newoption { trigger = "irrlicht-lib-dir", category = "YGOPro - irrlicht", descri
...
@@ -46,14 +46,14 @@ newoption { trigger = "irrlicht-lib-dir", category = "YGOPro - irrlicht", descri
newoption
{
trigger
=
"no-audio"
,
category
=
"YGOPro"
,
description
=
""
}
newoption
{
trigger
=
"no-audio"
,
category
=
"YGOPro"
,
description
=
""
}
newoption
{
trigger
=
"audio-lib"
,
category
=
"YGOPro"
,
description
=
""
,
value
=
"miniaudio, irrklang"
,
default
=
AUDIO_LIB
}
newoption
{
trigger
=
"audio-lib"
,
category
=
"YGOPro"
,
description
=
""
,
value
=
"miniaudio, irrklang"
,
default
=
AUDIO_LIB
}
newoption
{
trigger
=
"miniaudio-include-dir"
,
category
=
"YGOPro - miniaudio"
,
description
=
""
,
value
=
"PATH"
}
newoption
{
trigger
=
"miniaudio-lib-dir"
,
category
=
"YGOPro - miniaudio"
,
description
=
""
,
value
=
"PATH"
}
newoption
{
trigger
=
"miniaudio-support-opus-vorbis"
,
category
=
"YGOPro - miniaudio"
,
description
=
""
}
newoption
{
trigger
=
"miniaudio-support-opus-vorbis"
,
category
=
"YGOPro - miniaudio"
,
description
=
""
}
newoption
{
trigger
=
"no-miniaudio-support-opus-vorbis"
,
category
=
"YGOPro - miniaudio"
,
description
=
""
}
newoption
{
trigger
=
"no-miniaudio-support-opus-vorbis"
,
category
=
"YGOPro - miniaudio"
,
description
=
""
}
newoption
{
trigger
=
"build-opus-vorbis"
,
category
=
"YGOPro - miniaudio"
,
description
=
""
}
newoption
{
trigger
=
"build-opus-vorbis"
,
category
=
"YGOPro - miniaudio"
,
description
=
""
}
newoption
{
trigger
=
"no-build-opus-vorbis"
,
category
=
"YGOPro - miniaudio"
,
description
=
""
}
newoption
{
trigger
=
"no-build-opus-vorbis"
,
category
=
"YGOPro - miniaudio"
,
description
=
""
}
newoption
{
trigger
=
"opus-include-dir"
,
category
=
"YGOPro - miniaudio"
,
description
=
""
,
value
=
"PATH"
}
newoption
{
trigger
=
"opus-include-dir"
,
category
=
"YGOPro - miniaudio"
,
description
=
""
,
value
=
"PATH"
}
newoption
{
trigger
=
"opus-lib-dir"
,
category
=
"YGOPro - miniaudio"
,
description
=
""
,
value
=
"PATH"
}
newoption
{
trigger
=
"opus-lib-dir"
,
category
=
"YGOPro - miniaudio"
,
description
=
""
,
value
=
"PATH"
}
newoption
{
trigger
=
"opusfile-include-dir"
,
category
=
"YGOPro - miniaudio"
,
description
=
""
,
value
=
"PATH"
}
newoption
{
trigger
=
"opusfile-lib-dir"
,
category
=
"YGOPro - miniaudio"
,
description
=
""
,
value
=
"PATH"
}
newoption
{
trigger
=
"vorbis-include-dir"
,
category
=
"YGOPro - miniaudio"
,
description
=
""
,
value
=
"PATH"
}
newoption
{
trigger
=
"vorbis-include-dir"
,
category
=
"YGOPro - miniaudio"
,
description
=
""
,
value
=
"PATH"
}
newoption
{
trigger
=
"vorbis-lib-dir"
,
category
=
"YGOPro - miniaudio"
,
description
=
""
,
value
=
"PATH"
}
newoption
{
trigger
=
"vorbis-lib-dir"
,
category
=
"YGOPro - miniaudio"
,
description
=
""
,
value
=
"PATH"
}
newoption
{
trigger
=
"ogg-include-dir"
,
category
=
"YGOPro - miniaudio"
,
description
=
""
,
value
=
"PATH"
}
newoption
{
trigger
=
"ogg-include-dir"
,
category
=
"YGOPro - miniaudio"
,
description
=
""
,
value
=
"PATH"
}
...
@@ -86,7 +86,7 @@ if not BUILD_LUA then
...
@@ -86,7 +86,7 @@ if not BUILD_LUA then
-- at most times you need to change this if you change BUILD_LUA to false
-- at most times you need to change this if you change BUILD_LUA to false
-- make sure your lua lib is built with C++ and version >= 5.3
-- make sure your lua lib is built with C++ and version >= 5.3
LUA_LIB_NAME
=
GetParam
(
"lua-lib-name"
)
LUA_LIB_NAME
=
GetParam
(
"lua-lib-name"
)
LUA_INCLUDE_DIR
=
GetParam
(
"lua-include-dir"
)
or
os
.
findheader
(
LUA_LIB_NAME
)
LUA_INCLUDE_DIR
=
GetParam
(
"lua-include-dir"
)
or
os
.
findheader
(
"lua.h"
)
LUA_LIB_DIR
=
GetParam
(
"lua-lib-dir"
)
or
os
.
findlib
(
LUA_LIB_NAME
)
LUA_LIB_DIR
=
GetParam
(
"lua-lib-dir"
)
or
os
.
findlib
(
LUA_LIB_NAME
)
end
end
...
@@ -96,7 +96,7 @@ elseif GetParam("no-build-event") then
...
@@ -96,7 +96,7 @@ elseif GetParam("no-build-event") then
BUILD_EVENT
=
false
BUILD_EVENT
=
false
end
end
if
not
BUILD_EVENT
then
if
not
BUILD_EVENT
then
EVENT_INCLUDE_DIR
=
GetParam
(
"event-include-dir"
)
or
os
.
findheader
(
"event"
)
EVENT_INCLUDE_DIR
=
GetParam
(
"event-include-dir"
)
or
os
.
findheader
(
"event
2/event.h
"
)
EVENT_LIB_DIR
=
GetParam
(
"event-lib-dir"
)
or
os
.
findlib
(
"event"
)
EVENT_LIB_DIR
=
GetParam
(
"event-lib-dir"
)
or
os
.
findlib
(
"event"
)
end
end
...
@@ -106,7 +106,7 @@ elseif GetParam("no-build-freetype") then
...
@@ -106,7 +106,7 @@ elseif GetParam("no-build-freetype") then
BUILD_FREETYPE
=
false
BUILD_FREETYPE
=
false
end
end
if
not
BUILD_FREETYPE
then
if
not
BUILD_FREETYPE
then
FREETYPE_INCLUDE_DIR
=
GetParam
(
"freetype-include-dir"
)
or
os
.
findheader
(
"freetype
"
)
FREETYPE_INCLUDE_DIR
=
GetParam
(
"freetype-include-dir"
)
or
os
.
findheader
(
"freetype
2/ft2build.h"
)
..
"/freetype2"
FREETYPE_LIB_DIR
=
GetParam
(
"freetype-lib-dir"
)
or
os
.
findlib
(
"freetype"
)
FREETYPE_LIB_DIR
=
GetParam
(
"freetype-lib-dir"
)
or
os
.
findlib
(
"freetype"
)
end
end
...
@@ -116,7 +116,7 @@ elseif GetParam("no-build-sqlite") then
...
@@ -116,7 +116,7 @@ elseif GetParam("no-build-sqlite") then
BUILD_SQLITE
=
false
BUILD_SQLITE
=
false
end
end
if
not
BUILD_SQLITE
then
if
not
BUILD_SQLITE
then
SQLITE_INCLUDE_DIR
=
GetParam
(
"sqlite-include-dir"
)
or
os
.
findheader
(
"sqlite3"
)
SQLITE_INCLUDE_DIR
=
GetParam
(
"sqlite-include-dir"
)
or
os
.
findheader
(
"sqlite3
.h
"
)
SQLITE_LIB_DIR
=
GetParam
(
"sqlite-lib-dir"
)
or
os
.
findlib
(
"sqlite3"
)
SQLITE_LIB_DIR
=
GetParam
(
"sqlite-lib-dir"
)
or
os
.
findlib
(
"sqlite3"
)
end
end
...
@@ -126,7 +126,7 @@ elseif GetParam("no-build-irrlicht") then
...
@@ -126,7 +126,7 @@ elseif GetParam("no-build-irrlicht") then
BUILD_IRRLICHT
=
false
BUILD_IRRLICHT
=
false
end
end
if
not
BUILD_IRRLICHT
then
if
not
BUILD_IRRLICHT
then
IRRLICHT_INCLUDE_DIR
=
GetParam
(
"irrlicht-include-dir"
)
or
os
.
findheader
(
"irrlicht"
)
IRRLICHT_INCLUDE_DIR
=
GetParam
(
"irrlicht-include-dir"
)
or
os
.
findheader
(
"irrlicht
.h
"
)
IRRLICHT_LIB_DIR
=
GetParam
(
"irrlicht-lib-dir"
)
or
os
.
findlib
(
"irrlicht"
)
IRRLICHT_LIB_DIR
=
GetParam
(
"irrlicht-lib-dir"
)
or
os
.
findlib
(
"irrlicht"
)
end
end
...
@@ -163,12 +163,14 @@ if USE_AUDIO then
...
@@ -163,12 +163,14 @@ if USE_AUDIO then
MINIAUDIO_BUILD_OPUS_VORBIS
=
true
MINIAUDIO_BUILD_OPUS_VORBIS
=
true
end
end
if
not
MINIAUDIO_BUILD_OPUS_VORBIS
then
if
not
MINIAUDIO_BUILD_OPUS_VORBIS
then
OPUS_INCLUDE_DIR
=
GetParam
(
"opus-include-dir"
)
or
os
.
findheader
(
"opus"
)
OPUS_INCLUDE_DIR
=
GetParam
(
"opus-include-dir"
)
or
os
.
findheader
(
"opus/opus.h"
)
..
"/opus"
OPUS_LIB_DIR
=
GetParam
(
"opus-lib-dir"
)
or
os
.
findlib
(
"opusfile"
)
OPUS_LIB_DIR
=
GetParam
(
"opus-lib-dir"
)
or
os
.
findlib
(
"opus"
)
VORBIS_INCLUDE_DIR
=
GetParam
(
"vorbis-include-dir"
)
or
os
.
findheader
(
"vorbis"
)
OPUSFILE_INCLUDE_DIR
=
GetParam
(
"opusfile-include-dir"
)
or
os
.
findheader
(
"opus/opusfile.h"
)
..
"/opus"
OPUSFILE_LIB_DIR
=
GetParam
(
"opusfile-lib-dir"
)
or
os
.
findlib
(
"opusfile"
)
VORBIS_INCLUDE_DIR
=
GetParam
(
"vorbis-include-dir"
)
or
os
.
findheader
(
"vorbis/vorbisfile.h"
)
VORBIS_LIB_DIR
=
GetParam
(
"vorbis-lib-dir"
)
or
os
.
findlib
(
"vorbis"
)
VORBIS_LIB_DIR
=
GetParam
(
"vorbis-lib-dir"
)
or
os
.
findlib
(
"vorbis"
)
OGG_INCLUDE_DIR
=
GetParam
(
"ogg-include-dir"
)
or
os
.
findheader
(
"ogg"
)
OGG_INCLUDE_DIR
=
GetParam
(
"ogg-include-dir"
)
or
os
.
findheader
(
"ogg
/ogg.h
"
)
O
C
G_LIB_DIR
=
GetParam
(
"ogg-lib-dir"
)
or
os
.
findlib
(
"ogg"
)
O
G
G_LIB_DIR
=
GetParam
(
"ogg-lib-dir"
)
or
os
.
findlib
(
"ogg"
)
end
end
end
end
elseif
AUDIO_LIB
==
"irrklang"
then
elseif
AUDIO_LIB
==
"irrklang"
then
...
...
strings.conf
View file @
eb93522b
...
@@ -663,6 +663,7 @@
...
@@ -663,6 +663,7 @@
!
counter
0
x106b
狂爱指示物
!
counter
0
x106b
狂爱指示物
!
counter
0
x6c
访问指示物
!
counter
0
x6c
访问指示物
!
counter
0
x6d
祝台指示物
!
counter
0
x6d
祝台指示物
!
counter
0
x6e
四季指示物
#setnames, using tab for comment
#setnames, using tab for comment
!
setname
0
x1
正义盟军
A
・
O
・
J
!
setname
0
x1
正义盟军
A
・
O
・
J
!
setname
0
x2
次世代 ジェネクス
!
setname
0
x2
次世代 ジェネクス
...
@@ -1245,7 +1246,7 @@
...
@@ -1245,7 +1246,7 @@
!
setname
0
x1c0
龙华 竜華
!
setname
0
x1c0
龙华 竜華
!
setname
0
x1c1
阿尔戈☆群星
ARG
☆
S
!
setname
0
x1c1
阿尔戈☆群星
ARG
☆
S
!
setname
0
x1c2
喷水引擎 アクア・ジェット
!
setname
0
x1c2
喷水引擎 アクア・ジェット
!
setname
0
x1c3
御
剑
Mitsurugi
!
setname
0
x1c3
巳
剑
Mitsurugi
!
setname
0
x1c4
征龙 征竜
!
setname
0
x1c4
征龙 征竜
!
setname
0
x1c5
再世 再世
!
setname
0
x1c5
再世 再世
!
setname
0
x1c6
统王 ドミナス
!
setname
0
x1c6
统王 ドミナス
...
@@ -1254,3 +1255,6 @@
...
@@ -1254,3 +1255,6 @@
!
setname
0
x1c9
星辰 ドラゴンテイル
!
setname
0
x1c9
星辰 ドラゴンテイル
!
setname
0
x1ca
味美喵 ヤミー
!
setname
0
x1ca
味美喵 ヤミー
!
setname
0
x1cb
K9
!
setname
0
x1cb
K9
!
setname
0
x1cc
瞬间移动 テレポート
!
setname
0
x1cd
神艺 アルトメギア
!
setname
0
x1ce
狱神 獄神
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