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
0077af77
Commit
0077af77
authored
May 04, 2025
by
wind2009
Browse files
Options
Browse Files
Download
Plain Diff
Merge remote-tracking branch 'upstream/master' into develop
parents
7211e380
50d5877f
Changes
20
Show whitespace changes
Inline
Side-by-side
Showing
20 changed files
with
479 additions
and
220 deletions
+479
-220
.gitignore
.gitignore
+2
-0
gframe/config.h
gframe/config.h
+15
-0
gframe/data_manager.cpp
gframe/data_manager.cpp
+2
-4
gframe/deck_manager.cpp
gframe/deck_manager.cpp
+6
-14
gframe/deck_manager.h
gframe/deck_manager.h
+1
-1
gframe/duelclient.cpp
gframe/duelclient.cpp
+6
-2
gframe/game.cpp
gframe/game.cpp
+33
-20
gframe/gframe.cpp
gframe/gframe.cpp
+5
-1
gframe/myfilesystem.h
gframe/myfilesystem.h
+18
-0
gframe/network.h
gframe/network.h
+1
-1
gframe/premake5.lua
gframe/premake5.lua
+0
-1
gframe/replay.cpp
gframe/replay.cpp
+2
-10
gframe/replay.h
gframe/replay.h
+7
-7
lflist.conf
lflist.conf
+228
-16
ocgcore
ocgcore
+1
-1
premake/event/premake5.lua
premake/event/premake5.lua
+1
-0
premake/irrlicht/defines.lua
premake/irrlicht/defines.lua
+0
-49
premake/irrlicht/premake5.lua
premake/irrlicht/premake5.lua
+148
-92
premake5.lua
premake5.lua
+0
-1
strings.conf
strings.conf
+3
-0
No files found.
.gitignore
View file @
0077af77
...
@@ -8,6 +8,8 @@
...
@@ -8,6 +8,8 @@
/pics
/pics
/replay
/replay
/single
/single
/sound
!/sound/files.txt
/WindBot
/WindBot
/cards.cdb
/cards.cdb
/error.log
/error.log
...
...
gframe/config.h
View file @
0077af77
...
@@ -72,6 +72,21 @@ inline FILE* mywfopen(const wchar_t* filename, const char* mode) {
...
@@ -72,6 +72,21 @@ inline FILE* mywfopen(const wchar_t* filename, const char* mode) {
return
fp
;
return
fp
;
}
}
#if !defined(_WIN32)
#define myfopen std::fopen
#elif defined(WDK_NTDDI_VERSION) && (WDK_NTDDI_VERSION >= 0x0A000005) // Redstone 4, Version 1803, Build 17134.
#define FOPEN_WINDOWS_SUPPORT_UTF8
#define myfopen std::fopen
#else
inline
FILE
*
myfopen
(
const
char
*
filename
,
const
char
*
mode
)
{
wchar_t
wfilename
[
256
]{};
BufferIO
::
DecodeUTF8
(
filename
,
wfilename
);
wchar_t
wmode
[
20
]{};
BufferIO
::
CopyCharArray
(
mode
,
wmode
);
return
_wfopen
(
wfilename
,
wmode
);
}
#endif
#include <irrlicht.h>
#include <irrlicht.h>
extern
const
unsigned
short
PRO_VERSION
;
extern
const
unsigned
short
PRO_VERSION
;
...
...
gframe/data_manager.cpp
View file @
0077af77
...
@@ -108,7 +108,7 @@ bool DataManager::LoadDB(const wchar_t* wfile) {
...
@@ -108,7 +108,7 @@ bool DataManager::LoadDB(const wchar_t* wfile) {
return
ret
;
return
ret
;
}
}
bool
DataManager
::
LoadStrings
(
const
char
*
file
)
{
bool
DataManager
::
LoadStrings
(
const
char
*
file
)
{
FILE
*
fp
=
std
::
fopen
(
file
,
"r"
);
FILE
*
fp
=
my
fopen
(
file
,
"r"
);
if
(
!
fp
)
if
(
!
fp
)
return
false
;
return
false
;
char
linebuf
[
TEXT_LINE_SIZE
]{};
char
linebuf
[
TEXT_LINE_SIZE
]{};
...
@@ -431,9 +431,7 @@ unsigned char* DataManager::ReadScriptFromIrrFS(const char* script_name, int* sl
...
@@ -431,9 +431,7 @@ unsigned char* DataManager::ReadScriptFromIrrFS(const char* script_name, int* sl
return
scriptBuffer
;
return
scriptBuffer
;
}
}
unsigned
char
*
DataManager
::
ReadScriptFromFile
(
const
char
*
script_name
,
int
*
slen
)
{
unsigned
char
*
DataManager
::
ReadScriptFromFile
(
const
char
*
script_name
,
int
*
slen
)
{
wchar_t
fname
[
256
]{};
FILE
*
fp
=
myfopen
(
script_name
,
"rb"
);
BufferIO
::
DecodeUTF8
(
script_name
,
fname
);
FILE
*
fp
=
mywfopen
(
fname
,
"rb"
);
if
(
!
fp
)
if
(
!
fp
)
return
nullptr
;
return
nullptr
;
size_t
len
=
std
::
fread
(
scriptBuffer
,
1
,
sizeof
scriptBuffer
,
fp
);
size_t
len
=
std
::
fread
(
scriptBuffer
,
1
,
sizeof
scriptBuffer
,
fp
);
...
...
gframe/deck_manager.cpp
View file @
0077af77
...
@@ -10,7 +10,7 @@ DeckManager deckManager;
...
@@ -10,7 +10,7 @@ DeckManager deckManager;
void
DeckManager
::
LoadLFListSingle
(
const
char
*
path
)
{
void
DeckManager
::
LoadLFListSingle
(
const
char
*
path
)
{
auto
cur
=
_lfList
.
rend
();
auto
cur
=
_lfList
.
rend
();
FILE
*
fp
=
std
::
fopen
(
path
,
"r"
);
FILE
*
fp
=
my
fopen
(
path
,
"r"
);
char
linebuf
[
256
]{};
char
linebuf
[
256
]{};
wchar_t
strBuffer
[
256
]{};
wchar_t
strBuffer
[
256
]{};
char
str1
[
16
]{};
char
str1
[
16
]{};
...
@@ -311,7 +311,7 @@ bool DeckManager::LoadCurrentDeck(int category_index, const wchar_t* category_na
...
@@ -311,7 +311,7 @@ bool DeckManager::LoadCurrentDeck(int category_index, const wchar_t* category_na
mainGame
->
deckBuilder
.
RefreshPackListScroll
();
mainGame
->
deckBuilder
.
RefreshPackListScroll
();
return
res
;
return
res
;
}
}
bool
DeckManager
::
SaveDeck
(
Deck
&
deck
,
const
wchar_t
*
file
)
{
bool
DeckManager
::
SaveDeck
(
const
Deck
&
deck
,
const
wchar_t
*
file
)
{
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
(
file
,
"w"
);
FILE
*
fp
=
OpenDeckFile
(
file
,
"w"
);
...
@@ -319,26 +319,18 @@ bool DeckManager::SaveDeck(Deck& deck, const wchar_t* file) {
...
@@ -319,26 +319,18 @@ bool DeckManager::SaveDeck(Deck& deck, const wchar_t* file) {
return
false
;
return
false
;
std
::
fprintf
(
fp
,
"#created by ...
\n
#main
\n
"
);
std
::
fprintf
(
fp
,
"#created by ...
\n
#main
\n
"
);
for
(
size_t
i
=
0
;
i
<
deck
.
main
.
size
();
++
i
)
for
(
size_t
i
=
0
;
i
<
deck
.
main
.
size
();
++
i
)
std
::
fprintf
(
fp
,
"%
d
\n
"
,
deck
.
main
[
i
]
->
first
);
std
::
fprintf
(
fp
,
"%
u
\n
"
,
deck
.
main
[
i
]
->
first
);
std
::
fprintf
(
fp
,
"#extra
\n
"
);
std
::
fprintf
(
fp
,
"#extra
\n
"
);
for
(
size_t
i
=
0
;
i
<
deck
.
extra
.
size
();
++
i
)
for
(
size_t
i
=
0
;
i
<
deck
.
extra
.
size
();
++
i
)
std
::
fprintf
(
fp
,
"%
d
\n
"
,
deck
.
extra
[
i
]
->
first
);
std
::
fprintf
(
fp
,
"%
u
\n
"
,
deck
.
extra
[
i
]
->
first
);
std
::
fprintf
(
fp
,
"!side
\n
"
);
std
::
fprintf
(
fp
,
"!side
\n
"
);
for
(
size_t
i
=
0
;
i
<
deck
.
side
.
size
();
++
i
)
for
(
size_t
i
=
0
;
i
<
deck
.
side
.
size
();
++
i
)
std
::
fprintf
(
fp
,
"%
d
\n
"
,
deck
.
side
[
i
]
->
first
);
std
::
fprintf
(
fp
,
"%
u
\n
"
,
deck
.
side
[
i
]
->
first
);
std
::
fclose
(
fp
);
std
::
fclose
(
fp
);
return
true
;
return
true
;
}
}
bool
DeckManager
::
DeleteDeck
(
const
wchar_t
*
file
)
{
bool
DeckManager
::
DeleteDeck
(
const
wchar_t
*
file
)
{
#ifdef _WIN32
return
FileSystem
::
RemoveFile
(
file
);
BOOL
result
=
DeleteFileW
(
file
);
return
!!
result
;
#else
char
filefn
[
256
];
BufferIO
::
EncodeUTF8
(
file
,
filefn
);
int
result
=
unlink
(
filefn
);
return
result
==
0
;
#endif
}
}
bool
DeckManager
::
CreateCategory
(
const
wchar_t
*
name
)
{
bool
DeckManager
::
CreateCategory
(
const
wchar_t
*
name
)
{
if
(
!
FileSystem
::
IsDirExists
(
L"./deck"
)
&&
!
FileSystem
::
MakeDir
(
L"./deck"
))
if
(
!
FileSystem
::
IsDirExists
(
L"./deck"
)
&&
!
FileSystem
::
MakeDir
(
L"./deck"
))
...
...
gframe/deck_manager.h
View file @
0077af77
...
@@ -58,7 +58,7 @@ public:
...
@@ -58,7 +58,7 @@ public:
static
void
GetDeckFile
(
wchar_t
*
ret
,
int
category_index
,
const
wchar_t
*
category_name
,
const
wchar_t
*
deckname
);
static
void
GetDeckFile
(
wchar_t
*
ret
,
int
category_index
,
const
wchar_t
*
category_name
,
const
wchar_t
*
deckname
);
static
FILE
*
OpenDeckFile
(
const
wchar_t
*
file
,
const
char
*
mode
);
static
FILE
*
OpenDeckFile
(
const
wchar_t
*
file
,
const
char
*
mode
);
static
irr
::
io
::
IReadFile
*
OpenDeckReader
(
const
wchar_t
*
file
);
static
irr
::
io
::
IReadFile
*
OpenDeckReader
(
const
wchar_t
*
file
);
static
bool
SaveDeck
(
Deck
&
deck
,
const
wchar_t
*
file
);
static
bool
SaveDeck
(
const
Deck
&
deck
,
const
wchar_t
*
file
);
static
bool
DeleteDeck
(
const
wchar_t
*
file
);
static
bool
DeleteDeck
(
const
wchar_t
*
file
);
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
);
...
...
gframe/duelclient.cpp
View file @
0077af77
...
@@ -3868,7 +3868,9 @@ bool DuelClient::ClientAnalyze(unsigned char* msg, int len) {
...
@@ -3868,7 +3868,9 @@ bool DuelClient::ClientAnalyze(unsigned char* msg, int len) {
break
;
break
;
}
}
case
MSG_RELOAD_FIELD
:
{
case
MSG_RELOAD_FIELD
:
{
if
(
!
mainGame
->
dInfo
.
isReplay
||
!
mainGame
->
dInfo
.
isReplaySkiping
)
{
mainGame
->
gMutex
.
lock
();
mainGame
->
gMutex
.
lock
();
}
mainGame
->
dField
.
Clear
();
mainGame
->
dField
.
Clear
();
mainGame
->
dInfo
.
duel_rule
=
BufferIO
::
ReadUInt8
(
pbuf
);
mainGame
->
dInfo
.
duel_rule
=
BufferIO
::
ReadUInt8
(
pbuf
);
int
val
=
0
;
int
val
=
0
;
...
@@ -3974,7 +3976,9 @@ bool DuelClient::ClientAnalyze(unsigned char* msg, int len) {
...
@@ -3974,7 +3976,9 @@ bool DuelClient::ClientAnalyze(unsigned char* msg, int len) {
myswprintf
(
event_string
,
dataManager
.
GetSysString
(
1609
),
dataManager
.
GetName
(
mainGame
->
dField
.
current_chain
.
code
));
myswprintf
(
event_string
,
dataManager
.
GetSysString
(
1609
),
dataManager
.
GetName
(
mainGame
->
dField
.
current_chain
.
code
));
mainGame
->
dField
.
last_chain
=
true
;
mainGame
->
dField
.
last_chain
=
true
;
}
}
if
(
!
mainGame
->
dInfo
.
isReplay
||
!
mainGame
->
dInfo
.
isReplaySkiping
)
{
mainGame
->
gMutex
.
unlock
();
mainGame
->
gMutex
.
unlock
();
}
break
;
break
;
}
}
}
}
...
...
gframe/game.cpp
View file @
0077af77
...
@@ -106,6 +106,9 @@ bool Game::Initialize() {
...
@@ -106,6 +106,9 @@ bool Game::Initialize() {
numFont
=
irr
::
gui
::
CGUITTFont
::
createTTFont
(
env
,
gameConf
.
numfont
,
16
);
numFont
=
irr
::
gui
::
CGUITTFont
::
createTTFont
(
env
,
gameConf
.
numfont
,
16
);
if
(
!
numFont
)
{
if
(
!
numFont
)
{
const
wchar_t
*
numFontPaths
[]
=
{
const
wchar_t
*
numFontPaths
[]
=
{
L"./fonts/numFont.ttf"
,
L"./fonts/numFont.ttc"
,
L"./fonts/numFont.otf"
,
L"C:/Windows/Fonts/arialbd.ttf"
,
L"C:/Windows/Fonts/arialbd.ttf"
,
L"/usr/share/fonts/truetype/DroidSansFallbackFull.ttf"
,
L"/usr/share/fonts/truetype/DroidSansFallbackFull.ttf"
,
L"/usr/share/fonts/opentype/noto/NotoSansCJK-Bold.ttc"
,
L"/usr/share/fonts/opentype/noto/NotoSansCJK-Bold.ttc"
,
...
@@ -113,9 +116,6 @@ bool Game::Initialize() {
...
@@ -113,9 +116,6 @@ bool Game::Initialize() {
L"/usr/share/fonts/noto-cjk/NotoSansCJK-Bold.ttc"
,
L"/usr/share/fonts/noto-cjk/NotoSansCJK-Bold.ttc"
,
L"/System/Library/Fonts/SFNSTextCondensed-Bold.otf"
,
L"/System/Library/Fonts/SFNSTextCondensed-Bold.otf"
,
L"/System/Library/Fonts/SFNS.ttf"
,
L"/System/Library/Fonts/SFNS.ttf"
,
L"./fonts/numFont.ttf"
,
L"./fonts/numFont.ttc"
,
L"./fonts/numFont.otf"
};
};
for
(
const
wchar_t
*
path
:
numFontPaths
)
{
for
(
const
wchar_t
*
path
:
numFontPaths
)
{
BufferIO
::
CopyWideString
(
path
,
gameConf
.
numfont
);
BufferIO
::
CopyWideString
(
path
,
gameConf
.
numfont
);
...
@@ -127,6 +127,9 @@ bool Game::Initialize() {
...
@@ -127,6 +127,9 @@ bool Game::Initialize() {
textFont
=
irr
::
gui
::
CGUITTFont
::
createTTFont
(
env
,
gameConf
.
textfont
,
gameConf
.
textfontsize
);
textFont
=
irr
::
gui
::
CGUITTFont
::
createTTFont
(
env
,
gameConf
.
textfont
,
gameConf
.
textfontsize
);
if
(
!
textFont
)
{
if
(
!
textFont
)
{
const
wchar_t
*
textFontPaths
[]
=
{
const
wchar_t
*
textFontPaths
[]
=
{
L"./fonts/textFont.ttf"
,
L"./fonts/textFont.ttc"
,
L"./fonts/textFont.otf"
,
L"C:/Windows/Fonts/msyh.ttc"
,
L"C:/Windows/Fonts/msyh.ttc"
,
L"C:/Windows/Fonts/msyh.ttf"
,
L"C:/Windows/Fonts/msyh.ttf"
,
L"C:/Windows/Fonts/simsun.ttc"
,
L"C:/Windows/Fonts/simsun.ttc"
,
...
@@ -138,9 +141,7 @@ bool Game::Initialize() {
...
@@ -138,9 +141,7 @@ bool Game::Initialize() {
L"/usr/share/fonts/google-noto-cjk/NotoSansCJK-Regular.ttc"
,
L"/usr/share/fonts/google-noto-cjk/NotoSansCJK-Regular.ttc"
,
L"/usr/share/fonts/noto-cjk/NotoSansCJK-Regular.ttc"
,
L"/usr/share/fonts/noto-cjk/NotoSansCJK-Regular.ttc"
,
L"/System/Library/Fonts/PingFang.ttc"
,
L"/System/Library/Fonts/PingFang.ttc"
,
L"./fonts/textFont.ttf"
,
L"/System/Library/Fonts/STHeiti Medium.ttc"
,
L"./fonts/textFont.ttc"
,
L"./fonts/textFont.otf"
};
};
for
(
const
wchar_t
*
path
:
textFontPaths
)
{
for
(
const
wchar_t
*
path
:
textFontPaths
)
{
BufferIO
::
CopyWideString
(
path
,
gameConf
.
textfont
);
BufferIO
::
CopyWideString
(
path
,
gameConf
.
textfont
);
...
@@ -158,7 +159,7 @@ bool Game::Initialize() {
...
@@ -158,7 +159,7 @@ bool Game::Initialize() {
}
}
});
});
if
(
fpath
[
0
]
==
0
)
{
if
(
fpath
[
0
]
==
0
)
{
ErrorLog
(
"
Failed to load font(s)!
"
);
ErrorLog
(
"
No fonts found! Please place appropriate font file in the fonts directory, or edit system.conf manually.
"
);
return
false
;
return
false
;
}
}
if
(
!
numFont
)
{
if
(
!
numFont
)
{
...
@@ -170,6 +171,10 @@ bool Game::Initialize() {
...
@@ -170,6 +171,10 @@ bool Game::Initialize() {
textFont
=
irr
::
gui
::
CGUITTFont
::
createTTFont
(
env
,
gameConf
.
textfont
,
gameConf
.
textfontsize
);
textFont
=
irr
::
gui
::
CGUITTFont
::
createTTFont
(
env
,
gameConf
.
textfont
,
gameConf
.
textfontsize
);
}
}
}
}
if
(
!
numFont
||
!
textFont
)
{
ErrorLog
(
"Failed to load font(s)!"
);
return
false
;
}
adFont
=
irr
::
gui
::
CGUITTFont
::
createTTFont
(
env
,
gameConf
.
numfont
,
12
);
adFont
=
irr
::
gui
::
CGUITTFont
::
createTTFont
(
env
,
gameConf
.
numfont
,
12
);
lpcFont
=
irr
::
gui
::
CGUITTFont
::
createTTFont
(
env
,
gameConf
.
numfont
,
48
);
lpcFont
=
irr
::
gui
::
CGUITTFont
::
createTTFont
(
env
,
gameConf
.
numfont
,
48
);
guiFont
=
irr
::
gui
::
CGUITTFont
::
createTTFont
(
env
,
gameConf
.
textfont
,
gameConf
.
textfontsize
);
guiFont
=
irr
::
gui
::
CGUITTFont
::
createTTFont
(
env
,
gameConf
.
textfont
,
gameConf
.
textfontsize
);
...
@@ -1290,7 +1295,7 @@ void Game::RefreshBot() {
...
@@ -1290,7 +1295,7 @@ void Game::RefreshBot() {
if
(
!
gameConf
.
enable_bot_mode
)
if
(
!
gameConf
.
enable_bot_mode
)
return
;
return
;
botInfo
.
clear
();
botInfo
.
clear
();
FILE
*
fp
=
std
::
fopen
(
"bot.conf"
,
"r"
);
FILE
*
fp
=
my
fopen
(
"bot.conf"
,
"r"
);
char
linebuf
[
256
]{};
char
linebuf
[
256
]{};
char
strbuf
[
256
]{};
char
strbuf
[
256
]{};
if
(
fp
)
{
if
(
fp
)
{
...
@@ -1343,7 +1348,7 @@ void Game::RefreshBot() {
...
@@ -1343,7 +1348,7 @@ void Game::RefreshBot() {
}
}
}
}
void
Game
::
LoadConfig
()
{
void
Game
::
LoadConfig
()
{
FILE
*
fp
=
std
::
fopen
(
"system.conf"
,
"r"
);
FILE
*
fp
=
my
fopen
(
"system.conf"
,
"r"
);
if
(
!
fp
)
if
(
!
fp
)
return
;
return
;
char
linebuf
[
CONFIG_LINE_SIZE
]{};
char
linebuf
[
CONFIG_LINE_SIZE
]{};
...
@@ -1361,14 +1366,6 @@ void Game::LoadConfig() {
...
@@ -1361,14 +1366,6 @@ void Game::LoadConfig() {
}
else
if
(
!
std
::
strcmp
(
strbuf
,
"errorlog"
))
{
}
else
if
(
!
std
::
strcmp
(
strbuf
,
"errorlog"
))
{
unsigned
int
val
=
std
::
strtol
(
valbuf
,
nullptr
,
10
);
unsigned
int
val
=
std
::
strtol
(
valbuf
,
nullptr
,
10
);
enable_log
=
val
&
0xff
;
enable_log
=
val
&
0xff
;
}
else
if
(
!
std
::
strcmp
(
strbuf
,
"textfont"
))
{
int
textfontsize
=
0
;
if
(
std
::
sscanf
(
linebuf
,
"%63s = %959s %d"
,
strbuf
,
valbuf
,
&
textfontsize
)
!=
3
)
continue
;
gameConf
.
textfontsize
=
textfontsize
;
BufferIO
::
DecodeUTF8
(
valbuf
,
gameConf
.
textfont
);
}
else
if
(
!
std
::
strcmp
(
strbuf
,
"numfont"
))
{
BufferIO
::
DecodeUTF8
(
valbuf
,
gameConf
.
numfont
);
}
else
if
(
!
std
::
strcmp
(
strbuf
,
"serverport"
))
{
}
else
if
(
!
std
::
strcmp
(
strbuf
,
"serverport"
))
{
gameConf
.
serverport
=
std
::
strtol
(
valbuf
,
nullptr
,
10
);
gameConf
.
serverport
=
std
::
strtol
(
valbuf
,
nullptr
,
10
);
}
else
if
(
!
std
::
strcmp
(
strbuf
,
"lasthost"
))
{
}
else
if
(
!
std
::
strcmp
(
strbuf
,
"lasthost"
))
{
...
@@ -1463,7 +1460,18 @@ void Game::LoadConfig() {
...
@@ -1463,7 +1460,18 @@ void Game::LoadConfig() {
// options allowing multiple words
// options allowing multiple words
if
(
std
::
sscanf
(
linebuf
,
"%63s = %959[^
\n
]"
,
strbuf
,
valbuf
)
!=
2
)
if
(
std
::
sscanf
(
linebuf
,
"%63s = %959[^
\n
]"
,
strbuf
,
valbuf
)
!=
2
)
continue
;
continue
;
if
(
!
std
::
strcmp
(
strbuf
,
"nickname"
))
{
if
(
!
std
::
strcmp
(
strbuf
,
"textfont"
))
{
char
*
last_space
=
std
::
strrchr
(
valbuf
,
' '
);
if
(
last_space
==
nullptr
)
continue
;
int
fontsize
=
std
::
strtol
(
last_space
+
1
,
nullptr
,
10
);
if
(
fontsize
>
0
)
gameConf
.
textfontsize
=
fontsize
;
*
last_space
=
0
;
BufferIO
::
DecodeUTF8
(
valbuf
,
gameConf
.
textfont
);
}
else
if
(
!
std
::
strcmp
(
strbuf
,
"numfont"
))
{
BufferIO
::
DecodeUTF8
(
valbuf
,
gameConf
.
numfont
);
}
else
if
(
!
std
::
strcmp
(
strbuf
,
"nickname"
))
{
BufferIO
::
DecodeUTF8
(
valbuf
,
gameConf
.
nickname
);
BufferIO
::
DecodeUTF8
(
valbuf
,
gameConf
.
nickname
);
}
else
if
(
!
std
::
strcmp
(
strbuf
,
"gamename"
))
{
}
else
if
(
!
std
::
strcmp
(
strbuf
,
"gamename"
))
{
BufferIO
::
DecodeUTF8
(
valbuf
,
gameConf
.
gamename
);
BufferIO
::
DecodeUTF8
(
valbuf
,
gameConf
.
gamename
);
...
@@ -1481,7 +1489,7 @@ void Game::LoadConfig() {
...
@@ -1481,7 +1489,7 @@ void Game::LoadConfig() {
std
::
fclose
(
fp
);
std
::
fclose
(
fp
);
}
}
void
Game
::
SaveConfig
()
{
void
Game
::
SaveConfig
()
{
FILE
*
fp
=
std
::
fopen
(
"system.conf"
,
"w"
);
FILE
*
fp
=
my
fopen
(
"system.conf"
,
"w"
);
std
::
fprintf
(
fp
,
"#config file
\n
#nickname & gamename should be less than 20 characters
\n
"
);
std
::
fprintf
(
fp
,
"#config file
\n
#nickname & gamename should be less than 20 characters
\n
"
);
char
linebuf
[
CONFIG_LINE_SIZE
];
char
linebuf
[
CONFIG_LINE_SIZE
];
std
::
fprintf
(
fp
,
"use_d3d = %d
\n
"
,
gameConf
.
use_d3d
?
1
:
0
);
std
::
fprintf
(
fp
,
"use_d3d = %d
\n
"
,
gameConf
.
use_d3d
?
1
:
0
);
...
@@ -1734,7 +1742,12 @@ void Game::AddDebugMsg(const char* msg) {
...
@@ -1734,7 +1742,12 @@ void Game::AddDebugMsg(const char* msg) {
}
}
}
}
void
Game
::
ErrorLog
(
const
char
*
msg
)
{
void
Game
::
ErrorLog
(
const
char
*
msg
)
{
FILE
*
fp
=
std
::
fopen
(
"error.log"
,
"a"
);
#ifdef _WIN32
OutputDebugStringA
(
msg
);
#else
std
::
fprintf
(
stderr
,
"%s
\n
"
,
msg
);
#endif
FILE
*
fp
=
myfopen
(
"error.log"
,
"a"
);
if
(
!
fp
)
if
(
!
fp
)
return
;
return
;
time_t
nowtime
=
std
::
time
(
nullptr
);
time_t
nowtime
=
std
::
time
(
nullptr
);
...
...
gframe/gframe.cpp
View file @
0077af77
...
@@ -23,8 +23,12 @@ void ClickButton(irr::gui::IGUIElement* btn) {
...
@@ -23,8 +23,12 @@ void ClickButton(irr::gui::IGUIElement* btn) {
}
}
int
main
(
int
argc
,
char
*
argv
[])
{
int
main
(
int
argc
,
char
*
argv
[])
{
#ifndef _WIN32
#if defined(FOPEN_WINDOWS_SUPPORT_UTF8)
std
::
setlocale
(
LC_CTYPE
,
".UTF-8"
);
#elif defined(__APPLE__)
std
::
setlocale
(
LC_CTYPE
,
"UTF-8"
);
std
::
setlocale
(
LC_CTYPE
,
"UTF-8"
);
#elif !defined(_WIN32)
std
::
setlocale
(
LC_CTYPE
,
""
);
#endif
#endif
#ifdef __APPLE__
#ifdef __APPLE__
CFURLRef
bundle_url
=
CFBundleCopyBundleURL
(
CFBundleGetMainBundle
());
CFURLRef
bundle_url
=
CFBundleCopyBundleURL
(
CFBundleGetMainBundle
());
...
...
gframe/myfilesystem.h
View file @
0077af77
...
@@ -86,6 +86,14 @@ public:
...
@@ -86,6 +86,14 @@ public:
return
DeleteDir
(
wdir
);
return
DeleteDir
(
wdir
);
}
}
static
bool
RemoveFile
(
const
wchar_t
*
wfile
)
{
return
DeleteFileW
(
wfile
);
}
static
bool
RemoveFile
(
const
char
*
file
)
{
return
DeleteFileA
(
file
);
}
static
void
TraversalDir
(
const
wchar_t
*
wpath
,
const
std
::
function
<
void
(
const
wchar_t
*
,
bool
)
>&
cb
)
{
static
void
TraversalDir
(
const
wchar_t
*
wpath
,
const
std
::
function
<
void
(
const
wchar_t
*
,
bool
)
>&
cb
)
{
wchar_t
findstr
[
1024
];
wchar_t
findstr
[
1024
];
std
::
swprintf
(
findstr
,
sizeof
findstr
/
sizeof
findstr
[
0
],
L"%ls/*"
,
wpath
);
std
::
swprintf
(
findstr
,
sizeof
findstr
/
sizeof
findstr
[
0
],
L"%ls/*"
,
wpath
);
...
@@ -195,6 +203,16 @@ public:
...
@@ -195,6 +203,16 @@ public:
return
success
;
return
success
;
}
}
static
bool
RemoveFile
(
const
wchar_t
*
wfile
)
{
char
file
[
1024
];
BufferIO
::
EncodeUTF8
(
wfile
,
file
);
return
RemoveFile
(
file
);
}
static
bool
RemoveFile
(
const
char
*
file
)
{
return
unlink
(
file
)
==
0
;
}
struct
file_unit
{
struct
file_unit
{
std
::
string
filename
;
std
::
string
filename
;
bool
is_dir
;
bool
is_dir
;
...
...
gframe/network.h
View file @
0077af77
...
@@ -27,7 +27,7 @@ struct HostInfo {
...
@@ -27,7 +27,7 @@ struct HostInfo {
uint8_t
no_shuffle_deck
{};
uint8_t
no_shuffle_deck
{};
// byte padding[3]
// byte padding[3]
u
int32_t
start_lp
{};
int32_t
start_lp
{};
uint8_t
start_hand
{};
uint8_t
start_hand
{};
uint8_t
draw_count
{};
uint8_t
draw_count
{};
uint16_t
time_limit
{};
uint16_t
time_limit
{};
...
...
gframe/premake5.lua
View file @
0077af77
...
@@ -68,7 +68,6 @@ project "YGOPro"
...
@@ -68,7 +68,6 @@ project "YGOPro"
filter
"system:windows"
filter
"system:windows"
defines
{
"_IRR_WCHAR_FILESYSTEM"
}
defines
{
"_IRR_WCHAR_FILESYSTEM"
}
files
"ygopro.rc"
files
"ygopro.rc"
libdirs
{
"$(DXSDK_DIR)Lib/x86"
}
links
{
"opengl32"
,
"ws2_32"
,
"winmm"
,
"gdi32"
,
"kernel32"
,
"user32"
,
"imm32"
}
links
{
"opengl32"
,
"ws2_32"
,
"winmm"
,
"gdi32"
,
"kernel32"
,
"user32"
,
"imm32"
}
if
USE_AUDIO
and
AUDIO_LIB
==
"irrklang"
then
if
USE_AUDIO
and
AUDIO_LIB
==
"irrklang"
then
links
{
"irrKlang"
}
links
{
"irrKlang"
}
...
...
gframe/replay.cpp
View file @
0077af77
...
@@ -24,7 +24,7 @@ void Replay::BeginRecord() {
...
@@ -24,7 +24,7 @@ void Replay::BeginRecord() {
#else
#else
if
(
is_recording
)
if
(
is_recording
)
std
::
fclose
(
fp
);
std
::
fclose
(
fp
);
fp
=
std
::
fopen
(
"./replay/_LastReplay.yrp"
,
"wb"
);
fp
=
my
fopen
(
"./replay/_LastReplay.yrp"
,
"wb"
);
if
(
!
fp
)
if
(
!
fp
)
return
;
return
;
#endif
#endif
...
@@ -154,15 +154,7 @@ bool Replay::CheckReplay(const wchar_t* name) {
...
@@ -154,15 +154,7 @@ bool Replay::CheckReplay(const wchar_t* name) {
bool
Replay
::
DeleteReplay
(
const
wchar_t
*
name
)
{
bool
Replay
::
DeleteReplay
(
const
wchar_t
*
name
)
{
wchar_t
fname
[
256
];
wchar_t
fname
[
256
];
myswprintf
(
fname
,
L"./replay/%ls"
,
name
);
myswprintf
(
fname
,
L"./replay/%ls"
,
name
);
#ifdef _WIN32
return
FileSystem
::
RemoveFile
(
fname
);
BOOL
result
=
DeleteFileW
(
fname
);
return
!!
result
;
#else
char
filefn
[
256
];
BufferIO
::
EncodeUTF8
(
fname
,
filefn
);
int
result
=
unlink
(
filefn
);
return
result
==
0
;
#endif
}
}
bool
Replay
::
RenameReplay
(
const
wchar_t
*
oldname
,
const
wchar_t
*
newname
)
{
bool
Replay
::
RenameReplay
(
const
wchar_t
*
oldname
,
const
wchar_t
*
newname
)
{
wchar_t
oldfname
[
256
];
wchar_t
oldfname
[
256
];
...
...
gframe/replay.h
View file @
0077af77
...
@@ -17,13 +17,13 @@ constexpr int MAX_REPLAY_SIZE = 0x20000;
...
@@ -17,13 +17,13 @@ constexpr int MAX_REPLAY_SIZE = 0x20000;
constexpr
int
MAX_COMP_SIZE
=
UINT16_MAX
+
1
;
constexpr
int
MAX_COMP_SIZE
=
UINT16_MAX
+
1
;
struct
ReplayHeader
{
struct
ReplayHeader
{
u
nsigned
in
t
id
{};
u
int32_
t
id
{};
u
nsigned
in
t
version
{};
u
int32_
t
version
{};
u
nsigned
in
t
flag
{};
u
int32_
t
flag
{};
u
nsigned
in
t
seed
{};
u
int32_
t
seed
{};
u
nsigned
in
t
datasize
{};
u
int32_
t
datasize
{};
u
nsigned
in
t
start_time
{};
u
int32_
t
start_time
{};
u
nsigned
char
props
[
8
]{};
u
int8_t
props
[
8
]{};
};
};
class
Replay
{
class
Replay
{
...
...
lflist.conf
View file @
0077af77
#[2025.4][202
4.12 TCG][2025.1][2024.10][2024.7][2024.4][2024.1][2023.10][2023.7][2023.4][2023.1][2022.10][2022.7][2022.4][2022.1][2021.10][2021.7][2021.4][2021.1][2020.10][2020.7][2020.4][2020.1][2019.10][2019.7][2019.4][2019.1][2018.10][2018.7][2018.4][2018.1][2017.10][2017.7][2017.4][2017.1][2016.10][2016.7][2016.4][2016.1][2015.10][2015.4][2015.1][2014.10][2014.7][2014.4][2014.2][2013.9
][2024.9 TCG][2024.4 TCG][2024.1 TCG][2023.9 TCG][2023.6 TCG][2023.2 TCG][2022.12 TCG][2022.10 TCG][2022.5 TCG][2022.2 TCG][2021.10 TCG][2021.7 TCG][2021.3 TCG][2020.12 TCG][2020.9 TCG][2020.6 TCG][2020.4 TCG][2020.1 TCG][2019.10 TCG][2019.7 TCG][2019.4 TCG][2019.1 TCG][2018.12 TCG][2018.9 TCG][2018.5 TCG][2018.2 TCG][2017.11 TCG][2017.9 TCG][2017.6 TCG][2017.3 TCG][2016.8 TCG][2016.4 TCG][2015.11 TCG][2015.7 TCG][2015.4 TCG][2015.1 TCG][2014.10 TCG][2014.7 TCG][2014.4 TCG][2014.1.1 TCG][2013.10.11 TCG][2013.3.1][2012.9.1][2012.3.1][2011.9.1]
#[2025.4][202
5.4 TCG][2025.1][2024.10][2024.7][2024.4][2024.1][2023.10][2023.7][2023.4][2023.1][2022.10][2022.7][2022.4][2022.1][2021.10][2021.7][2021.4][2021.1][2020.10][2020.7][2020.4][2020.1][2019.10][2019.7][2019.4][2019.1][2018.10][2018.7][2018.4][2018.1][2017.10][2017.7][2017.4][2017.1][2016.10][2016.7][2016.4][2016.1][2015.10][2015.4][2015.1][2014.10][2014.7][2014.4][2014.2][2013.9][2024.12 TCG
][2024.9 TCG][2024.4 TCG][2024.1 TCG][2023.9 TCG][2023.6 TCG][2023.2 TCG][2022.12 TCG][2022.10 TCG][2022.5 TCG][2022.2 TCG][2021.10 TCG][2021.7 TCG][2021.3 TCG][2020.12 TCG][2020.9 TCG][2020.6 TCG][2020.4 TCG][2020.1 TCG][2019.10 TCG][2019.7 TCG][2019.4 TCG][2019.1 TCG][2018.12 TCG][2018.9 TCG][2018.5 TCG][2018.2 TCG][2017.11 TCG][2017.9 TCG][2017.6 TCG][2017.3 TCG][2016.8 TCG][2016.4 TCG][2015.11 TCG][2015.7 TCG][2015.4 TCG][2015.1 TCG][2014.10 TCG][2014.7 TCG][2014.4 TCG][2014.1.1 TCG][2013.10.11 TCG][2013.3.1][2012.9.1][2012.3.1][2011.9.1]
!
2025
.
4
!
2025
.
4
#forbidden
#forbidden
20292186
0
--アーティファクト-デスサイズ
20292186
0
--アーティファクト-デスサイズ
...
@@ -186,7 +186,7 @@
...
@@ -186,7 +186,7 @@
52947044
2
--フュージョン・デステニー
52947044
2
--フュージョン・デステニー
92714517
2
--ビッグウェルカム・ラビュリンス
92714517
2
--ビッグウェルカム・ラビュリンス
!
202
4
.
12
TCG
!
202
5
.
4
TCG
#forbidden
#forbidden
62320425
0
--
Agido
the
Ancient
Sentinel
62320425
0
--
Agido
the
Ancient
Sentinel
20292186
0
--
Artifact
Scythe
20292186
0
--
Artifact
Scythe
...
@@ -207,8 +207,6 @@
...
@@ -207,8 +207,6 @@
25926710
0
--
Kelbek
the
Ancient
Vanguard
25926710
0
--
Kelbek
the
Ancient
Vanguard
57421866
0
--
Level
Eater
57421866
0
--
Level
Eater
34206604
0
--
Magical
Scientist
34206604
0
--
Magical
Scientist
21377582
0
--
Master
Peace
,
the
True
Dracoslaying
King
36521307
0
--
Mathmech
Circular
23434538
0
--
Maxx
"C"
23434538
0
--
Maxx
"C"
96782886
0
--
Mind
Master
96782886
0
--
Mind
Master
23558733
0
--
Phoenixian
Cluster
Amaryllis
23558733
0
--
Phoenixian
Cluster
Amaryllis
...
@@ -228,7 +226,9 @@
...
@@ -228,7 +226,9 @@
24094258
0
--
Heavymetalfoes
Electrumite
24094258
0
--
Heavymetalfoes
Electrumite
59934749
0
--
Isolde
,
Two
Tales
of
the
Noble
Knights
59934749
0
--
Isolde
,
Two
Tales
of
the
Noble
Knights
39064822
0
--
Knightmare
Goblin
39064822
0
--
Knightmare
Goblin
65330383
0
--
Knightmare
Gryphon
03679218
0
--
Knightmare
Mermaid
03679218
0
--
Knightmare
Mermaid
30342076
0
--
Link
Decoder
85243784
0
--
Linkross
85243784
0
--
Linkross
41999284
0
--
Linkuriboh
41999284
0
--
Linkuriboh
44097050
0
--
Mecha
Phantom
Beast
Auroradon
44097050
0
--
Mecha
Phantom
Beast
Auroradon
...
@@ -245,6 +245,8 @@
...
@@ -245,6 +245,8 @@
03040496
0
--
Chaos
Ruler
,
the
Chaotic
Magical
Dragon
03040496
0
--
Chaos
Ruler
,
the
Chaotic
Magical
Dragon
62242678
0
--
Hot
Red
Dragon
Archfiend
King
Calamity
62242678
0
--
Hot
Red
Dragon
Archfiend
King
Calamity
63101919
0
--
Tempest
Magician
63101919
0
--
Tempest
Magician
21044178
0
--
Abyss
Dweller
00440556
0
--
Bahamut
Shark
27552504
0
--
Beatrice
,
Lady
of
the
Eternal
27552504
0
--
Beatrice
,
Lady
of
the
Eternal
48626373
0
--
Kashtira
Arise
-
Heart
48626373
0
--
Kashtira
Arise
-
Heart
34086406
0
--
Lavalval
Chain
34086406
0
--
Lavalval
Chain
...
@@ -260,7 +262,6 @@
...
@@ -260,7 +262,6 @@
81122844
0
--
Wind
-
Up
Carrier
Zenmaity
81122844
0
--
Wind
-
Up
Carrier
Zenmaity
85115440
0
--
Zoodiac
Broadbull
85115440
0
--
Zoodiac
Broadbull
48905153
0
--
Zoodiac
Drident
48905153
0
--
Zoodiac
Drident
07394770
0
--
Brilliant
Fusion
69243953
0
--
Butterfly
Dagger
-
Elma
69243953
0
--
Butterfly
Dagger
-
Elma
57953380
0
--
Card
of
Safe
Return
57953380
0
--
Card
of
Safe
Return
60682203
0
--
Cold
Wave
60682203
0
--
Cold
Wave
...
@@ -303,25 +304,23 @@
...
@@ -303,25 +304,23 @@
08124921
1
--
Right
Leg
of
the
Forbidden
One
08124921
1
--
Right
Leg
of
the
Forbidden
One
06728559
1
--
Archnemeses
Protos
06728559
1
--
Archnemeses
Protos
76794549
1
--
Astrograph
Sorcerer
76794549
1
--
Astrograph
Sorcerer
61901281
1
--
Black
Dragon
Collapserpent
06637331
1
--
Bystial
Druiswurm
33854624
1
--
Bystial
Magnamhut
33854624
1
--
Bystial
Magnamhut
14536035
1
--
Dark
Grepher
14536035
1
--
Dark
Grepher
91800273
1
--
Dimension
Shifter
33396948
1
--
Exodia
the
Forbidden
One
33396948
1
--
Exodia
the
Forbidden
One
63542003
1
--
Keldo
the
Sacred
Protector
63542003
1
--
Keldo
the
Sacred
Protector
21377582
1
--
Master
Peace
,
the
True
Dracoslaying
King
36521307
1
--
Mathmech
Circular
38572779
1
--
Miscellaneousaurus
38572779
1
--
Miscellaneousaurus
33508719
1
--
Morphing
Jar
99937011
1
--
Mudora
the
Sword
Oracle
99937011
1
--
Mudora
the
Sword
Oracle
12958919
1
--
Phantom
Skyblaster
12958919
1
--
Phantom
Skyblaster
38814750
1
--
PSY
-
Framegear
Gamma
38814750
1
--
PSY
-
Framegear
Gamma
09674034
1
--
Snake
-
Eye
Ash
90241276
1
--
Snake
-
Eyes
Poplar
20663556
1
--
Substitoad
20663556
1
--
Substitoad
37961969
1
--
Tearlaments
Havnis
37961969
1
--
Tearlaments
Havnis
74078255
1
--
Tearlaments
Merrli
74078255
1
--
Tearlaments
Merrli
00572850
1
--
Tearlaments
Scheiren
00572850
1
--
Tearlaments
Scheiren
91810826
1
--
Tenpai
Dragon
Chundra
91810826
1
--
Tenpai
Dragon
Chundra
41165831
1
--
Unchained
Soul
of
Sharvara
99234526
1
--
White
Dragon
Wyverburster
78872731
1
--
Zoodiac
Ratpier
78872731
1
--
Zoodiac
Ratpier
39512984
1
--
Gem
-
Knight
Master
Diamond
39512984
1
--
Gem
-
Knight
Master
Diamond
80453041
1
--
Phantom
of
Yubel
80453041
1
--
Phantom
of
Yubel
...
@@ -333,7 +332,10 @@
...
@@ -333,7 +332,10 @@
00581014
1
--
Daigusto
Emeral
00581014
1
--
Daigusto
Emeral
75433814
1
--
Number
40
:
Gimmick
Puppet
of
Strings
75433814
1
--
Number
40
:
Gimmick
Puppet
of
Strings
69170557
1
--
Number
C40
:
Gimmick
Puppet
of
Dark
Strings
69170557
1
--
Number
C40
:
Gimmick
Puppet
of
Dark
Strings
34909328
1
--
Ryzeal
Detonator
85106525
1
--
Bonfire
44362883
1
--
Branded
Fusion
44362883
1
--
Branded
Fusion
07394770
1
--
Brilliant
Fusion
24224830
1
--
Called
by
the
Grave
24224830
1
--
Called
by
the
Grave
72892473
1
--
Card
Destruction
72892473
1
--
Card
Destruction
59750328
1
--
Card
of
Demise
59750328
1
--
Card
of
Demise
...
@@ -341,6 +343,7 @@
...
@@ -341,6 +343,7 @@
04031928
1
--
Change
of
Heart
04031928
1
--
Change
of
Heart
99266988
1
--
Chaos
Space
99266988
1
--
Chaos
Space
67616300
1
--
Chicken
Game
67616300
1
--
Chicken
Game
65681983
1
--
Crossout
Designator
15854426
1
--
Divine
Wind
of
Mist
Valley
15854426
1
--
Divine
Wind
of
Mist
Valley
13035077
1
--
Dragonic
Diagram
13035077
1
--
Dragonic
Diagram
95308449
1
--
Final
Countdown
95308449
1
--
Final
Countdown
...
@@ -368,6 +371,7 @@
...
@@ -368,6 +371,7 @@
45986603
1
--
Snatch
Steal
45986603
1
--
Snatch
Steal
73628505
1
--
Terraforming
73628505
1
--
Terraforming
11110587
1
--
That
Grass
Looks
Greener
11110587
1
--
That
Grass
Looks
Greener
25311006
1
--
Triple
Tactics
Talent
46060017
1
--
Zoodiac
Barrage
46060017
1
--
Zoodiac
Barrage
58921041
1
--
Anti
-
Spell
Fragrance
58921041
1
--
Anti
-
Spell
Fragrance
53334471
1
--
Gozen
Match
53334471
1
--
Gozen
Match
...
@@ -377,12 +381,19 @@
...
@@ -377,12 +381,19 @@
82732705
1
--
Skill
Drain
82732705
1
--
Skill
Drain
24207889
1
--
There
Can
Be
Only
One
24207889
1
--
There
Can
Be
Only
One
#semi limit
#semi limit
34124316
2
--
Cyber
Jar
61901281
2
--
Black
Dragon
Collapserpent
43694650
2
--
Danger
!?
Jackalope
?
34022970
2
--
Ext
Ryzeal
99745551
2
--
Danger
!?
Tsuchinoko
?
08633261
2
--
Ice
Ryzeal
40177746
2
--
Eva
32061192
2
--
Maliss
<
P
>
Dormouse
17330916
2
--
Performapal
Monkeyboard
69272449
2
--
Maliss
<
P
>
White
Rabbit
33508719
2
--
Morphing
Jar
09674034
2
--
Snake
-
Eye
Ash
90241276
2
--
Snake
-
Eyes
Poplar
35844557
2
--
Sword
Ryzeal
41165831
2
--
Unchained
Soul
of
Sharvara
99234526
2
--
White
Dragon
Wyverburster
14532163
2
--
Lightning
Storm
14532163
2
--
Lightning
Storm
68337209
2
--
Maliss
in
Underground
55584558
2
--
Purrely
Delicious
Memory
55584558
2
--
Purrely
Delicious
Memory
21347668
2
--
Purrely
Sleepy
Memory
21347668
2
--
Purrely
Sleepy
Memory
92107604
2
--
Runick
Fountain
92107604
2
--
Runick
Fountain
...
@@ -8132,6 +8143,207 @@
...
@@ -8132,6 +8143,207 @@
53582587
2
--激流葬
53582587
2
--激流葬
29401950
2
--奈落の落とし穴
29401950
2
--奈落の落とし穴
!
2024
.
12
TCG
#forbidden
62320425
0
--
Agido
the
Ancient
Sentinel
20292186
0
--
Artifact
Scythe
73356503
0
--
Barrier
Statue
of
the
Stormwinds
09929398
0
--
Blackwing
-
Gofu
the
Vague
Shadow
94689206
0
--
Block
Dragon
69015963
0
--
Cyber
-
Stein
15341821
0
--
Dandylion
08903700
0
--
Djinn
Releaser
of
Rituals
51858306
0
--
Eclipse
Wyvern
55623480
0
--
Fairy
Tail
-
Snow
78706415
0
--
Fiber
Jar
93369354
0
--
Fishborg
Blaster
55204071
0
--
Gimmick
Puppet
Nightmare
67441435
0
--
Glow
-
Up
Bulb
75732622
0
--
Grinder
Golem
41855169
0
--
Jowgen
the
Spiritualist
25926710
0
--
Kelbek
the
Ancient
Vanguard
57421866
0
--
Level
Eater
34206604
0
--
Magical
Scientist
21377582
0
--
Master
Peace
,
the
True
Dracoslaying
King
36521307
0
--
Mathmech
Circular
23434538
0
--
Maxx
"C"
96782886
0
--
Mind
Master
23558733
0
--
Phoenixian
Cluster
Amaryllis
01357146
0
--
Ronintoadin
91258852
0
--
SPYRAL
Master
Plan
88071625
0
--
The
Tyrant
Neptune
44910027
0
--
Victory
Dragon
17412721
0
--
Elder
Entity
Norden
46640168
0
--
Fiendsmith
'
s
Lacrima
43387895
0
--
Supreme
King
Dragon
Starving
Venom
92731385
0
--
Tearlaments
Kitkallos
04280258
0
--
Apollousa
,
Bow
of
the
Goddess
50588353
0
--
Crystron
Halqifibrax
98095162
0
--
Curious
,
the
Lightsworn
Dominion
59537380
0
--
Guardragon
Agarpain
86148577
0
--
Guardragon
Elpy
24094258
0
--
Heavymetalfoes
Electrumite
59934749
0
--
Isolde
,
Two
Tales
of
the
Noble
Knights
39064822
0
--
Knightmare
Goblin
03679218
0
--
Knightmare
Mermaid
85243784
0
--
Linkross
41999284
0
--
Linkuriboh
44097050
0
--
Mecha
Phantom
Beast
Auroradon
25725326
0
--
Prank
-
Kids
Meow
-
Meow
-
Mu
70369116
0
--
Predaplant
Verte
Anaconda
72330894
0
--
Simorgh
,
Bird
of
Sovereignty
27381364
0
--
Spright
Elf
61665245
0
--
Summon
Sorceress
33918636
0
--
Superheavy
Samurai
Scarecrow
22593417
0
--
Topologic
Gumblar
Dragon
83152482
0
--
Union
Carrier
84815190
0
--
Baronne
de
Fleur
27548199
0
--
Borreload
Savage
Dragon
03040496
0
--
Chaos
Ruler
,
the
Chaotic
Magical
Dragon
62242678
0
--
Hot
Red
Dragon
Archfiend
King
Calamity
63101919
0
--
Tempest
Magician
27552504
0
--
Beatrice
,
Lady
of
the
Eternal
48626373
0
--
Kashtira
Arise
-
Heart
34086406
0
--
Lavalval
Chain
04423206
0
--
M
-
X
-
Saber
Invoker
54719828
0
--
Number
16
:
Shock
Master
10389142
0
--
Number
42
:
Galaxy
Tomahawk
63504681
0
--
Number
86
:
Heroic
Champion
-
Rhongomyniad
95474755
0
--
Number
89
:
Diablosis
the
Mind
Hacker
58820923
0
--
Number
95
:
Galaxy
-
Eyes
Dark
Matter
Dragon
52653092
0
--
Number
S0
:
Utopic
ZEXAL
34945480
0
--
Outer
Entity
Azathot
88581108
0
--
True
King
of
All
Calamities
81122844
0
--
Wind
-
Up
Carrier
Zenmaity
85115440
0
--
Zoodiac
Broadbull
48905153
0
--
Zoodiac
Drident
07394770
0
--
Brilliant
Fusion
69243953
0
--
Butterfly
Dagger
-
Elma
57953380
0
--
Card
of
Safe
Return
60682203
0
--
Cold
Wave
17375316
0
--
Confiscation
44763025
0
--
Delinquent
Duo
23557835
0
--
Dimension
Fusion
42703248
0
--
Giant
Trunade
79571449
0
--
Graceful
Charity
19613556
0
--
Heavy
Storm
35059553
0
--
Kaiser
Colosseum
85602018
0
--
Last
Will
34906152
0
--
Mass
Driver
46411259
0
--
Metamorphosis
41482598
0
--
Mirage
of
Nightmare
76375976
0
--
Mystic
Mine
89023486
0
--
Original
Sinful
Spoils
-
Snake
-
Eye
74191942
0
--
Painful
Choice
55144522
0
--
Pot
of
Greed
70828912
0
--
Premature
Burial
63789924
0
--
Smoke
Grenade
of
the
Thief
54447022
0
--
Soul
Charge
42829885
0
--
The
Forceful
Sentry
43262273
0
--
Appointer
of
the
Red
Lotus
01041278
0
--
Branded
Expulsion
61740673
0
--
Imperial
Order
28566710
0
--
Last
Turn
23002292
0
--
Red
Reboot
27174286
0
--
Return
from
the
Different
Dimension
93016201
0
--
Royal
Oppression
57585212
0
--
Self
-
Destruct
Button
03280747
0
--
Sixth
Sense
23516703
0
--
Summon
Limit
64697231
0
--
Trap
Dustshoot
80604091
0
--
Ultimate
Offering
05851097
0
--
Vanity
'
s
Emptiness
#limit
07902349
1
--
Left
Arm
of
the
Forbidden
One
44519536
1
--
Left
Leg
of
the
Forbidden
One
70903634
1
--
Right
Arm
of
the
Forbidden
One
08124921
1
--
Right
Leg
of
the
Forbidden
One
06728559
1
--
Archnemeses
Protos
76794549
1
--
Astrograph
Sorcerer
61901281
1
--
Black
Dragon
Collapserpent
33854624
1
--
Bystial
Magnamhut
14536035
1
--
Dark
Grepher
33396948
1
--
Exodia
the
Forbidden
One
63542003
1
--
Keldo
the
Sacred
Protector
38572779
1
--
Miscellaneousaurus
33508719
1
--
Morphing
Jar
99937011
1
--
Mudora
the
Sword
Oracle
12958919
1
--
Phantom
Skyblaster
38814750
1
--
PSY
-
Framegear
Gamma
09674034
1
--
Snake
-
Eye
Ash
90241276
1
--
Snake
-
Eyes
Poplar
20663556
1
--
Substitoad
37961969
1
--
Tearlaments
Havnis
74078255
1
--
Tearlaments
Merrli
00572850
1
--
Tearlaments
Scheiren
91810826
1
--
Tenpai
Dragon
Chundra
41165831
1
--
Unchained
Soul
of
Sharvara
99234526
1
--
White
Dragon
Wyverburster
78872731
1
--
Zoodiac
Ratpier
39512984
1
--
Gem
-
Knight
Master
Diamond
80453041
1
--
Phantom
of
Yubel
73539069
1
--
Striker
Dragon
93896655
1
--
Sunavalon
Dryas
65563871
1
--
Sunvine
Healer
74586817
1
--
PSY
-
Framelord
Omega
90953320
1
--
T
.
G
.
Hyper
Librarian
00581014
1
--
Daigusto
Emeral
75433814
1
--
Number
40
:
Gimmick
Puppet
of
Strings
69170557
1
--
Number
C40
:
Gimmick
Puppet
of
Dark
Strings
44362883
1
--
Branded
Fusion
24224830
1
--
Called
by
the
Grave
72892473
1
--
Card
Destruction
59750328
1
--
Card
of
Demise
91623717
1
--
Chain
Strike
04031928
1
--
Change
of
Heart
99266988
1
--
Chaos
Space
67616300
1
--
Chicken
Game
15854426
1
--
Divine
Wind
of
Mist
Valley
13035077
1
--
Dragonic
Diagram
95308449
1
--
Final
Countdown
81439173
1
--
Foolish
Burial
27970830
1
--
Gateway
of
the
Six
75500286
1
--
Gold
Sarcophagus
18144506
1
--
Harpie
'
s
Feather
Duster
66957584
1
--
Infernity
Launcher
01845204
1
--
Instant
Fusion
93946239
1
--
Into
the
Void
71650854
1
--
Magical
Mid
-
Breaker
Field
43040603
1
--
Monster
Gate
83764718
1
--
Monster
Reborn
33782437
1
--
One
Day
of
Peace
02295440
1
--
One
for
One
84211599
1
--
Pot
of
Prosperity
58577036
1
--
Reasoning
32807846
1
--
Reinforcement
of
the
Army
66730191
1
--
Sangen
Kaimen
30336082
1
--
Sangen
Summoning
24940422
1
--
Sekka
'
s
Light
73468603
1
--
Set
Rotation
52340444
1
--
Sky
Striker
Mecha
-
Hornet
Drones
71344451
1
--
Slash
Draw
45986603
1
--
Snatch
Steal
73628505
1
--
Terraforming
11110587
1
--
That
Grass
Looks
Greener
46060017
1
--
Zoodiac
Barrage
58921041
1
--
Anti
-
Spell
Fragrance
53334471
1
--
Gozen
Match
32723153
1
--
Magical
Explosion
03734202
1
--
Naturia
Sacred
Tree
90846359
1
--
Rivalry
of
Warlords
82732705
1
--
Skill
Drain
24207889
1
--
There
Can
Be
Only
One
#semi limit
34124316
2
--
Cyber
Jar
43694650
2
--
Danger
!?
Jackalope
?
99745551
2
--
Danger
!?
Tsuchinoko
?
40177746
2
--
Eva
17330916
2
--
Performapal
Monkeyboard
14532163
2
--
Lightning
Storm
55584558
2
--
Purrely
Delicious
Memory
21347668
2
--
Purrely
Sleepy
Memory
92107604
2
--
Runick
Fountain
!
2024
.
9
TCG
!
2024
.
9
TCG
#forbidden
#forbidden
62320425
0
--
Agido
the
Ancient
Sentinel
62320425
0
--
Agido
the
Ancient
Sentinel
...
...
ocgcore
@
d55f7ad9
Subproject commit
74c7c053a393f397758c798e2860ab5972b56338
Subproject commit
d55f7ad9a123f1ef2cdc419d49a582e0cfeb4b36
premake/event/premake5.lua
View file @
0077af77
...
@@ -11,3 +11,4 @@ project "event"
...
@@ -11,3 +11,4 @@ project "event"
filter
"system:windows"
filter
"system:windows"
prebuildcommands
{
"xcopy /E /Y $(ProjectDir)..\\event\\WIN32-Code $(ProjectDir)..\\event\\include"
}
prebuildcommands
{
"xcopy /E /Y $(ProjectDir)..\\event\\WIN32-Code $(ProjectDir)..\\event\\include"
}
files
{
"win32select.c"
,
"evthread_win32.c"
,
"buffer_iocp.c"
,
"event_iocp.c"
,
"bufferevent_async.c"
}
files
{
"win32select.c"
,
"evthread_win32.c"
,
"buffer_iocp.c"
,
"event_iocp.c"
,
"bufferevent_async.c"
}
defines
{
"WIN32"
}
-- quirk of old libevent
premake/irrlicht/defines.lua
deleted
100644 → 0
View file @
7211e380
defines
{
"_IRR_STATIC_LIB_"
,
"NO_IRR_USE_NON_SYSTEM_BZLIB_"
,
"NO_IRR_COMPILE_WITH_BZIP2_"
,
"NO_IRR_COMPILE_WITH_CONSOLE_DEVICE_"
,
"NO_IRR_COMPILE_WITH_DIRECT3D_8_"
,
"NO_IRR_COMPILE_WITH_DIRECTINPUT_JOYSTICK_"
,
"NO_IRR_COMPILE_WITH_JOYSTICK_EVENTS_"
,
"NO_IRR_COMPILE_WITH_SOFTWARE_"
,
"NO_IRR_COMPILE_WITH_BURNINGSVIDEO_"
,
"NO_IRR_COMPILE_WITH_IRR_SCENE_LOADER_"
,
"NO_IRR_COMPILE_WITH_SKINNED_MESH_SUPPORT_"
,
"NO_IRR_COMPILE_WITH_IRR_MESH_LOADER_"
,
"NO_IRR_COMPILE_WITH_HALFLIFE_LOADER_"
,
"NO_IRR_COMPILE_WITH_MD2_LOADER_"
,
"NO_IRR_COMPILE_WITH_MD3_LOADER_"
,
"NO_IRR_COMPILE_WITH_3DS_LOADER_"
,
"NO_IRR_COMPILE_WITH_COLLADA_LOADER_"
,
"NO_IRR_COMPILE_WITH_CSM_LOADER_"
,
"NO_IRR_COMPILE_WITH_BSP_LOADER_"
,
"NO_IRR_COMPILE_WITH_DMF_LOADER_"
,
"NO_IRR_COMPILE_WITH_LMTS_LOADER_"
,
"NO_IRR_COMPILE_WITH_MY3D_LOADER_"
,
"NO_IRR_COMPILE_WITH_OBJ_LOADER_"
,
"NO_IRR_COMPILE_WITH_OCT_LOADER_"
,
"NO_IRR_COMPILE_WITH_LWO_LOADER_"
,
"NO_IRR_COMPILE_WITH_STL_LOADER_"
,
"NO_IRR_COMPILE_WITH_PLY_LOADER_"
,
"NO_IRR_COMPILE_WITH_SMF_LOADER_"
,
"NO_IRR_COMPILE_WITH_IRR_WRITER_"
,
"NO_IRR_COMPILE_WITH_COLLADA_WRITER_"
,
"NO_IRR_COMPILE_WITH_STL_WRITER_"
,
"NO_IRR_COMPILE_WITH_OBJ_WRITER_"
,
"NO_IRR_COMPILE_WITH_PLY_WRITER_"
,
"NO_IRR_COMPILE_WITH_PCX_LOADER_"
,
"NO_IRR_COMPILE_WITH_PPM_LOADER_"
,
"NO_IRR_COMPILE_WITH_PSD_LOADER_"
,
"NO_IRR_COMPILE_WITH_TGA_LOADER_"
,
"NO_IRR_COMPILE_WITH_WAL_LOADER_"
,
"NO_IRR_COMPILE_WITH_LMP_LOADER_"
,
"NO_IRR_COMPILE_WITH_RGB_LOADER_"
,
"NO_IRR_COMPILE_WITH_PCX_WRITER_"
,
"NO_IRR_COMPILE_WITH_PPM_WRITER_"
,
"NO_IRR_COMPILE_WITH_PSD_WRITER_"
,
"NO_IRR_COMPILE_WITH_TGA_WRITER_"
,
"NO__IRR_COMPILE_WITH_PAK_ARCHIVE_LOADER_"
,
"NO__IRR_COMPILE_WITH_NPK_ARCHIVE_LOADER_"
,
"NO__IRR_COMPILE_WITH_WAD_ARCHIVE_LOADER_"
,
}
premake/irrlicht/premake5.lua
View file @
0077af77
project
"irrlicht"
project
"irrlicht"
kind
"StaticLib"
kind
"StaticLib"
includedirs
{
"include"
,
"source/Irrlicht"
,
"source/Irrlicht/jpeglib"
,
"source/Irrlicht/libpng"
,
"source/Irrlicht/zlib"
}
includedirs
{
"include"
,
"source/Irrlicht"
,
"source/Irrlicht/jpeglib"
,
"source/Irrlicht/libpng"
,
"source/Irrlicht/zlib"
}
dofile
(
"defines.lua"
)
exceptionhandling
"Off"
exceptionhandling
"Off"
rtti
"Off"
rtti
"Off"
files
{
"include/*.h"
,
defines
{
"_IRR_STATIC_LIB_"
,
"NO_IRR_USE_NON_SYSTEM_BZLIB_"
,
"NO_IRR_COMPILE_WITH_BZIP2_"
,
"NO_IRR_COMPILE_WITH_CONSOLE_DEVICE_"
,
"NO_IRR_COMPILE_WITH_DIRECT3D_8_"
,
"NO_IRR_COMPILE_WITH_DIRECTINPUT_JOYSTICK_"
,
"NO_IRR_COMPILE_WITH_JOYSTICK_EVENTS_"
,
"NO_IRR_COMPILE_WITH_SOFTWARE_"
,
"NO_IRR_COMPILE_WITH_BURNINGSVIDEO_"
,
"NO_IRR_COMPILE_WITH_IRR_SCENE_LOADER_"
,
"NO_IRR_COMPILE_WITH_SKINNED_MESH_SUPPORT_"
,
"NO_IRR_COMPILE_WITH_IRR_MESH_LOADER_"
,
"NO_IRR_COMPILE_WITH_HALFLIFE_LOADER_"
,
"NO_IRR_COMPILE_WITH_MD2_LOADER_"
,
"NO_IRR_COMPILE_WITH_MD3_LOADER_"
,
"NO_IRR_COMPILE_WITH_3DS_LOADER_"
,
"NO_IRR_COMPILE_WITH_COLLADA_LOADER_"
,
"NO_IRR_COMPILE_WITH_CSM_LOADER_"
,
"NO_IRR_COMPILE_WITH_BSP_LOADER_"
,
"NO_IRR_COMPILE_WITH_DMF_LOADER_"
,
"NO_IRR_COMPILE_WITH_LMTS_LOADER_"
,
"NO_IRR_COMPILE_WITH_MY3D_LOADER_"
,
"NO_IRR_COMPILE_WITH_OBJ_LOADER_"
,
"NO_IRR_COMPILE_WITH_OCT_LOADER_"
,
"NO_IRR_COMPILE_WITH_LWO_LOADER_"
,
"NO_IRR_COMPILE_WITH_STL_LOADER_"
,
"NO_IRR_COMPILE_WITH_PLY_LOADER_"
,
"NO_IRR_COMPILE_WITH_SMF_LOADER_"
,
"NO_IRR_COMPILE_WITH_IRR_WRITER_"
,
"NO_IRR_COMPILE_WITH_COLLADA_WRITER_"
,
"NO_IRR_COMPILE_WITH_STL_WRITER_"
,
"NO_IRR_COMPILE_WITH_OBJ_WRITER_"
,
"NO_IRR_COMPILE_WITH_PLY_WRITER_"
,
"NO_IRR_COMPILE_WITH_PCX_LOADER_"
,
"NO_IRR_COMPILE_WITH_PPM_LOADER_"
,
"NO_IRR_COMPILE_WITH_PSD_LOADER_"
,
"NO_IRR_COMPILE_WITH_TGA_LOADER_"
,
"NO_IRR_COMPILE_WITH_WAL_LOADER_"
,
"NO_IRR_COMPILE_WITH_LMP_LOADER_"
,
"NO_IRR_COMPILE_WITH_RGB_LOADER_"
,
"NO_IRR_COMPILE_WITH_PCX_WRITER_"
,
"NO_IRR_COMPILE_WITH_PPM_WRITER_"
,
"NO_IRR_COMPILE_WITH_PSD_WRITER_"
,
"NO_IRR_COMPILE_WITH_TGA_WRITER_"
,
"NO__IRR_COMPILE_WITH_PAK_ARCHIVE_LOADER_"
,
"NO__IRR_COMPILE_WITH_NPK_ARCHIVE_LOADER_"
,
"NO__IRR_COMPILE_WITH_WAD_ARCHIVE_LOADER_"
,
"NO_IRR_COMPILE_WITH_ZIP_ENCRYPTION_"
,
"PNG_INTEL_SSE"
,
}
files
{
"include/*.h"
,
"source/Irrlicht/*.cpp"
,
"source/Irrlicht/*.cpp"
,
"source/Irrlicht/lzma/*.h"
,
"source/Irrlicht/lzma/*.h"
,
"source/Irrlicht/lzma/*.c"
,
"source/Irrlicht/lzma/*.c"
,
...
@@ -90,15 +148,13 @@ project "irrlicht"
...
@@ -90,15 +148,13 @@ project "irrlicht"
"source/Irrlicht/libpng/pngwrite.c"
,
"source/Irrlicht/libpng/pngwrite.c"
,
"source/Irrlicht/libpng/pngwtran.c"
,
"source/Irrlicht/libpng/pngwtran.c"
,
"source/Irrlicht/libpng/pngwutil.c"
,
"source/Irrlicht/libpng/pngwutil.c"
,
"source/Irrlicht/aesGladman/*.h"
,
"source/Irrlicht/libpng/intel/intel_init.c"
,
"source/Irrlicht/aesGladman/*.cpp"
}
"source/Irrlicht/libpng/intel/filter_sse2_intrinsics.c"
,
}
filter
{
"system:windows"
}
filter
{
"system:windows"
}
defines
{
"_IRR_WCHAR_FILESYSTEM"
}
defines
{
"_IRR_WCHAR_FILESYSTEM"
}
includedirs
{
"$(DXSDK_DIR)Include"
}
includedirs
{
"$(DXSDK_DIR)Include"
}
libdirs
{
"$(DXSDK_DIR)Lib/x86"
}
links
{
"imm32"
}
filter
{
"system:linux"
}
filter
{
"system:linux"
}
links
{
"X11"
,
"Xxf86vm"
}
links
{
"X11"
,
"Xxf86vm"
}
premake5.lua
View file @
0077af77
...
@@ -218,7 +218,6 @@ workspace "YGOPro"
...
@@ -218,7 +218,6 @@ workspace "YGOPro"
configurations
{
"Release"
,
"Debug"
}
configurations
{
"Release"
,
"Debug"
}
filter
"system:windows"
filter
"system:windows"
defines
{
"WIN32"
,
"_WIN32"
}
entrypoint
"mainCRTStartup"
entrypoint
"mainCRTStartup"
systemversion
"latest"
systemversion
"latest"
startproject
"YGOPro"
startproject
"YGOPro"
...
...
strings.conf
View file @
0077af77
...
@@ -1251,3 +1251,6 @@
...
@@ -1251,3 +1251,6 @@
!
setname
0
x1c6
统王 ドミナス
!
setname
0
x1c6
统王 ドミナス
!
setname
0
x1c7
塞勒凯特
Serket
!
setname
0
x1c7
塞勒凯特
Serket
!
setname
0
x1c8
阿匹卜
Apophis
!
setname
0
x1c8
阿匹卜
Apophis
!
setname
0
x1c9
星辰 ドラゴンテイル
!
setname
0
x1ca
味美喵 ヤミー
!
setname
0
x1cb
K9
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