Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Y
ygopro-2pick
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-2pick
Commits
c9264cdc
Commit
c9264cdc
authored
Feb 20, 2019
by
nanahira
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'server' of
https://github.com/purerosefallen/ygopro
parents
94dd87f1
f17f8a80
Changes
12
Hide whitespace changes
Inline
Side-by-side
Showing
12 changed files
with
309 additions
and
38 deletions
+309
-38
.gitignore
.gitignore
+1
-0
README.md
README.md
+5
-0
appveyor.yml
appveyor.yml
+37
-3
cards.cdb
cards.cdb
+0
-0
gframe/drawing.cpp
gframe/drawing.cpp
+1
-1
gframe/game.cpp
gframe/game.cpp
+35
-27
gframe/game.h
gframe/game.h
+2
-2
gframe/myfilesystem.h
gframe/myfilesystem.h
+38
-1
lflist.conf
lflist.conf
+186
-1
ocgcore
ocgcore
+1
-1
script
script
+1
-1
strings.conf
strings.conf
+2
-1
No files found.
.gitignore
View file @
c9264cdc
...
@@ -85,3 +85,4 @@ core*
...
@@ -85,3 +85,4 @@ core*
/*.bat
/*.bat
/*.sh
/*.sh
/*.sql
README.md
View file @
c9264cdc
...
@@ -40,3 +40,8 @@
...
@@ -40,3 +40,8 @@
*
每回合抽卡
*
每回合抽卡
*
每回合时间
*
每回合时间
*
录像保存模式
*
录像保存模式
### 特殊编译参数
执行
`premake5 gmake`
之前,可以通过设置一些环境变量,来改变一些编译参数。
*
`YGOPRO_DEFAULT_DUEL_RULE=X`
设置默认决斗规则为大师规则X。
*
`YGOPRO_NO_LUA_SAFE`
若有定义,则开启默认禁用的
`os`
和
`io`
库。请慎用这个参数,确保运行的卡片脚本文件是可以信任的。
appveyor.yml
View file @
c9264cdc
...
@@ -18,9 +18,6 @@ install:
...
@@ -18,9 +18,6 @@ install:
-
bash -c "curl --retry 5 --connect-timeout 30 --location --remote-header-name --remote-name https://www.sqlite.org/2018/sqlite-amalgamation-3240000.zip ; exit 0"
-
bash -c "curl --retry 5 --connect-timeout 30 --location --remote-header-name --remote-name https://www.sqlite.org/2018/sqlite-amalgamation-3240000.zip ; exit 0"
-
7z x -y sqlite-amalgamation-3240000.zip
-
7z x -y sqlite-amalgamation-3240000.zip
-
move sqlite-amalgamation-3240000 sqlite3
-
move sqlite-amalgamation-3240000 sqlite3
-
appveyor DownloadFile https://github.com/tronkko/dirent/raw/master/include/dirent.h
-
move dirent.h gframe\
# let premake happy
# let premake happy
-
xcopy /E premake\* .
-
xcopy /E premake\* .
...
@@ -37,12 +34,49 @@ build:
...
@@ -37,12 +34,49 @@ build:
after_build
:
after_build
:
-
ps
:
move bin\release\ygopro.exe .
-
ps
:
move bin\release\ygopro.exe .
# redis
-
bash -c "curl --retry 5 --connect-timeout 30 --location --remote-header-name --remote-name https://github.com/MicrosoftArchive/redis/releases/download/win-3.2.100/Redis-x64-3.2.100.zip ; exit 0"
-
7z x -y -oredis Redis-x64-3.2.100.zip
# nodejs
-
bash -c "curl --retry 5 --connect-timeout 30 --location --remote-header-name --remote-name https://nodejs.org/dist/v10.15.0/node-v10.15.0-win-x64.zip ; exit 0"
-
7z x -y node-v10.15.0-win-x64.zip
-
mv node-v10.15.0-win-x64 node
# srvpro
-
git clone https://github.com/purerosefallen/ygopro-server
-
cd ygopro-server
-
../node/npm install
-
bash -c "curl --retry 5 --connect-timeout 30 --location --remote-header-name --remote-name https://github.com/purerosefallen/windbot/releases/download/latest/WindBot.7z ; exit 0"
-
7z x -y WindBot.7z
-
rm -rf Bot.exe bot.conf
-
mv WindBot windbot_
-
mv windbot_ windbot
# Windows NTFS does not support case sensitive, so renaming the folder twice.
-
rm -rf WindBot.7z
-
cp ../cards.cdb windbot/
-
mkdir ygopro decks_save
-
cp -rf ../ygopro.exe ygopro/
-
mv ../cards.cdb ygopro/
-
mv ../lflist.conf ygopro/
-
mv ../script ygopro/
-
cd ygopro
-
mkdir gframe
-
cp -rf ../../gframe/game.cpp gframe/
# Toss game.cpp in for version detection
# - cp -rf config_build config
-
cd ../..
# start script
-
bash -c "echo '@echo off' >> run.bat ; echo 'start redis/redis-server.exe' >> run.bat ; echo 'cd ygopro-server/windbot' >> run.bat ; echo 'start WindBot.exe servermode=true serverport=2399' >> run.bat ; echo 'cd ..' >> run.bat ; echo 'start ../node/node.exe ygopro-server.js' >> run.bat"
-
7z a -mx9 -xr!.git* ygopro-server-win.zip node redis ygopro-server run.bat
test
:
off
test
:
off
artifacts
:
artifacts
:
-
path
:
ygopro.exe
-
path
:
ygopro.exe
name
:
ygopro server mode
name
:
ygopro server mode
-
path
:
ygopro-server-win.zip
name
:
Windows version of SRVPro
deploy
:
deploy
:
release
:
win
release
:
win
...
...
cards.cdb
View file @
c9264cdc
No preview for this file type
gframe/drawing.cpp
View file @
c9264cdc
...
@@ -1129,7 +1129,7 @@ void Game::DrawThumb(code_pointer cp, position2di pos, std::unordered_map<int, i
...
@@ -1129,7 +1129,7 @@ void Game::DrawThumb(code_pointer cp, position2di pos, std::unordered_map<int, i
if
(
drag
)
{
if
(
drag
)
{
dragloc
=
recti
(
pos
.
X
,
pos
.
Y
,
pos
.
X
+
CARD_THUMB_WIDTH
*
mainGame
->
xScale
,
pos
.
Y
+
CARD_THUMB_HEIGHT
*
mainGame
->
yScale
);
dragloc
=
recti
(
pos
.
X
,
pos
.
Y
,
pos
.
X
+
CARD_THUMB_WIDTH
*
mainGame
->
xScale
,
pos
.
Y
+
CARD_THUMB_HEIGHT
*
mainGame
->
yScale
);
limitloc
=
recti
(
pos
.
X
,
pos
.
Y
,
pos
.
X
+
20
*
mainGame
->
xScale
,
pos
.
Y
+
20
*
mainGame
->
yScale
);
limitloc
=
recti
(
pos
.
X
,
pos
.
Y
,
pos
.
X
+
20
*
mainGame
->
xScale
,
pos
.
Y
+
20
*
mainGame
->
yScale
);
otloc
=
recti
(
pos
.
X
+
7
,
pos
.
Y
+
50
,
pos
.
X
+
37
*
mainGame
->
xScale
,
pos
.
Y
+
65
*
mainGame
->
yScale
);
otloc
=
recti
(
pos
.
X
+
7
,
pos
.
Y
+
50
*
mainGame
->
yScale
,
pos
.
X
+
37
*
mainGame
->
xScale
,
pos
.
Y
+
65
*
mainGame
->
yScale
);
}
}
driver
->
draw2DImage
(
img
,
dragloc
,
rect
<
s32
>
(
0
,
0
,
size
.
Width
,
size
.
Height
));
driver
->
draw2DImage
(
img
,
dragloc
,
rect
<
s32
>
(
0
,
0
,
size
.
Width
,
size
.
Height
));
if
(
lflist
->
count
(
lcode
))
{
if
(
lflist
->
count
(
lcode
))
{
...
...
gframe/game.cpp
View file @
c9264cdc
...
@@ -704,14 +704,23 @@ bool Game::Initialize() {
...
@@ -704,14 +704,23 @@ bool Game::Initialize() {
btnStartFilter
->
setRelativePosition
(
rect
<
s32
>
(
260
,
80
+
125
/
6
,
390
,
100
+
125
/
6
));
btnStartFilter
->
setRelativePosition
(
rect
<
s32
>
(
260
,
80
+
125
/
6
,
390
,
100
+
125
/
6
));
btnClearFilter
=
env
->
addButton
(
rect
<
s32
>
(
205
,
80
+
125
/
6
,
255
,
100
+
125
/
6
),
wFilter
,
BUTTON_CLEAR_FILTER
,
dataManager
.
GetSysString
(
1304
));
btnClearFilter
=
env
->
addButton
(
rect
<
s32
>
(
205
,
80
+
125
/
6
,
255
,
100
+
125
/
6
),
wFilter
,
BUTTON_CLEAR_FILTER
,
dataManager
.
GetSysString
(
1304
));
}
}
wCategories
=
env
->
addWindow
(
rect
<
s32
>
(
6
30
,
60
,
1000
,
270
),
false
,
dataManager
.
strBuffer
);
wCategories
=
env
->
addWindow
(
rect
<
s32
>
(
6
00
,
60
,
1000
,
305
),
false
,
dataManager
.
strBuffer
);
wCategories
->
getCloseButton
()
->
setVisible
(
false
);
wCategories
->
getCloseButton
()
->
setVisible
(
false
);
wCategories
->
setDrawTitlebar
(
false
);
wCategories
->
setDrawTitlebar
(
false
);
wCategories
->
setDraggable
(
false
);
wCategories
->
setDraggable
(
false
);
wCategories
->
setVisible
(
false
);
wCategories
->
setVisible
(
false
);
btnCategoryOK
=
env
->
addButton
(
rect
<
s32
>
(
135
,
175
,
235
,
200
),
wCategories
,
BUTTON_CATEGORY_OK
,
dataManager
.
GetSysString
(
1211
));
btnCategoryOK
=
env
->
addButton
(
rect
<
s32
>
(
150
,
210
,
250
,
235
),
wCategories
,
BUTTON_CATEGORY_OK
,
dataManager
.
GetSysString
(
1211
));
int
catewidth
=
0
;
for
(
int
i
=
0
;
i
<
32
;
++
i
)
{
irr
::
core
::
dimension2d
<
unsigned
int
>
dtxt
=
mainGame
->
guiFont
->
getDimension
(
dataManager
.
GetSysString
(
1100
+
i
));
if
(
dtxt
.
Width
+
40
>
catewidth
)
catewidth
=
dtxt
.
Width
+
40
;
}
for
(
int
i
=
0
;
i
<
32
;
++
i
)
for
(
int
i
=
0
;
i
<
32
;
++
i
)
chkCategory
[
i
]
=
env
->
addCheckBox
(
false
,
recti
(
10
+
(
i
%
4
)
*
90
,
10
+
(
i
/
4
)
*
20
,
100
+
(
i
%
4
)
*
90
,
30
+
(
i
/
4
)
*
20
),
wCategories
,
-
1
,
dataManager
.
GetSysString
(
1100
+
i
));
chkCategory
[
i
]
=
env
->
addCheckBox
(
false
,
recti
(
10
+
(
i
%
4
)
*
catewidth
,
5
+
(
i
/
4
)
*
25
,
10
+
(
i
%
4
+
1
)
*
catewidth
,
5
+
(
i
/
4
+
1
)
*
25
),
wCategories
,
-
1
,
dataManager
.
GetSysString
(
1100
+
i
));
int
wcatewidth
=
catewidth
*
4
+
16
;
wCategories
->
setRelativePosition
(
rect
<
s32
>
(
1000
-
wcatewidth
,
60
,
1000
,
305
));
btnCategoryOK
->
setRelativePosition
(
recti
(
wcatewidth
/
2
-
50
,
210
,
wcatewidth
/
2
+
50
,
235
));
btnMarksFilter
=
env
->
addButton
(
rect
<
s32
>
(
60
,
80
+
125
/
6
,
190
,
100
+
125
/
6
),
wFilter
,
BUTTON_MARKS_FILTER
,
dataManager
.
GetSysString
(
1374
));
btnMarksFilter
=
env
->
addButton
(
rect
<
s32
>
(
60
,
80
+
125
/
6
,
190
,
100
+
125
/
6
),
wFilter
,
BUTTON_MARKS_FILTER
,
dataManager
.
GetSysString
(
1374
));
wLinkMarks
=
env
->
addWindow
(
rect
<
s32
>
(
700
,
30
,
820
,
150
),
false
,
dataManager
.
strBuffer
);
wLinkMarks
=
env
->
addWindow
(
rect
<
s32
>
(
700
,
30
,
820
,
150
),
false
,
dataManager
.
strBuffer
);
wLinkMarks
->
getCloseButton
()
->
setVisible
(
false
);
wLinkMarks
->
getCloseButton
()
->
setVisible
(
false
);
...
@@ -1947,7 +1956,13 @@ void Game::OnResize() {
...
@@ -1947,7 +1956,13 @@ void Game::OnResize() {
btnClearFilter
->
setRelativePosition
(
Resize
(
205
,
80
+
125
/
6
,
255
,
100
+
125
/
6
));
btnClearFilter
->
setRelativePosition
(
Resize
(
205
,
80
+
125
/
6
,
255
,
100
+
125
/
6
));
btnMarksFilter
->
setRelativePosition
(
Resize
(
60
,
80
+
125
/
6
,
190
,
100
+
125
/
6
));
btnMarksFilter
->
setRelativePosition
(
Resize
(
60
,
80
+
125
/
6
,
190
,
100
+
125
/
6
));
wCategories
->
setRelativePosition
(
ResizeWin
(
450
,
60
,
1000
,
270
));
recti
btncatepos
=
btnEffectFilter
->
getAbsolutePosition
();
wCategories
->
setRelativePosition
(
recti
(
btncatepos
.
LowerRightCorner
.
X
-
wCategories
->
getRelativePosition
().
getWidth
(),
btncatepos
.
LowerRightCorner
.
Y
-
btncatepos
.
getHeight
()
/
2
,
btncatepos
.
LowerRightCorner
.
X
,
btncatepos
.
LowerRightCorner
.
Y
-
btncatepos
.
getHeight
()
/
2
+
245
));
wLinkMarks
->
setRelativePosition
(
ResizeWin
(
700
,
30
,
820
,
150
));
wLinkMarks
->
setRelativePosition
(
ResizeWin
(
700
,
30
,
820
,
150
));
stBanlist
->
setRelativePosition
(
Resize
(
10
,
9
,
100
,
29
));
stBanlist
->
setRelativePosition
(
Resize
(
10
,
9
,
100
,
29
));
stDeck
->
setRelativePosition
(
Resize
(
10
,
39
,
100
,
59
));
stDeck
->
setRelativePosition
(
Resize
(
10
,
39
,
100
,
59
));
...
@@ -1987,7 +2002,8 @@ void Game::OnResize() {
...
@@ -1987,7 +2002,8 @@ void Game::OnResize() {
wANAttribute
->
setRelativePosition
(
ResizeWin
(
500
,
200
,
830
,
285
));
wANAttribute
->
setRelativePosition
(
ResizeWin
(
500
,
200
,
830
,
285
));
wANRace
->
setRelativePosition
(
ResizeWin
(
480
,
200
,
850
,
410
));
wANRace
->
setRelativePosition
(
ResizeWin
(
480
,
200
,
850
,
410
));
wReplaySave
->
setRelativePosition
(
ResizeWin
(
510
,
200
,
820
,
320
));
wReplaySave
->
setRelativePosition
(
ResizeWin
(
510
,
200
,
820
,
320
));
stHintMsg
->
setRelativePosition
(
ResizeWin
(
500
,
60
,
820
,
90
));
stHintMsg
->
setRelativePosition
(
ResizeWin
(
660
-
160
*
xScale
,
60
,
660
+
160
*
xScale
,
90
));
//sound / music volume bar
//sound / music volume bar
scrSoundVolume
->
setRelativePosition
(
recti
(
scrSoundVolume
->
getRelativePosition
().
UpperLeftCorner
.
X
,
scrSoundVolume
->
getRelativePosition
().
UpperLeftCorner
.
Y
,
20
+
(
300
*
xScale
)
-
70
,
scrSoundVolume
->
getRelativePosition
().
LowerRightCorner
.
Y
));
scrSoundVolume
->
setRelativePosition
(
recti
(
scrSoundVolume
->
getRelativePosition
().
UpperLeftCorner
.
X
,
scrSoundVolume
->
getRelativePosition
().
UpperLeftCorner
.
Y
,
20
+
(
300
*
xScale
)
-
70
,
scrSoundVolume
->
getRelativePosition
().
LowerRightCorner
.
Y
));
...
@@ -2034,8 +2050,8 @@ void Game::OnResize() {
...
@@ -2034,8 +2050,8 @@ void Game::OnResize() {
btnReset
->
setRelativePosition
(
recti
(
1
,
1
,
width
,
height
));
btnReset
->
setRelativePosition
(
recti
(
1
,
1
,
width
,
height
));
}
}
wCardImg
->
setRelativePosition
(
ResizeCard
(
1
,
1
,
20
,
18
));
wCardImg
->
setRelativePosition
(
ResizeCard
ImgWin
(
1
,
1
,
20
,
18
));
imgCard
->
setRelativePosition
(
ResizeCard
(
10
,
9
,
0
,
0
));
imgCard
->
setRelativePosition
(
ResizeCard
ImgWin
(
10
,
9
,
0
,
0
));
wInfos
->
setRelativePosition
(
Resize
(
1
,
275
,
301
,
639
));
wInfos
->
setRelativePosition
(
Resize
(
1
,
275
,
301
,
639
));
stName
->
setRelativePosition
(
recti
(
10
,
10
,
300
*
xScale
-
13
,
10
+
22
));
stName
->
setRelativePosition
(
recti
(
10
,
10
,
300
*
xScale
-
13
,
10
+
22
));
lstLog
->
setRelativePosition
(
Resize
(
10
,
10
,
290
,
290
));
lstLog
->
setRelativePosition
(
Resize
(
10
,
10
,
290
,
290
));
...
@@ -2049,7 +2065,7 @@ void Game::OnResize() {
...
@@ -2049,7 +2065,7 @@ void Game::OnResize() {
btnM2
->
setRelativePosition
(
Resize
(
160
,
0
,
210
,
20
));
btnM2
->
setRelativePosition
(
Resize
(
160
,
0
,
210
,
20
));
btnEP
->
setRelativePosition
(
Resize
(
320
,
0
,
370
,
20
));
btnEP
->
setRelativePosition
(
Resize
(
320
,
0
,
370
,
20
));
wChat
->
setRelativePosition
(
ResizeWin
(
wInfos
->
getRelativePosition
().
LowerRightCorner
.
X
+
6
,
615
,
1020
,
640
,
true
));
wChat
->
setRelativePosition
(
recti
(
wInfos
->
getRelativePosition
().
LowerRightCorner
.
X
+
6
,
window_size
.
Height
-
25
,
window_size
.
Width
,
window_size
.
Height
));
ebChatInput
->
setRelativePosition
(
recti
(
3
,
2
,
window_size
.
Width
-
wChat
->
getRelativePosition
().
UpperLeftCorner
.
X
-
6
,
22
));
ebChatInput
->
setRelativePosition
(
recti
(
3
,
2
,
window_size
.
Width
-
wChat
->
getRelativePosition
().
UpperLeftCorner
.
X
-
6
,
22
));
btnLeaveGame
->
setRelativePosition
(
Resize
(
205
,
5
,
295
,
80
));
btnLeaveGame
->
setRelativePosition
(
Resize
(
205
,
5
,
295
,
80
));
...
@@ -2092,19 +2108,13 @@ position2di Game::ResizeReverse(s32 x, s32 y) {
...
@@ -2092,19 +2108,13 @@ position2di Game::ResizeReverse(s32 x, s32 y) {
y
=
y
/
yScale
;
y
=
y
/
yScale
;
return
position2di
(
x
,
y
);
return
position2di
(
x
,
y
);
}
}
recti
Game
::
ResizeWin
(
s32
x
,
s32
y
,
s32
x2
,
s32
y2
,
bool
chat
)
{
recti
Game
::
ResizeWin
(
s32
x
,
s32
y
,
s32
x2
,
s32
y2
)
{
s32
sx
=
x2
-
x
;
s32
w
=
x2
-
x
;
s32
sy
=
y2
-
y
;
s32
h
=
y2
-
y
;
if
(
chat
)
{
x
=
(
x
+
w
/
2
)
*
xScale
-
w
/
2
;
y
=
window_size
.
Height
-
sy
;
y
=
(
y
+
h
/
2
)
*
yScale
-
h
/
2
;
x2
=
window_size
.
Width
;
x2
=
w
+
x
;
y2
=
y
+
sy
;
y2
=
h
+
y
;
return
recti
(
x
,
y
,
x2
,
y2
);
}
x
=
(
x
+
sx
/
2
)
*
xScale
-
sx
/
2
;
y
=
(
y
+
sy
/
2
)
*
yScale
-
sy
/
2
;
x2
=
sx
+
x
;
y2
=
sy
+
y
;
return
recti
(
x
,
y
,
x2
,
y2
);
return
recti
(
x
,
y
,
x2
,
y2
);
}
}
recti
Game
::
ResizePhaseHint
(
s32
x
,
s32
y
,
s32
x2
,
s32
y2
,
s32
width
)
{
recti
Game
::
ResizePhaseHint
(
s32
x
,
s32
y
,
s32
x2
,
s32
y2
,
s32
width
)
{
...
@@ -2114,17 +2124,15 @@ recti Game::ResizePhaseHint(s32 x, s32 y, s32 x2, s32 y2, s32 width) {
...
@@ -2114,17 +2124,15 @@ recti Game::ResizePhaseHint(s32 x, s32 y, s32 x2, s32 y2, s32 width) {
y2
=
y2
*
yScale
;
y2
=
y2
*
yScale
;
return
recti
(
x
,
y
,
x2
,
y2
);
return
recti
(
x
,
y
,
x2
,
y2
);
}
}
recti
Game
::
ResizeCard
(
s32
x
,
s32
y
,
s32
x2
,
s32
y2
)
{
recti
Game
::
ResizeCard
ImgWin
(
s32
x
,
s32
y
,
s32
mx
,
s32
my
)
{
float
mul
=
xScale
;
float
mul
=
xScale
;
if
(
xScale
>
yScale
)
if
(
xScale
>
yScale
)
mul
=
yScale
;
mul
=
yScale
;
s32
sx
=
CARD_IMG_WIDTH
*
mul
+
x2
*
xScale
;
s32
w
=
CARD_IMG_WIDTH
*
mul
+
mx
*
xScale
;
s32
sy
=
CARD_IMG_HEIGHT
*
mul
+
y2
*
yScale
;
s32
h
=
CARD_IMG_HEIGHT
*
mul
+
my
*
yScale
;
x
=
x
*
xScale
;
x
=
x
*
xScale
;
y
=
y
*
yScale
;
y
=
y
*
yScale
;
x2
=
sx
+
x
;
return
recti
(
x
,
y
,
x
+
w
,
y
+
h
);
y2
=
sy
+
y
;
return
recti
(
x
,
y
,
x2
,
y2
);
}
}
recti
Game
::
ResizeCardHint
(
s32
x
,
s32
y
,
s32
x2
,
s32
y2
)
{
recti
Game
::
ResizeCardHint
(
s32
x
,
s32
y
,
s32
x2
,
s32
y2
)
{
return
ResizeCardMid
(
x
,
y
,
x2
,
y2
,
(
x
+
x2
)
*
0.5
,
(
y
+
y2
)
*
0.5
);
return
ResizeCardMid
(
x
,
y
,
x2
,
y2
,
(
x
+
x2
)
*
0.5
,
(
y
+
y2
)
*
0.5
);
...
...
gframe/game.h
View file @
c9264cdc
...
@@ -199,8 +199,8 @@ public:
...
@@ -199,8 +199,8 @@ public:
position2di
Resize
(
s32
x
,
s32
y
);
position2di
Resize
(
s32
x
,
s32
y
);
position2di
ResizeReverse
(
s32
x
,
s32
y
);
position2di
ResizeReverse
(
s32
x
,
s32
y
);
recti
ResizePhaseHint
(
s32
x
,
s32
y
,
s32
x2
,
s32
y2
,
s32
width
);
recti
ResizePhaseHint
(
s32
x
,
s32
y
,
s32
x2
,
s32
y2
,
s32
width
);
recti
ResizeWin
(
s32
x
,
s32
y
,
s32
x2
,
s32
y2
,
bool
chat
=
false
);
recti
ResizeWin
(
s32
x
,
s32
y
,
s32
x2
,
s32
y2
);
recti
ResizeCard
(
s32
x
,
s32
y
,
s32
x2
,
s32
y2
);
recti
ResizeCard
ImgWin
(
s32
x
,
s32
y
,
s32
mx
,
s32
my
);
recti
ResizeCardHint
(
s32
x
,
s32
y
,
s32
x2
,
s32
y2
);
recti
ResizeCardHint
(
s32
x
,
s32
y
,
s32
x2
,
s32
y2
);
position2di
ResizeCardHint
(
s32
x
,
s32
y
);
position2di
ResizeCardHint
(
s32
x
,
s32
y
);
recti
ResizeCardMid
(
s32
x
,
s32
y
,
s32
x2
,
s32
y2
,
s32
midx
,
s32
midy
);
recti
ResizeCardMid
(
s32
x
,
s32
y
,
s32
x2
,
s32
y2
,
s32
midx
,
s32
midy
);
...
...
gframe/myfilesystem.h
View file @
c9264cdc
...
@@ -8,6 +8,8 @@
...
@@ -8,6 +8,8 @@
#ifndef _WIN32
#ifndef _WIN32
#include <dirent.h>
#include <dirent.h>
#include <sys/stat.h>
#include <sys/stat.h>
#include <vector>
#include <algorithm>
#endif
#endif
#ifdef _WIN32
#ifdef _WIN32
...
@@ -109,23 +111,58 @@ public:
...
@@ -109,23 +111,58 @@ public:
return
MakeDir
(
dir
);
return
MakeDir
(
dir
);
}
}
#ifndef YGOPRO_SERVER_MODE
struct
file_unit
{
std
::
string
filename
;
bool
is_dir
;
};
#endif
static
void
TraversalDir
(
const
char
*
path
,
const
std
::
function
<
void
(
const
char
*
,
bool
)
>&
cb
)
{
static
void
TraversalDir
(
const
char
*
path
,
const
std
::
function
<
void
(
const
char
*
,
bool
)
>&
cb
)
{
DIR
*
dir
=
nullptr
;
DIR
*
dir
=
nullptr
;
struct
dirent
*
dirp
=
nullptr
;
struct
dirent
*
dirp
=
nullptr
;
if
((
dir
=
opendir
(
path
))
==
nullptr
)
if
((
dir
=
opendir
(
path
))
==
nullptr
)
return
;
return
;
struct
stat
fileStat
;
struct
stat
fileStat
;
while
((
dirp
=
readdir
(
dir
))
!=
nullptr
)
{
#ifndef YGOPRO_SERVER_MODE
std
::
vector
<
file_unit
>
file_list
;
#endif
while
((
dirp
=
readdir
(
dir
))
!=
nullptr
)
{
#ifndef YGOPRO_SERVER_MODE
file_unit
funit
;
#endif
char
fname
[
1024
];
char
fname
[
1024
];
strcpy
(
fname
,
path
);
strcpy
(
fname
,
path
);
strcat
(
fname
,
"/"
);
strcat
(
fname
,
"/"
);
strcat
(
fname
,
dirp
->
d_name
);
strcat
(
fname
,
dirp
->
d_name
);
stat
(
fname
,
&
fileStat
);
stat
(
fname
,
&
fileStat
);
#ifdef YGOPRO_SERVER_MODE
cb
(
dirp
->
d_name
,
S_ISDIR
(
fileStat
.
st_mode
));
cb
(
dirp
->
d_name
,
S_ISDIR
(
fileStat
.
st_mode
));
#else
funit
.
filename
=
std
::
string
(
dirp
->
d_name
);
funit
.
is_dir
=
S_ISDIR
(
fileStat
.
st_mode
);
file_list
.
push_back
(
funit
);
#endif
}
}
closedir
(
dir
);
closedir
(
dir
);
#ifndef YGOPRO_SERVER_MODE
std
::
sort
(
file_list
.
begin
(),
file_list
.
end
(),
TraversalDirSort
);
for
(
file_unit
funit
:
file_list
)
cb
(
funit
.
filename
.
c_str
(),
funit
.
is_dir
);
#endif
}
}
#ifndef YGOPRO_SERVER_MODE
static
bool
TraversalDirSort
(
file_unit
file1
,
file_unit
file2
)
{
if
(
file1
.
is_dir
!=
file2
.
is_dir
)
{
return
file1
.
is_dir
;
}
else
{
return
file1
.
filename
<
file2
.
filename
;
}
}
#endif
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
)
{
char
path
[
1024
];
char
path
[
1024
];
BufferIO
::
EncodeUTF8
(
wpath
,
path
);
BufferIO
::
EncodeUTF8
(
wpath
,
path
);
...
...
lflist.conf
View file @
c9264cdc
#[2019.1][2018.10][2018.12 TCG][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][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]
#[2019.1][2018.10][201
9.1 TCG][201
8.12 TCG][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][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]
!
2019
.
1
!
2019
.
1
#forbidden
#forbidden
...
@@ -340,6 +340,191 @@
...
@@ -340,6 +340,191 @@
35125879
2
--真竜皇の復活
35125879
2
--真竜皇の復活
83555666
2
--破壊輪
83555666
2
--破壊輪
!
2019
.
1
TCG
#Forbidden TCG
53804307
0
--
Blaster
,
Dragon
Ruler
of
Infernos
MAIN
DECK
MONSTERS
34124316
0
--
Cyber
Jar
8903700
0
--
Djinn
Releaser
of
Rituals
78706415
0
--
Fiber
Jar
93369354
0
--
Fishborg
Blaster
34206604
0
--
Magical
Scientist
31178212
0
--
Majespecter
Unicorn
-
Kirin
21593977
0
--
Makyura
the
Destructor
96782886
0
--
Mind
Master
79106360
0
--
Morphing
Jar
#2
7563579
0
--
Performage
PlushFire
17330916
0
--
Performapal
Monkeyboard
90411554
0
--
Redox
,
Dragon
Ruler
of
Boulders
20663556
0
--
Substitoad
89399912
0
--
Tempest
,
Dragon
Ruler
of
Storms
88071625
0
--
The
Tyrant
Neptune
26400609
0
--
Tidal
,
Dragon
Ruler
of
Waterfalls
33184167
0
--
Tribe
-
Infecting
Virus
44910027
0
--
Victory
Dragon
30539496
0
--
True
King
Lithosagym
,
the
Disaster
3078576
0
--
Yata
-
Garasu
9929398
0
--
Blackwing
-
Gofu
the
Vague
Shadow
15341821
0
--
Dandylion
49684352
0
--
Double
Iris
Magician
40318957
0
--
Performapal
Skullcrobat
Joker
57421866
0
--
Level
Eater
23434538
0
--
Maxx
"C"
76794549
0
--
Astrograph
Sorcerer
21377582
0
--
Master
Peace
,
The
True
Dracoslaying
King
23558733
0
--
Phoenixian
Cluster
Amaryllis
5592689
0
--
Samsara
Lotus
75732622
0
--
Grinder
Golem
55623480
0
--
Fairy
Tail
–
Snow
17412721
0
--
Elder
Entity
Norden
EXTRA
DECK
MONSTERS
43387895
0
--
Supreme
King
Dragon
Starving
Venom
65536818
0
--
Denglong
,
First
of
the
Yang
Zing
25862681
0
--
Ancient
Fairy
Dragon
34086406
0
--
Lavalval
Chain
54719828
0
--
Number
16
:
Shock
Master
18326736
0
--
Tellarknight
Ptolomaeus
81122844
0
--
Wind
-
Up
Carrier
Zenmaity
581014
0
--
Daigusto
Emeral
48905153
0
--
Zoodiac
Drident
85115440
0
--
Zoodiac
Broadbull
63504681
0
--
Number
86
:
Heroic
Champion
–
Rhongomyniad
10389142
0
--
Number
42
:
Galaxy
Tomahawk
39064822
0
--
Knightmare
Goblin
4423206
0
--
M
-
X
-
Saber
Invoker
5043010
0
--
Firewall
Dragon
22593417
0
--
Topologic
Gumblar
Dragon
69243953
0
--
Butterfly
Dagger
-
Elma
SPELLS
CARDS
57953380
0
--
Card
of
Safe
Return
4031928
0
--
Change
of
Heart
67616300
0
--
Chicken
Game
60682203
0
--
Cold
Wave
17375316
0
--
Confiscation
44763025
0
--
Deliquent
Duo
23557835
0
--
Dimension
Fusion
42703248
0
--
Giant
Trunade
79571449
0
--
Graceful
Charity
18144507
0
--
Harpie
'
s
Feather
Duster
18144506
0
--
Harpie
'
s
Feather
Duster
35059553
0
--
Kaiser
Colloseum
19613556
0
--
Heavy
Storm
85602018
0
--
Last
Will
46411259
0
--
Metamorphosis
74191942
0
--
Painful
Choice
67169062
0
--
Pot
of
Avarice
55144522
0
--
Pot
of
greed
34906152
0
--
Mass
Driver
41482598
0
--
Mirage
of
Nightmare
70828912
0
--
Premature
Burial
45986603
0
--
Snatch
Steal
46448938
0
--
Spellbook
of
Judgement
27770341
0
--
Super
Rejuvenation
42829885
0
--
The
Forceful
Sentry
11110587
0
--
That
Grass
Looks
Greener
94220427
0
--
Rank
-
Up
-
Magic
Argent
Chaos
Force
54447022
0
--
Soul
Charge
28566710
0
--
Last
Turn
TRAPS
CARDS
27174286
0
--
Return
from
the
Different
Dimension
93016201
0
--
Royal
Oppression
57585212
0
--
Self
-
Destruct
Button
3280747
0
--
Sixth
Sense
35316708
0
--
Time
Seal
64697231
0
--
Trap
Dustshot
80604091
0
--
Ultimate
Offering
80604092
0
--
Ultimate
Offering
5851097
0
--
Vanity
'
s
Emptiness
#Limited TCG
7902349
1
--
Left
Arm
of
the
forbidden
one
MAIN
DECK
MONSTERS
44519536
1
--
Left
Leg
of
the
forbidden
one
70903634
1
--
Right
Arm
of
the
forbidden
one
8124921
1
--
Right
Leg
of
the
forbidden
one
65518099
1
--
Qliporth
Scout
33396948
1
--
Exxodia
the
Forbidden
One
65192027
1
--
Dark
Armed
Dragon
78868119
1
--
Deep
Sea
Diva
64034255
1
--
Genex
Ally
birdman
20758643
1
--
Graff
,
Malembrance
of
the
Burning
Abyss
99177923
1
--
Infernity
Archfiend
68184115
1
--
Inzektor
DragonFly
16226786
1
--
Night
Assailant
88264978
1
--
Red
-
eyes
Darkness
Metal
Dragon
61740673
1
--
Imperial
Order
10802915
1
--
Tour
Guide
From
the
Underworld
81275020
1
--
Speedroid
Terrortop
57143342
1
--
Cir
,
Malebranche
of
the
Burning
Abyss
96570609
1
--
Ether
the
Heavenly
monarch
38572779
1
--
Miscellaneousaurus
78872731
1
--
Zoodiac
Ratpier
4474060
1
--
SPYRAL
Gear
-
Drone
78080961
1
--
SPYRAL
Quik
-
Fix
68819554
1
--
Performage
Damage
Juggler
58984738
1
--
Dinomight
Knight
,
the
True
Dracofighter
45222299
1
--
Evigishki
Gustkraken
11877465
1
--
Evigishki
Mind
Augus
90307777
1
--
Shurit
,
Strategist
of
the
Nekroz
89463537
1
--
Nekroz
of
Unicore
40044918
1
--
Elemental
Hero
Stratos
33508719
1
--
Morphing
Jar
28985331
1
--
Armageddon
Knight
14536035
1
--
Dark
Grepher
69015963
1
--
Cyber
Stein
82301904
1
--
Chaos
Emperor
Dragon
-
Envoy
of
the
End
18239909
1
--
Ignister
Prominence
,
the
Blasting
Dracoslayer
EXTRA
DECK
MONSTERS
20366274
1
--
El
Shaddoll
Construct
48063985
1
--
Ritual
Beast
Ulti
-
Cannahawk
39512984
1
--
Gem
-
Knight
Master
Diamond
70583986
1
--
Dewloren
,
Tiger
King
of
the
Ice
Barrier
52687916
1
--
Trishula
,
Dragon
of
the
Ice
Barrier
27552504
1
--
Beatrice
,
Lady
of
Eternal
24094258
1
--
Heavymetalfoes
Electrumite
74586817
1
--
Psy
-
Framelord
Omega
14087893
1
--
Book
of
Moon
SPELLS
CARDS
81674782
1
--
Dimensional
Fissure
95308449
1
--
Final
Countdown
81439173
1
--
Foolish
Burial
66957584
1
--
Infernity
Launcher
43040603
1
--
Monster
Gate
33782437
1
--
One
Day
of
Peace
2295440
1
--
One
for
One
12580477
1
--
Raigeki
53129443
1
--
Dark
Hole
32807846
1
--
Reinforcement
of
the
Army
74845897
1
--
Rekindling
72405967
1
--
Royal
Tribute
45305419
1
--
Symbol
of
Heritage
14733538
1
--
Draco
Face
-
off
73468603
1
--
Set
Rotation
58577036
1
--
Reasoning
27970830
1
--
Gateway
of
the
Six
7394770
1
--
Brilliant
Fusion
70368879
1
--
Upstart
Goblin
83764718
1
--
Monster
Reborn
83764719
1
--
Monster
Reborn
71344451
1
--
Slash
Draw
75500286
1
--
Gold
Sarcophagus
67723438
1
--
Emergency
Teleporter
22842126
1
--
Phanteism
of
the
Monarchs
15854426
1
--
Divine
Wind
of
the
Mist
Valley
54631665
1
--
SPYRAL
Resort
71650854
1
--
Magical
Mid
-
Breaker
Field
91623717
1
--
Chain
Strike
8949584
1
--
A
Hero
Lives
72892473
1
--
Card
Destruction
52340444
1
--
Sky
Striker
Mecha
-
Hornet
Drones
48130397
1
--
Super
Polymerization
73915051
1
--
Scapegoat
32723153
1
--
Magical
Explosion
--
TRAP
CARDS
35125879
1
--
True
King
'
s
Return
82732705
1
--
Skill
Drain
73599290
1
--
Soul
Drain
30241314
1
--
Macro
Cosmos
17078030
1
--
Wall
of
Revealing
light
84749824
1
--
Solemn
Warning
41420027
1
--
Solemn
Judgement
#Semi limited TCG
92746535
2
--
Luster
Pendulum
,
the
Dracoslayer
28297833
2
--
Necroface
9411399
2
--
Destiny
HERO
-
Malicious
73628505
2
--
Terraforming
!
2018
.
12
TCG
!
2018
.
12
TCG
#forbidden
#forbidden
05043010
0
--ファイアウォール・ドラゴン
05043010
0
--ファイアウォール・ドラゴン
...
...
ocgcore
@
e1b32399
Subproject commit
bbc8e973e3d206d51d1be3ddd201cf071e517ba
1
Subproject commit
e1b3239967a34da9f7bcd42a62778e785fbaf32
1
script
@
2ce1259b
Subproject commit
d38fcb65d5b94661b84fc469415cc600a06a2ba0
Subproject commit
2ce1259b08b57f15f636e99a6a02172cbf0dffd3
strings.conf
View file @
c9264cdc
...
@@ -858,7 +858,7 @@
...
@@ -858,7 +858,7 @@
!
setname
0
xd4
伯吉斯异兽 バージェストマ
!
setname
0
xd4
伯吉斯异兽 バージェストマ
!
setname
0
xd5
但丁 ダンテ
!
setname
0
xd5
但丁 ダンテ
!
setname
0
xd6
破坏剑 破壊剣
!
setname
0
xd6
破坏剑 破壊剣
!
setname
0
xd7
巴斯达·布雷达
バスター・ブレイダー
!
setname
0
xd7
破坏之剑士
バスター・ブレイダー
!
setname
0
xd8
雾动机龙 ダイナミスト
!
setname
0
xd8
雾动机龙 ダイナミスト
!
setname
0
xd9
不知火
!
setname
0
xd9
不知火
!
setname
0
x10d9
妖刀-不知火 妖刀-不知火
!
setname
0
x10d9
妖刀-不知火 妖刀-不知火
...
@@ -952,3 +952,4 @@
...
@@ -952,3 +952,4 @@
!
setname
0
x123
蔷薇龙 ローズ・ドラゴン
!
setname
0
x123
蔷薇龙 ローズ・ドラゴン
!
setname
0
x124
机械天使 機械天使
!
setname
0
x124
机械天使 機械天使
!
setname
0
x125
笑容 スマイル
!
setname
0
x125
笑容 スマイル
!
setname
0
x126
时间怪盗
Time
Thief
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