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
nanahira
ygopro
Commits
23be6f4c
Commit
23be6f4c
authored
Jun 27, 2025
by
nanahira
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'patch-server-list' into develop
parents
35359f0b
5ee546c7
Pipeline
#38149
passed with stages
in 6 minutes and 20 seconds
Changes
17
Pipelines
1
Hide whitespace changes
Inline
Side-by-side
Showing
17 changed files
with
253 additions
and
9 deletions
+253
-9
.ci/assets-locale.sh
.ci/assets-locale.sh
+1
-0
.ci/pack-linux-dlc.sh
.ci/pack-linux-dlc.sh
+1
-1
.ci/pack-linux.sh
.ci/pack-linux.sh
+1
-1
.ci/pack-macos-dlc.sh
.ci/pack-macos-dlc.sh
+1
-1
.ci/pack-macos.sh
.ci/pack-macos.sh
+1
-1
.ci/pack-windows-7z.sh
.ci/pack-windows-7z.sh
+1
-1
.ci/pack-windows-dlc.sh
.ci/pack-windows-dlc.sh
+1
-1
.ci/pack-windows.sh
.ci/pack-windows.sh
+1
-1
.gitlab-ci.yml
.gitlab-ci.yml
+1
-0
gframe/data_manager.cpp
gframe/data_manager.cpp
+153
-1
gframe/data_manager.h
gframe/data_manager.h
+14
-0
gframe/duelclient.cpp
gframe/duelclient.cpp
+1
-0
gframe/game.cpp
gframe/game.cpp
+39
-1
gframe/game.h
gframe/game.h
+10
-0
gframe/menu_handler.cpp
gframe/menu_handler.cpp
+18
-0
servers.conf
servers.conf
+8
-0
strings.conf
strings.conf
+1
-0
No files found.
.ci/assets-locale.sh
View file @
23be6f4c
...
@@ -6,6 +6,7 @@ source .ci/asset-branch
...
@@ -6,6 +6,7 @@ source .ci/asset-branch
apt update
&&
apt
-y
install
wget git libarchive-tools sqlite3
apt update
&&
apt
-y
install
wget git libarchive-tools sqlite3
git clone
--depth
=
1
-b
"
$ASSET_BRANCH_NAME
"
https://code.moenext.com/mycard/ygopro-database
git clone
--depth
=
1
-b
"
$ASSET_BRANCH_NAME
"
https://code.moenext.com/mycard/ygopro-database
cp
-rf
./ygopro-database/locales/
$TARGET_LOCALE
/strings.conf
.
cp
-rf
./ygopro-database/locales/
$TARGET_LOCALE
/strings.conf
.
cp
-rf
./ygopro-database/locales/
$TARGET_LOCALE
/servers.conf
.
rm
-f
cards.cdb
rm
-f
cards.cdb
sqlite3 ./ygopro-database/locales/
$TARGET_LOCALE
/cards.cdb .dump | sqlite3 cards.cdb
sqlite3 ./ygopro-database/locales/
$TARGET_LOCALE
/cards.cdb .dump | sqlite3 cards.cdb
# ygopro-images
# ygopro-images
...
...
.ci/pack-linux-dlc.sh
View file @
23be6f4c
...
@@ -2,7 +2,7 @@
...
@@ -2,7 +2,7 @@
set
-x
set
-x
set
-o
errexit
set
-o
errexit
ARCHIVE_FILES
=(
ygopro cards.cdb locales fonts sound textures strings.conf system.conf pack
)
ARCHIVE_FILES
=(
ygopro cards.cdb locales fonts sound textures strings.conf system.conf
servers.conf
pack
)
if
[[
-z
"
$TARGET_PLATFORM
"
]]
;
then
if
[[
-z
"
$TARGET_PLATFORM
"
]]
;
then
TARGET_PLATFORM
=
linux
TARGET_PLATFORM
=
linux
...
...
.ci/pack-linux.sh
View file @
23be6f4c
...
@@ -2,7 +2,7 @@
...
@@ -2,7 +2,7 @@
set
-x
set
-x
set
-o
errexit
set
-o
errexit
ARCHIVE_FILES
=(
ygopro LICENSE README.md lflist.conf strings.conf system.conf cards.cdb script textures deck single pics replay windbot bot bot.conf locales fonts pack
)
ARCHIVE_FILES
=(
ygopro LICENSE README.md lflist.conf strings.conf system.conf
servers.conf
cards.cdb script textures deck single pics replay windbot bot bot.conf locales fonts pack
)
# TARGET_LOCALE
# TARGET_LOCALE
# ARCHIVE_SUFFIX
# ARCHIVE_SUFFIX
...
...
.ci/pack-macos-dlc.sh
View file @
23be6f4c
...
@@ -2,7 +2,7 @@
...
@@ -2,7 +2,7 @@
set
-x
set
-x
set
-o
errexit
set
-o
errexit
ARCHIVE_FILES
=(
ygopro.app cards.cdb locales fonts sound textures strings.conf system.conf pack
)
ARCHIVE_FILES
=(
ygopro.app cards.cdb locales fonts sound textures strings.conf system.conf
servers.conf
pack
)
if
[[
-z
"
$TARGET_PLATFORM
"
]]
;
then
if
[[
-z
"
$TARGET_PLATFORM
"
]]
;
then
TARGET_PLATFORM
=
darwin
TARGET_PLATFORM
=
darwin
...
...
.ci/pack-macos.sh
View file @
23be6f4c
...
@@ -2,7 +2,7 @@
...
@@ -2,7 +2,7 @@
set
-x
set
-x
set
-o
errexit
set
-o
errexit
ARCHIVE_FILES
=(
ygopro.app LICENSE README.md lflist.conf strings.conf system.conf cards.cdb script textures deck single pics replay sound windbot bot bot.conf locales fonts pack
)
ARCHIVE_FILES
=(
ygopro.app LICENSE README.md lflist.conf strings.conf system.conf
servers.conf
cards.cdb script textures deck single pics replay sound windbot bot bot.conf locales fonts pack
)
# TARGET_LOCALE
# TARGET_LOCALE
# ARCHIVE_SUFFIX
# ARCHIVE_SUFFIX
...
...
.ci/pack-windows-7z.sh
View file @
23be6f4c
...
@@ -2,7 +2,7 @@
...
@@ -2,7 +2,7 @@
set
-x
set
-x
set
-o
errexit
set
-o
errexit
ARCHIVE_FILES
=(
ygopro.exe vcomp140.dll LICENSE README.md lflist.conf strings.conf system.conf cards.cdb script textures deck single pics replay sound bot.conf Bot.exe WindBot locales fonts skin pack
)
ARCHIVE_FILES
=(
ygopro.exe vcomp140.dll LICENSE README.md lflist.conf strings.conf system.conf
servers.conf
cards.cdb script textures deck single pics replay sound bot.conf Bot.exe WindBot locales fonts skin pack
)
if
[[
"
$TARGET_LOCALE
"
==
"zh-CN"
]]
;
then
if
[[
"
$TARGET_LOCALE
"
==
"zh-CN"
]]
;
then
ARCHIVE_FILES
=(
"
${
ARCHIVE_FILES
[@]
}
"
update-koishipro
)
ARCHIVE_FILES
=(
"
${
ARCHIVE_FILES
[@]
}
"
update-koishipro
)
...
...
.ci/pack-windows-dlc.sh
View file @
23be6f4c
...
@@ -2,7 +2,7 @@
...
@@ -2,7 +2,7 @@
set
-x
set
-x
set
-o
errexit
set
-o
errexit
ARCHIVE_FILES
=(
ygopro.exe vcomp140.dll cards.cdb locales fonts sound textures strings.conf system.conf skin pack
)
ARCHIVE_FILES
=(
ygopro.exe vcomp140.dll cards.cdb locales fonts sound textures strings.conf system.conf s
ervers.conf s
kin pack
)
if
[[
-z
"
$TARGET_PLATFORM
"
]]
;
then
if
[[
-z
"
$TARGET_PLATFORM
"
]]
;
then
TARGET_PLATFORM
=
win32
TARGET_PLATFORM
=
win32
...
...
.ci/pack-windows.sh
View file @
23be6f4c
...
@@ -2,7 +2,7 @@
...
@@ -2,7 +2,7 @@
set
-x
set
-x
set
-o
errexit
set
-o
errexit
ARCHIVE_FILES
=(
ygopro.exe vcomp140.dll LICENSE README.md lflist.conf strings.conf system.conf cards.cdb script textures deck single pics replay sound bot.conf Bot.exe WindBot locales fonts skin pack
)
ARCHIVE_FILES
=(
ygopro.exe vcomp140.dll LICENSE README.md lflist.conf strings.conf system.conf
servers.conf
cards.cdb script textures deck single pics replay sound bot.conf Bot.exe WindBot locales fonts skin pack
)
if
[[
"
$TARGET_LOCALE
"
==
"zh-CN"
&&
"
$ARCHIVE_SUFFIX
"
!=
"zst"
]]
;
then
if
[[
"
$TARGET_LOCALE
"
==
"zh-CN"
&&
"
$ARCHIVE_SUFFIX
"
!=
"zst"
]]
;
then
ARCHIVE_FILES
=(
"
${
ARCHIVE_FILES
[@]
}
"
update-koishipro
)
ARCHIVE_FILES
=(
"
${
ARCHIVE_FILES
[@]
}
"
update-koishipro
)
...
...
.gitlab-ci.yml
View file @
23be6f4c
...
@@ -313,6 +313,7 @@ assets_windows:
...
@@ -313,6 +313,7 @@ assets_windows:
-
cards.cdb
-
cards.cdb
-
strings.conf
-
strings.conf
-
bot.conf
-
bot.conf
-
servers.conf
only
:
only
:
-
tags
-
tags
-
master
-
master
...
...
gframe/data_manager.cpp
View file @
23be6f4c
...
@@ -178,6 +178,159 @@ void DataManager::ReadStringConfLine(const char* linebuf) {
...
@@ -178,6 +178,159 @@ void DataManager::ReadStringConfLine(const char* linebuf) {
_setnameStrings
[
value
]
=
strBuffer
;
_setnameStrings
[
value
]
=
strBuffer
;
}
}
}
}
bool
DataManager
::
LoadServerList
(
const
char
*
file
)
{
FILE
*
fp
=
myfopen
(
file
,
"r"
);
if
(
!
fp
)
return
false
;
char
linebuf
[
TEXT_LINE_SIZE
]{};
while
(
std
::
fgets
(
linebuf
,
sizeof
linebuf
,
fp
))
{
ReadServerConfLine
(
linebuf
);
}
std
::
fclose
(
fp
);
return
true
;
}
bool
DataManager
::
LoadServerList
(
const
wchar_t
*
file
)
{
FILE
*
fp
=
mywfopen
(
file
,
"r"
);
if
(
!
fp
)
return
false
;
char
linebuf
[
TEXT_LINE_SIZE
]{};
while
(
std
::
fgets
(
linebuf
,
sizeof
linebuf
,
fp
))
{
ReadServerConfLine
(
linebuf
);
}
std
::
fclose
(
fp
);
return
true
;
}
bool
DataManager
::
LoadServerList
(
irr
::
io
::
IReadFile
*
reader
)
{
char
ch
{};
std
::
string
linebuf
;
while
(
reader
->
read
(
&
ch
,
1
))
{
if
(
ch
==
'\0'
)
break
;
linebuf
.
push_back
(
ch
);
if
(
ch
==
'\n'
||
linebuf
.
size
()
>=
TEXT_LINE_SIZE
-
1
)
{
ReadServerConfLine
(
linebuf
.
data
());
linebuf
.
clear
();
}
}
reader
->
drop
();
return
true
;
}
void
DataManager
::
ReadServerConfLine
(
const
char
*
linebuf
)
{
char
buffer
[
1024
];
std
::
strncpy
(
buffer
,
linebuf
,
sizeof
(
buffer
)
-
1
);
buffer
[
sizeof
(
buffer
)
-
1
]
=
'\0'
;
buffer
[
strcspn
(
buffer
,
"
\n
"
)]
=
'\0'
;
char
*
sep1
=
std
::
strchr
(
buffer
,
'|'
);
if
(
sep1
!=
nullptr
)
{
*
sep1
=
'\0'
;
char
*
addrPart
=
sep1
+
1
;
wchar_t
wname
[
256
],
wip
[
512
];
// read the server name
BufferIO
::
DecodeUTF8
(
buffer
,
wname
);
// replace the first '|' with ':'
char
*
sep2
=
std
::
strchr
(
addrPart
,
'|'
);
if
(
sep2
)
{
*
sep2
=
':'
;
}
BufferIO
::
DecodeUTF8
(
addrPart
,
wip
);
_serverStrings
.
emplace_back
(
wname
,
wip
);
}
}
bool
DataManager
::
LoadCorresSrvIni
(
const
char
*
file
)
{
FILE
*
fp
=
myfopen
(
file
,
"r"
);
if
(
!
fp
)
return
false
;
char
linebuf
[
TEXT_LINE_SIZE
]{};
while
(
std
::
fgets
(
linebuf
,
sizeof
linebuf
,
fp
))
{
ReadCorresSrvIniLine
(
linebuf
);
}
std
::
fclose
(
fp
);
InsertServerList
();
return
true
;
}
bool
DataManager
::
LoadCorresSrvIni
(
const
wchar_t
*
file
)
{
FILE
*
fp
=
mywfopen
(
file
,
"r"
);
if
(
!
fp
)
return
false
;
char
linebuf
[
TEXT_LINE_SIZE
]{};
while
(
std
::
fgets
(
linebuf
,
sizeof
linebuf
,
fp
))
{
ReadCorresSrvIniLine
(
linebuf
);
}
std
::
fclose
(
fp
);
InsertServerList
();
return
true
;
}
bool
DataManager
::
LoadCorresSrvIni
(
irr
::
io
::
IReadFile
*
reader
)
{
char
ch
{};
std
::
string
linebuf
;
while
(
reader
->
read
(
&
ch
,
1
))
{
if
(
ch
==
'\0'
)
break
;
linebuf
.
push_back
(
ch
);
if
(
ch
==
'\n'
||
linebuf
.
size
()
>=
TEXT_LINE_SIZE
-
1
)
{
ReadCorresSrvIniLine
(
linebuf
.
data
());
linebuf
.
clear
();
}
}
reader
->
drop
();
InsertServerList
();
return
true
;
}
void
DataManager
::
ReadCorresSrvIniLine
(
const
char
*
linebuf
)
{
std
::
wstring
name
=
GetINIValue
(
linebuf
,
"ServerName = "
);
std
::
wstring
host
=
GetINIValue
(
linebuf
,
"ServerHost = "
);
std
::
wstring
port
=
GetINIValue
(
linebuf
,
"ServerPort = "
);
if
(
name
!=
L""
)
iniName
=
name
;
if
(
host
!=
L""
)
iniHost
=
host
;
if
(
port
!=
L""
)
iniPort
=
port
;
}
std
::
wstring
DataManager
::
GetINIValue
(
const
char
*
line
,
const
char
*
key
)
{
if
(
!
line
||
!
key
)
{
return
L""
;
}
const
char
*
keyPos
=
strstr
(
line
,
key
);
if
(
!
keyPos
)
{
return
L""
;
}
const
char
*
valStart
=
keyPos
+
strlen
(
key
);
while
(
*
valStart
==
' '
)
valStart
++
;
const
char
*
valEnd
=
valStart
;
while
(
*
valEnd
&&
*
valEnd
!=
'\n'
&&
*
valEnd
!=
'\r'
)
valEnd
++
;
if
(
valStart
==
valEnd
)
return
L""
;
std
::
string
narrowStr
(
valStart
,
valEnd
);
if
(
narrowStr
.
empty
())
return
L""
;
wchar_t
wbuf
[
1024
];
BufferIO
::
DecodeUTF8
(
narrowStr
.
c_str
(),
wbuf
);
return
wbuf
;
}
void
DataManager
::
InsertServerList
()
{
if
(
iniName
!=
L""
&&
iniHost
!=
L""
)
{
std
::
wstring
ip
=
iniHost
;
if
(
iniPort
!=
L""
)
{
ip
+=
L":"
;
ip
+=
iniPort
;
}
_serverStrings
.
emplace_back
(
iniName
,
ip
);
}
iniName
.
clear
();
iniHost
.
clear
();
iniPort
.
clear
();
}
bool
DataManager
::
Error
(
sqlite3
*
pDB
,
sqlite3_stmt
*
pStmt
)
{
bool
DataManager
::
Error
(
sqlite3
*
pDB
,
sqlite3_stmt
*
pStmt
)
{
std
::
snprintf
(
errmsg
,
sizeof
errmsg
,
"%s"
,
sqlite3_errmsg
(
pDB
));
std
::
snprintf
(
errmsg
,
sizeof
errmsg
,
"%s"
,
sqlite3_errmsg
(
pDB
));
if
(
pStmt
)
if
(
pStmt
)
...
@@ -530,5 +683,4 @@ bool DataManager::deck_sort_name(code_pointer p1, code_pointer p2) {
...
@@ -530,5 +683,4 @@ bool DataManager::deck_sort_name(code_pointer p1, code_pointer p2) {
return
res
<
0
;
return
res
<
0
;
return
p1
->
first
<
p2
->
first
;
return
p1
->
first
<
p2
->
first
;
}
}
}
}
gframe/data_manager.h
View file @
23be6f4c
...
@@ -50,6 +50,16 @@ public:
...
@@ -50,6 +50,16 @@ public:
bool
LoadStrings
(
const
wchar_t
*
file
);
bool
LoadStrings
(
const
wchar_t
*
file
);
bool
LoadStrings
(
irr
::
io
::
IReadFile
*
reader
);
bool
LoadStrings
(
irr
::
io
::
IReadFile
*
reader
);
void
ReadStringConfLine
(
const
char
*
linebuf
);
void
ReadStringConfLine
(
const
char
*
linebuf
);
bool
LoadServerList
(
const
char
*
file
);
bool
LoadServerList
(
const
wchar_t
*
file
);
bool
LoadServerList
(
irr
::
io
::
IReadFile
*
reader
);
void
ReadServerConfLine
(
const
char
*
linebuf
);
bool
LoadCorresSrvIni
(
const
char
*
file
);
bool
LoadCorresSrvIni
(
const
wchar_t
*
file
);
bool
LoadCorresSrvIni
(
irr
::
io
::
IReadFile
*
reader
);
void
ReadCorresSrvIniLine
(
const
char
*
linebuf
);
std
::
wstring
GetINIValue
(
const
char
*
line
,
const
char
*
key
);
void
InsertServerList
();
bool
Error
(
sqlite3
*
pDB
,
sqlite3_stmt
*
pStmt
=
nullptr
);
bool
Error
(
sqlite3
*
pDB
,
sqlite3_stmt
*
pStmt
=
nullptr
);
code_pointer
GetCodePointer
(
unsigned
int
code
)
const
;
code_pointer
GetCodePointer
(
unsigned
int
code
)
const
;
...
@@ -80,6 +90,7 @@ public:
...
@@ -80,6 +90,7 @@ public:
std
::
unordered_map
<
unsigned
int
,
std
::
wstring
>
_victoryStrings
;
std
::
unordered_map
<
unsigned
int
,
std
::
wstring
>
_victoryStrings
;
std
::
unordered_map
<
unsigned
int
,
std
::
wstring
>
_setnameStrings
;
std
::
unordered_map
<
unsigned
int
,
std
::
wstring
>
_setnameStrings
;
std
::
unordered_map
<
unsigned
int
,
std
::
wstring
>
_sysStrings
;
std
::
unordered_map
<
unsigned
int
,
std
::
wstring
>
_sysStrings
;
std
::
vector
<
std
::
pair
<
std
::
wstring
,
std
::
wstring
>>
_serverStrings
;
char
errmsg
[
512
]{};
char
errmsg
[
512
]{};
static
unsigned
char
scriptBuffer
[
0x100000
];
static
unsigned
char
scriptBuffer
[
0x100000
];
...
@@ -104,6 +115,9 @@ private:
...
@@ -104,6 +115,9 @@ private:
std
::
unordered_map
<
unsigned
int
,
CardDataC
>
_datas
;
std
::
unordered_map
<
unsigned
int
,
CardDataC
>
_datas
;
std
::
unordered_map
<
unsigned
int
,
CardString
>
_strings
;
std
::
unordered_map
<
unsigned
int
,
CardString
>
_strings
;
std
::
unordered_map
<
unsigned
int
,
std
::
vector
<
uint16_t
>>
extra_setcode
;
std
::
unordered_map
<
unsigned
int
,
std
::
vector
<
uint16_t
>>
extra_setcode
;
std
::
wstring
iniName
;
std
::
wstring
iniHost
;
std
::
wstring
iniPort
;
};
};
extern
DataManager
dataManager
;
extern
DataManager
dataManager
;
...
...
gframe/duelclient.cpp
View file @
23be6f4c
...
@@ -622,6 +622,7 @@ void DuelClient::HandleSTOCPacketLan(unsigned char* data, int len) {
...
@@ -622,6 +622,7 @@ void DuelClient::HandleSTOCPacketLan(unsigned char* data, int len) {
mainGame
->
cbDeckSelect
->
setEnabled
(
true
);
mainGame
->
cbDeckSelect
->
setEnabled
(
true
);
mainGame
->
HideElement
(
mainGame
->
wCreateHost
);
mainGame
->
HideElement
(
mainGame
->
wCreateHost
);
mainGame
->
HideElement
(
mainGame
->
wLanWindow
);
mainGame
->
HideElement
(
mainGame
->
wLanWindow
);
mainGame
->
HideElement
(
mainGame
->
wServerList
);
mainGame
->
HideElement
(
mainGame
->
wSinglePlay
);
mainGame
->
HideElement
(
mainGame
->
wSinglePlay
);
mainGame
->
ShowElement
(
mainGame
->
wHostPrepare
);
mainGame
->
ShowElement
(
mainGame
->
wHostPrepare
);
mainGame
->
ResizeChatInputWindow
();
mainGame
->
ResizeChatInputWindow
();
...
...
gframe/game.cpp
View file @
23be6f4c
...
@@ -124,6 +124,8 @@ bool Game::Initialize() {
...
@@ -124,6 +124,8 @@ bool Game::Initialize() {
ErrorLog
(
"Failed to load strings!"
);
ErrorLog
(
"Failed to load strings!"
);
return
false
;
return
false
;
}
}
if
(
dataManager
.
LoadServerList
(
GetLocaleDir
(
"servers.conf"
)))
{}
else
dataManager
.
LoadServerList
(
"servers.conf"
);
dataManager
.
LoadDB
(
L"specials/special.cdb"
);
dataManager
.
LoadDB
(
L"specials/special.cdb"
);
env
=
device
->
getGUIEnvironment
();
env
=
device
->
getGUIEnvironment
();
numFont
=
irr
::
gui
::
CGUITTFont
::
createTTFont
(
env
,
gameConf
.
numfont
,
16
);
numFont
=
irr
::
gui
::
CGUITTFont
::
createTTFont
(
env
,
gameConf
.
numfont
,
16
);
...
@@ -235,7 +237,8 @@ bool Game::Initialize() {
...
@@ -235,7 +237,8 @@ bool Game::Initialize() {
editbox_list
.
push_back
(
ebNickName
);
editbox_list
.
push_back
(
ebNickName
);
lstHostList
=
env
->
addListBox
(
irr
::
core
::
rect
<
irr
::
s32
>
(
10
,
60
,
570
,
320
),
wLanWindow
,
LISTBOX_LAN_HOST
,
true
);
lstHostList
=
env
->
addListBox
(
irr
::
core
::
rect
<
irr
::
s32
>
(
10
,
60
,
570
,
320
),
wLanWindow
,
LISTBOX_LAN_HOST
,
true
);
lstHostList
->
setItemHeight
(
18
);
lstHostList
->
setItemHeight
(
18
);
btnLanRefresh
=
env
->
addButton
(
irr
::
core
::
rect
<
irr
::
s32
>
(
240
,
325
,
340
,
350
),
wLanWindow
,
BUTTON_LAN_REFRESH
,
dataManager
.
GetSysString
(
1217
));
btnLanRefresh
=
env
->
addButton
(
irr
::
core
::
rect
<
irr
::
s32
>
(
150
,
325
,
250
,
350
),
wLanWindow
,
BUTTON_LAN_REFRESH
,
dataManager
.
GetSysString
(
1217
));
btnServerList
=
env
->
addButton
(
irr
::
core
::
rect
<
irr
::
s32
>
(
280
,
325
,
380
,
350
),
wLanWindow
,
BUTTON_SERVER_LIST
,
dataManager
.
GetSysString
(
1239
));
env
->
addStaticText
(
dataManager
.
GetSysString
(
1221
),
irr
::
core
::
rect
<
irr
::
s32
>
(
10
,
360
,
220
,
380
),
false
,
false
,
wLanWindow
);
env
->
addStaticText
(
dataManager
.
GetSysString
(
1221
),
irr
::
core
::
rect
<
irr
::
s32
>
(
10
,
360
,
220
,
380
),
false
,
false
,
wLanWindow
);
ebJoinHost
=
env
->
addEditBox
(
gameConf
.
lasthost
,
irr
::
core
::
rect
<
irr
::
s32
>
(
110
,
355
,
420
,
380
),
true
,
wLanWindow
);
ebJoinHost
=
env
->
addEditBox
(
gameConf
.
lasthost
,
irr
::
core
::
rect
<
irr
::
s32
>
(
110
,
355
,
420
,
380
),
true
,
wLanWindow
);
ebJoinHost
->
setTextAlignment
(
irr
::
gui
::
EGUIA_CENTER
,
irr
::
gui
::
EGUIA_CENTER
);
ebJoinHost
->
setTextAlignment
(
irr
::
gui
::
EGUIA_CENTER
,
irr
::
gui
::
EGUIA_CENTER
);
...
@@ -359,6 +362,15 @@ bool Game::Initialize() {
...
@@ -359,6 +362,15 @@ bool Game::Initialize() {
btnHostPrepNotReady
->
setVisible
(
false
);
btnHostPrepNotReady
->
setVisible
(
false
);
btnHostPrepStart
=
env
->
addButton
(
irr
::
core
::
rect
<
irr
::
s32
>
(
230
,
280
,
340
,
305
),
wHostPrepare
,
BUTTON_HP_START
,
dataManager
.
GetSysString
(
1215
));
btnHostPrepStart
=
env
->
addButton
(
irr
::
core
::
rect
<
irr
::
s32
>
(
230
,
280
,
340
,
305
),
wHostPrepare
,
BUTTON_HP_START
,
dataManager
.
GetSysString
(
1215
));
btnHostPrepCancel
=
env
->
addButton
(
irr
::
core
::
rect
<
irr
::
s32
>
(
350
,
280
,
460
,
305
),
wHostPrepare
,
BUTTON_HP_CANCEL
,
dataManager
.
GetSysString
(
1210
));
btnHostPrepCancel
=
env
->
addButton
(
irr
::
core
::
rect
<
irr
::
s32
>
(
350
,
280
,
460
,
305
),
wHostPrepare
,
BUTTON_HP_CANCEL
,
dataManager
.
GetSysString
(
1210
));
//server list
wServerList
=
env
->
addWindow
(
irr
::
core
::
rect
<
irr
::
s32
>
(
25
,
80
,
325
,
400
),
false
,
dataManager
.
GetSysString
(
1239
));
wServerList
->
getCloseButton
()
->
setVisible
(
false
);
wServerList
->
setVisible
(
false
);
wServerList
->
setDraggable
(
true
);
lstServerList
=
env
->
addListBox
(
irr
::
core
::
rect
<
irr
::
s32
>
(
10
,
20
,
290
,
270
),
wServerList
,
LISTBOX_SERVER_LIST
,
true
);
lstServerList
->
setItemHeight
(
18
);
RefreshServerList
();
btnServerReturn
=
env
->
addButton
(
irr
::
core
::
rect
<
irr
::
s32
>
(
100
,
280
,
200
,
310
),
wServerList
,
BUTTON_SERVER_RETURN
,
dataManager
.
GetSysString
(
1210
));
//img
//img
wCardImg
=
env
->
addStaticText
(
L""
,
irr
::
core
::
rect
<
irr
::
s32
>
(
1
,
1
,
1
+
CARD_IMG_WIDTH
+
20
,
1
+
CARD_IMG_HEIGHT
+
18
),
true
,
false
,
0
,
-
1
,
true
);
wCardImg
=
env
->
addStaticText
(
L""
,
irr
::
core
::
rect
<
irr
::
s32
>
(
1
,
1
,
1
+
CARD_IMG_WIDTH
+
20
,
1
+
CARD_IMG_HEIGHT
+
18
),
true
,
false
,
0
,
-
1
,
true
);
wCardImg
->
setBackgroundColor
(
0xc0c0c0c0
);
wCardImg
->
setBackgroundColor
(
0xc0c0c0c0
);
...
@@ -1232,6 +1244,7 @@ std::wstring Game::SetStaticText(irr::gui::IGUIStaticText* pControl, irr::u32 cW
...
@@ -1232,6 +1244,7 @@ std::wstring Game::SetStaticText(irr::gui::IGUIStaticText* pControl, irr::u32 cW
}
}
void
Game
::
LoadExpansions
(
const
wchar_t
*
expansions_path
)
{
void
Game
::
LoadExpansions
(
const
wchar_t
*
expansions_path
)
{
bool
lflist_changed
=
false
;
bool
lflist_changed
=
false
;
bool
server_list_changed
=
false
;
FileSystem
::
TraversalDir
(
expansions_path
,
[
&
](
const
wchar_t
*
name
,
bool
isdir
)
{
FileSystem
::
TraversalDir
(
expansions_path
,
[
&
](
const
wchar_t
*
name
,
bool
isdir
)
{
if
(
isdir
)
if
(
isdir
)
return
;
return
;
...
@@ -1245,11 +1258,19 @@ void Game::LoadExpansions(const wchar_t* expansions_path) {
...
@@ -1245,11 +1258,19 @@ void Game::LoadExpansions(const wchar_t* expansions_path) {
if
(
!
std
::
wcscmp
(
name
,
L"lflist.conf"
))
{
if
(
!
std
::
wcscmp
(
name
,
L"lflist.conf"
))
{
deckManager
.
LoadLFListSingle
(
fpath
,
true
);
deckManager
.
LoadLFListSingle
(
fpath
,
true
);
lflist_changed
=
true
;
lflist_changed
=
true
;
}
else
if
(
!
std
::
wcscmp
(
name
,
L"servers.conf"
))
{
dataManager
.
LoadServerList
(
fpath
);
server_list_changed
=
true
;
}
else
{
}
else
{
dataManager
.
LoadStrings
(
fpath
);
dataManager
.
LoadStrings
(
fpath
);
}
}
return
;
return
;
}
}
if
(
!
std
::
wcscmp
(
name
,
L"corres_srv.ini"
))
{
dataManager
.
LoadCorresSrvIni
(
fpath
);
server_list_changed
=
true
;
return
;
}
if
(
IsExtension
(
name
,
L".zip"
)
||
IsExtension
(
name
,
L".ypk"
))
{
if
(
IsExtension
(
name
,
L".zip"
)
||
IsExtension
(
name
,
L".ypk"
))
{
#ifdef _WIN32
#ifdef _WIN32
DataManager
::
FileSystem
->
addFileArchive
(
fpath
,
true
,
false
,
irr
::
io
::
EFAT_ZIP
);
DataManager
::
FileSystem
->
addFileArchive
(
fpath
,
true
,
false
,
irr
::
io
::
EFAT_ZIP
);
...
@@ -1288,11 +1309,18 @@ void Game::LoadExpansions(const wchar_t* expansions_path) {
...
@@ -1288,11 +1309,18 @@ void Game::LoadExpansions(const wchar_t* expansions_path) {
if
(
!
std
::
wcscmp
(
fname
,
L"lflist.conf"
))
{
if
(
!
std
::
wcscmp
(
fname
,
L"lflist.conf"
))
{
deckManager
.
LoadLFListSingle
(
reader
,
true
);
deckManager
.
LoadLFListSingle
(
reader
,
true
);
lflist_changed
=
true
;
lflist_changed
=
true
;
}
else
if
(
!
std
::
wcscmp
(
fname
,
L"servers.conf"
))
{
dataManager
.
LoadServerList
(
reader
);
server_list_changed
=
true
;
}
else
{
}
else
{
dataManager
.
LoadStrings
(
reader
);
dataManager
.
LoadStrings
(
reader
);
}
}
continue
;
continue
;
}
}
if
(
!
std
::
wcscmp
(
fname
,
L"corres_srv.ini"
))
{
dataManager
.
LoadCorresSrvIni
(
createReader
());
server_list_changed
=
true
;
}
if
(
!
mywcsncasecmp
(
fname
,
L"pack/"
,
5
)
&&
IsExtension
(
fname
,
L".ydk"
))
{
if
(
!
mywcsncasecmp
(
fname
,
L"pack/"
,
5
)
&&
IsExtension
(
fname
,
L".ydk"
))
{
deckBuilder
.
expansionPacks
.
push_back
(
fname
);
deckBuilder
.
expansionPacks
.
push_back
(
fname
);
continue
;
continue
;
...
@@ -1301,6 +1329,8 @@ void Game::LoadExpansions(const wchar_t* expansions_path) {
...
@@ -1301,6 +1329,8 @@ void Game::LoadExpansions(const wchar_t* expansions_path) {
}
}
if
(
lflist_changed
)
if
(
lflist_changed
)
RefreshLFList
();
RefreshLFList
();
if
(
server_list_changed
)
RefreshServerList
();
}
}
void
Game
::
LoadExpansionsAll
()
{
void
Game
::
LoadExpansionsAll
()
{
auto
list
=
GetExpansionsList
();
auto
list
=
GetExpansionsList
();
...
@@ -1496,6 +1526,13 @@ void Game::RefreshBot() {
...
@@ -1496,6 +1526,13 @@ void Game::RefreshBot() {
RefreshCategoryDeck
(
cbBotDeckCategory
,
cbBotDeck
);
RefreshCategoryDeck
(
cbBotDeckCategory
,
cbBotDeck
);
}
}
}
}
void
Game
::
RefreshServerList
()
{
lstServerList
->
clear
();
for
(
const
auto
&
pair
:
dataManager
.
_serverStrings
)
{
const
wchar_t
*
key
=
pair
.
first
.
c_str
();
lstServerList
->
addItem
(
key
);
}
}
bool
Game
::
LoadConfigFromFile
(
const
char
*
file
)
{
bool
Game
::
LoadConfigFromFile
(
const
char
*
file
)
{
FILE
*
fp
=
myfopen
(
file
,
"r"
);
FILE
*
fp
=
myfopen
(
file
,
"r"
);
if
(
!
fp
){
if
(
!
fp
){
...
@@ -2172,6 +2209,7 @@ void Game::CloseDuelWindow() {
...
@@ -2172,6 +2209,7 @@ void Game::CloseDuelWindow() {
lstLog
->
clear
();
lstLog
->
clear
();
logParam
.
clear
();
logParam
.
clear
();
lstHostList
->
clear
();
lstHostList
->
clear
();
lstServerList
->
clear
();
DuelClient
::
hosts
.
clear
();
DuelClient
::
hosts
.
clear
();
DuelClient
::
hosts_srvpro
.
clear
();
DuelClient
::
hosts_srvpro
.
clear
();
ClearTextures
();
ClearTextures
();
...
...
gframe/game.h
View file @
23be6f4c
...
@@ -200,6 +200,7 @@ public:
...
@@ -200,6 +200,7 @@ public:
void
RefreshBot
();
void
RefreshBot
();
void
RefreshLocales
();
void
RefreshLocales
();
void
RefreshLFList
();
void
RefreshLFList
();
void
RefreshServerList
();
void
DrawSelectionLine
(
irr
::
video
::
S3DVertex
*
vec
,
bool
strip
,
int
width
,
float
*
cv
);
void
DrawSelectionLine
(
irr
::
video
::
S3DVertex
*
vec
,
bool
strip
,
int
width
,
float
*
cv
);
void
DrawSelectionLine
(
irr
::
gui
::
IGUIElement
*
element
,
int
width
,
irr
::
video
::
SColor
color
);
void
DrawSelectionLine
(
irr
::
gui
::
IGUIElement
*
element
,
int
width
,
irr
::
video
::
SColor
color
);
void
DrawBackGround
();
void
DrawBackGround
();
...
@@ -693,6 +694,11 @@ public:
...
@@ -693,6 +694,11 @@ public:
irr
::
gui
::
IGUIButton
*
btnBigCardZoomIn
;
irr
::
gui
::
IGUIButton
*
btnBigCardZoomIn
;
irr
::
gui
::
IGUIButton
*
btnBigCardZoomOut
;
irr
::
gui
::
IGUIButton
*
btnBigCardZoomOut
;
irr
::
gui
::
IGUIButton
*
btnBigCardClose
;
irr
::
gui
::
IGUIButton
*
btnBigCardClose
;
//server list
irr
::
gui
::
IGUIButton
*
btnServerList
;
irr
::
gui
::
IGUIWindow
*
wServerList
;
irr
::
gui
::
IGUIListBox
*
lstServerList
;
irr
::
gui
::
IGUIButton
*
btnServerReturn
;
};
};
extern
Game
*
mainGame
;
extern
Game
*
mainGame
;
...
@@ -920,6 +926,10 @@ extern Game* mainGame;
...
@@ -920,6 +926,10 @@ extern Game* mainGame;
#define BUTTON_DECK_CODE_SAVE 390
#define BUTTON_DECK_CODE_SAVE 390
#define BUTTON_DECK_CODE_CANCEL 391
#define BUTTON_DECK_CODE_CANCEL 391
#define BUTTON_SERVER_LIST 392
#define LISTBOX_SERVER_LIST 393
#define BUTTON_SERVER_RETURN 394
#define TEXTURE_DUEL 0
#define TEXTURE_DUEL 0
#define TEXTURE_DECK 1
#define TEXTURE_DECK 1
#define TEXTURE_MENU 2
#define TEXTURE_MENU 2
...
...
gframe/menu_handler.cpp
View file @
23be6f4c
...
@@ -91,6 +91,7 @@ bool MenuHandler::OnEvent(const irr::SEvent& event) {
...
@@ -91,6 +91,7 @@ bool MenuHandler::OnEvent(const irr::SEvent& event) {
}
}
case
BUTTON_JOIN_CANCEL
:
{
case
BUTTON_JOIN_CANCEL
:
{
mainGame
->
HideElement
(
mainGame
->
wLanWindow
);
mainGame
->
HideElement
(
mainGame
->
wLanWindow
);
mainGame
->
HideElement
(
mainGame
->
wServerList
);
mainGame
->
ShowElement
(
mainGame
->
wMainMenu
);
mainGame
->
ShowElement
(
mainGame
->
wMainMenu
);
if
(
exit_on_return
)
if
(
exit_on_return
)
mainGame
->
device
->
closeDevice
();
mainGame
->
device
->
closeDevice
();
...
@@ -104,6 +105,7 @@ bool MenuHandler::OnEvent(const irr::SEvent& event) {
...
@@ -104,6 +105,7 @@ bool MenuHandler::OnEvent(const irr::SEvent& event) {
mainGame
->
btnHostConfirm
->
setEnabled
(
true
);
mainGame
->
btnHostConfirm
->
setEnabled
(
true
);
mainGame
->
btnHostCancel
->
setEnabled
(
true
);
mainGame
->
btnHostCancel
->
setEnabled
(
true
);
mainGame
->
HideElement
(
mainGame
->
wLanWindow
);
mainGame
->
HideElement
(
mainGame
->
wLanWindow
);
mainGame
->
HideElement
(
mainGame
->
wServerList
);
mainGame
->
ShowElement
(
mainGame
->
wCreateHost
);
mainGame
->
ShowElement
(
mainGame
->
wCreateHost
);
break
;
break
;
}
}
...
@@ -484,6 +486,15 @@ bool MenuHandler::OnEvent(const irr::SEvent& event) {
...
@@ -484,6 +486,15 @@ bool MenuHandler::OnEvent(const irr::SEvent& event) {
prev_sel
=
-
1
;
prev_sel
=
-
1
;
break
;
break
;
}
}
case
BUTTON_SERVER_LIST
:
{
mainGame
->
ShowElement
(
mainGame
->
wServerList
);
mainGame
->
PopupElement
(
mainGame
->
wServerList
);
break
;
}
case
BUTTON_SERVER_RETURN
:
{
mainGame
->
HideElement
(
mainGame
->
wServerList
);
break
;
}
}
}
break
;
break
;
}
}
...
@@ -595,6 +606,13 @@ bool MenuHandler::OnEvent(const irr::SEvent& event) {
...
@@ -595,6 +606,13 @@ bool MenuHandler::OnEvent(const irr::SEvent& event) {
mainGame
->
cbBotDeck
->
setVisible
(
mainGame
->
botInfo
[
sel
].
select_deckfile
);
mainGame
->
cbBotDeck
->
setVisible
(
mainGame
->
botInfo
[
sel
].
select_deckfile
);
break
;
break
;
}
}
case
LISTBOX_SERVER_LIST
:
{
int
sel
=
mainGame
->
lstServerList
->
getSelected
();
auto
target
=
sel
==
-
1
?
L""
:
dataManager
.
_serverStrings
[
sel
].
second
.
c_str
();
BufferIO
::
CopyWideString
(
target
,
mainGame
->
gameConf
.
lasthost
);
mainGame
->
ebJoinHost
->
setText
(
target
);
break
;
}
}
}
break
;
break
;
}
}
...
...
servers.conf
0 → 100644
View file @
23be6f4c
Koishi
主服|
koishi
.
momobako
.
com
:
7210
Koishi
DL
服|
koishi
.
momobako
.
com
:
7373
Koishi
无禁服|
koishi
.
momobako
.
com
:
2337
万宁游戏王|
koishi
.
momobako
.
com
:
10000
决斗编年史|
dc
.
momobako
.
com
:
2333
233
服|
s1
.
ygo233
.
com
:
233
233
服
2
区|
s2
.
ygo233
.
com
:
233
2333
约战服|
s1
.
ygo233
.
com
:
2333
strings.conf
View file @
23be6f4c
...
@@ -305,6 +305,7 @@
...
@@ -305,6 +305,7 @@
!
system
1236
规则:
!
system
1236
规则:
!
system
1237
每回合时间:
!
system
1237
每回合时间:
!
system
1238
不洗切时回卡组改为回顶端
!
system
1238
不洗切时回卡组改为回顶端
!
system
1239
服务器列表
!
system
1244
单局模式
!
system
1244
单局模式
!
system
1245
比赛模式
!
system
1245
比赛模式
!
system
1246
TAG
!
system
1246
TAG
...
...
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