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
7fa8ba2c
Commit
7fa8ba2c
authored
Nov 02, 2025
by
wind2009
Browse files
Options
Browse Files
Download
Plain Diff
Merge remote-tracking branch 'upstream/master' into develop
parents
c3502aae
ca952790
Changes
12
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
12 changed files
with
716 additions
and
101 deletions
+716
-101
.github/workflows/build.yml
.github/workflows/build.yml
+6
-17
gframe/client_field.cpp
gframe/client_field.cpp
+28
-27
gframe/client_field.h
gframe/client_field.h
+1
-1
gframe/config.h
gframe/config.h
+1
-1
gframe/data_manager.cpp
gframe/data_manager.cpp
+1
-2
gframe/data_manager.h
gframe/data_manager.h
+1
-0
gframe/deck_manager.h
gframe/deck_manager.h
+13
-12
gframe/game.cpp
gframe/game.cpp
+0
-2
gframe/game.h
gframe/game.h
+3
-3
gframe/network.h
gframe/network.h
+3
-2
lflist.conf
lflist.conf
+649
-30
strings.conf
strings.conf
+10
-4
No files found.
.github/workflows/build.yml
View file @
7fa8ba2c
...
@@ -478,21 +478,15 @@ jobs:
...
@@ -478,21 +478,15 @@ jobs:
fail-fast
:
false
fail-fast
:
false
matrix
:
matrix
:
name
:
name
:
-
macos-13-intel
-
macos-15-intel
# - macos-13-arm-cross-compile-static-link
-
macos-15-universal-static-link
-
macos-13-universal-static-link
-
macos-15-arm
-
macos-15-arm
# - macos-15-intel-cross-compile-static-link
# - macos-15-intel-cross-compile-static-link
# - macos-15-universal-static-link
include
:
include
:
-
name
:
macos-13-intel
-
name
:
macos-15-intel
os
:
macos-13
os
:
macos-15-intel
# - name: macos-13-arm-cross-compile-static-link
-
name
:
macos-15-universal-static-link
# os: macos-13
os
:
macos-15
# cross-build-arm: true
# static-link: true
-
name
:
macos-13-universal-static-link
os
:
macos-13
cross-build-intel
:
true
cross-build-intel
:
true
cross-build-arm
:
true
cross-build-arm
:
true
static-link
:
true
static-link
:
true
...
@@ -501,11 +495,6 @@ jobs:
...
@@ -501,11 +495,6 @@ jobs:
# - name: macos-15-intel-cross-compile-static-link
# - name: macos-15-intel-cross-compile-static-link
# os: macos-15
# os: macos-15
# cross-build-intel: true
# cross-build-intel: true
# static-link: true
# - name: macos-15-universal-static-link
# os: macos-15
# cross-build-intel: true
# cross-build-arm: true
# static-link: true
# static-link: true
runs-on
:
${{ matrix.os }}
runs-on
:
${{ matrix.os }}
...
...
gframe/client_field.cpp
View file @
7fa8ba2c
...
@@ -27,13 +27,11 @@ ClientField::~ClientField() {
...
@@ -27,13 +27,11 @@ ClientField::~ClientField() {
}
}
hand
[
i
].
clear
();
hand
[
i
].
clear
();
for
(
auto
&
card
:
mzone
[
i
])
{
for
(
auto
&
card
:
mzone
[
i
])
{
if
(
card
)
delete
card
;
delete
card
;
card
=
nullptr
;
card
=
nullptr
;
}
}
for
(
auto
&
card
:
szone
[
i
])
{
for
(
auto
&
card
:
szone
[
i
])
{
if
(
card
)
delete
card
;
delete
card
;
card
=
nullptr
;
card
=
nullptr
;
}
}
for
(
auto
&
card
:
grave
[
i
])
{
for
(
auto
&
card
:
grave
[
i
])
{
...
@@ -44,7 +42,6 @@ ClientField::~ClientField() {
...
@@ -44,7 +42,6 @@ ClientField::~ClientField() {
delete
card
;
delete
card
;
}
}
remove
[
i
].
clear
();
remove
[
i
].
clear
();
for
(
auto
&
card
:
extra
[
i
])
{
for
(
auto
&
card
:
extra
[
i
])
{
delete
card
;
delete
card
;
}
}
...
@@ -57,30 +54,33 @@ ClientField::~ClientField() {
...
@@ -57,30 +54,33 @@ ClientField::~ClientField() {
}
}
void
ClientField
::
Clear
()
{
void
ClientField
::
Clear
()
{
for
(
int
i
=
0
;
i
<
2
;
++
i
)
{
for
(
int
i
=
0
;
i
<
2
;
++
i
)
{
for
(
auto
cit
=
deck
[
i
].
begin
();
cit
!=
deck
[
i
].
end
();
++
cit
)
for
(
auto
&
card
:
deck
[
i
])
{
delete
*
cit
;
delete
card
;
}
deck
[
i
].
clear
();
deck
[
i
].
clear
();
for
(
auto
cit
=
hand
[
i
].
begin
();
cit
!=
hand
[
i
].
end
();
++
cit
)
for
(
auto
&
card
:
hand
[
i
])
{
delete
*
cit
;
delete
card
;
}
hand
[
i
].
clear
();
hand
[
i
].
clear
();
for
(
auto
cit
=
mzone
[
i
].
begin
();
cit
!=
mzone
[
i
].
end
();
++
cit
)
{
for
(
auto
&
card
:
mzone
[
i
])
{
if
(
*
cit
)
delete
card
;
delete
*
cit
;
card
=
nullptr
;
*
cit
=
0
;
}
}
for
(
auto
&
card
:
szone
[
i
])
{
for
(
auto
cit
=
szone
[
i
].
begin
();
cit
!=
szone
[
i
].
end
();
++
cit
)
{
delete
card
;
if
(
*
cit
)
card
=
nullptr
;
delete
*
cit
;
}
*
cit
=
0
;
for
(
auto
&
card
:
grave
[
i
])
{
}
delete
card
;
for
(
auto
cit
=
grave
[
i
].
begin
();
cit
!=
grave
[
i
].
end
();
++
cit
)
}
delete
*
cit
;
grave
[
i
].
clear
();
grave
[
i
].
clear
();
for
(
auto
cit
=
remove
[
i
].
begin
();
cit
!=
remove
[
i
].
end
();
++
cit
)
for
(
auto
&
card
:
remove
[
i
])
{
delete
*
cit
;
delete
card
;
}
remove
[
i
].
clear
();
remove
[
i
].
clear
();
for
(
auto
cit
=
extra
[
i
].
begin
();
cit
!=
extra
[
i
].
end
();
++
cit
)
for
(
auto
&
card
:
extra
[
i
])
{
delete
*
cit
;
delete
card
;
}
extra
[
i
].
clear
();
extra
[
i
].
clear
();
deck_act
[
i
]
=
false
;
deck_act
[
i
]
=
false
;
grave_act
[
i
]
=
false
;
grave_act
[
i
]
=
false
;
...
@@ -88,8 +88,9 @@ void ClientField::Clear() {
...
@@ -88,8 +88,9 @@ void ClientField::Clear() {
extra_act
[
i
]
=
false
;
extra_act
[
i
]
=
false
;
pzone_act
[
i
]
=
false
;
pzone_act
[
i
]
=
false
;
}
}
for
(
auto
sit
=
overlay_cards
.
begin
();
sit
!=
overlay_cards
.
end
();
++
sit
)
for
(
auto
&
card
:
overlay_cards
)
{
delete
*
sit
;
delete
card
;
}
overlay_cards
.
clear
();
overlay_cards
.
clear
();
extra_p_count
[
0
]
=
0
;
extra_p_count
[
0
]
=
0
;
extra_p_count
[
1
]
=
0
;
extra_p_count
[
1
]
=
0
;
...
...
gframe/client_field.h
View file @
7fa8ba2c
...
@@ -93,7 +93,7 @@ public:
...
@@ -93,7 +93,7 @@ public:
std
::
mt19937
rnd
;
std
::
mt19937
rnd
;
ClientField
();
ClientField
();
~
ClientField
();
~
ClientField
()
override
;
void
Clear
();
void
Clear
();
void
Initial
(
int
player
,
int
deckc
,
int
extrac
,
int
sidec
=
0
);
void
Initial
(
int
player
,
int
deckc
,
int
extrac
,
int
sidec
=
0
);
void
ResetSequence
(
std
::
vector
<
ClientCard
*>&
list
,
bool
reset_height
);
void
ResetSequence
(
std
::
vector
<
ClientCard
*>&
list
,
bool
reset_height
);
...
...
gframe/config.h
View file @
7fa8ba2c
...
@@ -80,7 +80,7 @@ inline FILE* mywfopen(const wchar_t* filename, const char* mode) {
...
@@ -80,7 +80,7 @@ inline FILE* mywfopen(const wchar_t* filename, const char* mode) {
#include <irrlicht.h>
#include <irrlicht.h>
extern
const
unsigned
short
PRO_VERSION
;
constexpr
uint16_t
PRO_VERSION
=
0x1362
;
extern
unsigned
int
enable_log
;
extern
unsigned
int
enable_log
;
extern
bool
exit_on_return
;
extern
bool
exit_on_return
;
extern
bool
open_file
;
extern
bool
open_file
;
...
...
gframe/data_manager.cpp
View file @
7fa8ba2c
...
@@ -89,10 +89,9 @@ bool DataManager::LoadDB(const wchar_t* wfile) {
...
@@ -89,10 +89,9 @@ bool DataManager::LoadDB(const wchar_t* wfile) {
spmembuffer_t
*
mem
=
(
spmembuffer_t
*
)
std
::
calloc
(
sizeof
(
spmembuffer_t
),
1
);
spmembuffer_t
*
mem
=
(
spmembuffer_t
*
)
std
::
calloc
(
sizeof
(
spmembuffer_t
),
1
);
spmemvfs_env_init
();
spmemvfs_env_init
();
mem
->
total
=
mem
->
used
=
reader
->
getSize
();
mem
->
total
=
mem
->
used
=
reader
->
getSize
();
mem
->
data
=
(
char
*
)
std
::
malloc
(
mem
->
total
+
1
);
mem
->
data
=
(
char
*
)
std
::
malloc
(
mem
->
total
);
reader
->
read
(
mem
->
data
,
mem
->
total
);
reader
->
read
(
mem
->
data
,
mem
->
total
);
reader
->
drop
();
reader
->
drop
();
(
mem
->
data
)[
mem
->
total
]
=
'\0'
;
bool
ret
{};
bool
ret
{};
if
(
spmemvfs_open_db
(
&
db
,
file
,
mem
)
!=
SQLITE_OK
)
if
(
spmemvfs_open_db
(
&
db
,
file
,
mem
)
!=
SQLITE_OK
)
ret
=
Error
(
db
.
handle
);
ret
=
Error
(
db
.
handle
);
...
...
gframe/data_manager.h
View file @
7fa8ba2c
...
@@ -15,6 +15,7 @@ namespace irr {
...
@@ -15,6 +15,7 @@ namespace irr {
}
}
namespace
ygo
{
namespace
ygo
{
constexpr
int
MAX_STRING_ID
=
0x7ff
;
constexpr
int
MAX_STRING_ID
=
0x7ff
;
constexpr
uint32_t
MIN_CARD_ID
=
(
uint32_t
)(
MAX_STRING_ID
+
1
)
>>
4
;
constexpr
uint32_t
MIN_CARD_ID
=
(
uint32_t
)(
MAX_STRING_ID
+
1
)
>>
4
;
constexpr
uint32_t
MAX_CARD_ID
=
0x0fffffffU
;
constexpr
uint32_t
MAX_CARD_ID
=
0x0fffffffU
;
...
...
gframe/deck_manager.h
View file @
7fa8ba2c
...
@@ -7,20 +7,21 @@
...
@@ -7,20 +7,21 @@
#include "data_manager.h"
#include "data_manager.h"
namespace
ygo
{
namespace
ygo
{
constexpr
int
DECK_MAX_SIZE
=
60
;
constexpr
int
DECK_MIN_SIZE
=
40
;
constexpr
int
EXTRA_MAX_SIZE
=
15
;
constexpr
int
SIDE_MAX_SIZE
=
15
;
constexpr
int
PACK_MAX_SIZE
=
1000
;
constexpr
int
MAINC_MAX
=
250
;
// the limit of card_state
constexpr
int
DECK_MAX_SIZE
=
60
;
constexpr
int
SIDEC_MAX
=
MAINC_MAX
;
constexpr
int
DECK_MIN_SIZE
=
40
;
constexpr
int
EXTRA_MAX_SIZE
=
15
;
constexpr
int
SIDE_MAX_SIZE
=
15
;
constexpr
int
PACK_MAX_SIZE
=
1000
;
constexpr
int
DECK_CATEGORY_PACK
=
0
;
constexpr
int
MAINC_MAX
=
250
;
// the limit of card_state
constexpr
int
DECK_CATEGORY_BOT
=
1
;
constexpr
int
SIDEC_MAX
=
MAINC_MAX
;
constexpr
int
DECK_CATEGORY_NONE
=
2
;
constexpr
int
DECK_CATEGORY_SEPARATOR
=
3
;
constexpr
int
DECK_CATEGORY_PACK
=
0
;
constexpr
int
DECK_CATEGORY_CUSTOM
=
4
;
constexpr
int
DECK_CATEGORY_BOT
=
1
;
constexpr
int
DECK_CATEGORY_NONE
=
2
;
constexpr
int
DECK_CATEGORY_SEPARATOR
=
3
;
constexpr
int
DECK_CATEGORY_CUSTOM
=
4
;
struct
LFList
{
struct
LFList
{
unsigned
int
hash
{};
unsigned
int
hash
{};
...
...
gframe/game.cpp
View file @
7fa8ba2c
...
@@ -12,8 +12,6 @@
...
@@ -12,8 +12,6 @@
#include "single_mode.h"
#include "single_mode.h"
#include <thread>
#include <thread>
const
unsigned
short
PRO_VERSION
=
0x1362
;
namespace
ygo
{
namespace
ygo
{
Game
*
mainGame
;
Game
*
mainGame
;
...
...
gframe/game.h
View file @
7fa8ba2c
...
@@ -22,12 +22,12 @@
...
@@ -22,12 +22,12 @@
#include <mutex>
#include <mutex>
#include <functional>
#include <functional>
constexpr
int
DEFAULT_DUEL_RULE
=
5
;
namespace
ygo
{
constexpr
int
DEFAULT_DUEL_RULE
=
CURRENT_RULE
;
constexpr
int
CONFIG_LINE_SIZE
=
1024
;
constexpr
int
CONFIG_LINE_SIZE
=
1024
;
constexpr
int
TEXT_LINE_SIZE
=
256
;
constexpr
int
TEXT_LINE_SIZE
=
256
;
namespace
ygo
{
template
<
size_t
N
>
template
<
size_t
N
>
bool
IsExtension
(
const
wchar_t
*
filename
,
const
wchar_t
(
&
extension
)[
N
])
{
bool
IsExtension
(
const
wchar_t
*
filename
,
const
wchar_t
(
&
extension
)[
N
])
{
auto
flen
=
std
::
wcslen
(
filename
);
auto
flen
=
std
::
wcslen
(
filename
);
...
...
gframe/network.h
View file @
7fa8ba2c
...
@@ -14,8 +14,9 @@
...
@@ -14,8 +14,9 @@
#define check_trivially_copyable(T) static_assert(std::is_trivially_copyable<T>::value == true && std::is_standard_layout<T>::value == true, "not trivially copyable")
#define check_trivially_copyable(T) static_assert(std::is_trivially_copyable<T>::value == true && std::is_standard_layout<T>::value == true, "not trivially copyable")
namespace
ygo
{
namespace
ygo
{
constexpr
int
SIZE_NETWORK_BUFFER
=
0x20000
;
constexpr
int
MAX_DATA_SIZE
=
UINT16_MAX
-
1
;
constexpr
int
SIZE_NETWORK_BUFFER
=
0x20000
;
constexpr
int
MAX_DATA_SIZE
=
UINT16_MAX
-
1
;
struct
HostInfo
{
struct
HostInfo
{
uint32_t
lflist
{};
uint32_t
lflist
{};
...
...
lflist.conf
View file @
7fa8ba2c
This diff is collapsed.
Click to expand it.
strings.conf
View file @
7fa8ba2c
...
@@ -671,6 +671,8 @@
...
@@ -671,6 +671,8 @@
!
counter
0
x6e
四季指示物
!
counter
0
x6e
四季指示物
!
counter
0
x6f
龋齿指示物
!
counter
0
x6f
龋齿指示物
!
counter
0
x70
盘子指示物
!
counter
0
x70
盘子指示物
!
counter
0
x71
纠罪指示物
!
counter
0
x1072
少女指示物
#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
次世代 ジェネクス
...
@@ -1240,7 +1242,7 @@
...
@@ -1240,7 +1242,7 @@
!
setname
0
x1b4
时空 タキオン
!
setname
0
x1b4
时空 タキオン
!
setname
0
x1b5
蓝泪 青い涙
!
setname
0
x1b5
蓝泪 青い涙
!
setname
0
x1b6
石版
!
setname
0
x1b6
石版
!
setname
0
x1b7
拟箱掳尸
Mimighoul
!
setname
0
x1b7
迷拟宝箱鬼 ミミグル
!
setname
0
x1b8
鲨 シャーク
!
setname
0
x1b8
鲨 シャーク
!
setname
0
x11b8
鲨龙兽 シャーク・ドレイク
!
setname
0
x11b8
鲨龙兽 シャーク・ドレイク
!
setname
0
x1b9
原石
!
setname
0
x1b9
原石
...
@@ -1253,12 +1255,12 @@
...
@@ -1253,12 +1255,12 @@
!
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
巳剑
巳剣
!
setname
0
x1c4
征龙 征竜
!
setname
0
x1c4
征龙 征竜
!
setname
0
x1c5
再世 リジェネシス
!
setname
0
x1c5
再世 リジェネシス
!
setname
0
x1c6
统王 ドミナス
!
setname
0
x1c6
统王 ドミナス
!
setname
0
x1c7
塞勒凯特
Serket
!
setname
0
x1c7
塞勒凯特
セルケト
!
setname
0
x1c8
阿匹卜
Apophis
!
setname
0
x1c8
阿匹卜
アポピス
!
setname
0
x1c9
星辰 ドラゴンテイル
!
setname
0
x1c9
星辰 ドラゴンテイル
!
setname
0
x1ca
味美喵 ヤミー
!
setname
0
x1ca
味美喵 ヤミー
!
setname
0
x1cb
K9
!
setname
0
x1cb
K9
...
@@ -1269,3 +1271,7 @@
...
@@ -1269,3 +1271,7 @@
!
setname
0
x1d0
死伟王 死偉王
!
setname
0
x1d0
死伟王 死偉王
!
setname
0
x1d1
绚岚 絢嵐
!
setname
0
x1d1
绚岚 絢嵐
!
setname
0
x1d2
终刻 ドゥームズ
!
setname
0
x1d2
终刻 ドゥームズ
!
setname
0
x1d3
不可见之手 ヘカトンケイル
!
setname
0
x1d4
纠罪巧 糾罪巧
!
setname
0
x1d5
杀手级调整曲 キラーチューン
!
setname
0
x1d6
树熊 コアラ
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