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
eb9bebcc
Commit
eb9bebcc
authored
Apr 12, 2018
by
nanahira
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'server' into 2pick
parents
a60e0a94
e97885f0
Changes
14
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
14 changed files
with
250 additions
and
185 deletions
+250
-185
.gitignore
.gitignore
+0
-1
.travis.yml
.travis.yml
+1
-8
appveyor.yml
appveyor.yml
+13
-65
cards.cdb
cards.cdb
+0
-0
gframe/deck_con.cpp
gframe/deck_con.cpp
+74
-39
gframe/deck_manager.cpp
gframe/deck_manager.cpp
+41
-0
gframe/deck_manager.h
gframe/deck_manager.h
+6
-0
gframe/drawing.cpp
gframe/drawing.cpp
+12
-12
gframe/duelclient.cpp
gframe/duelclient.cpp
+66
-58
gframe/event_handler.cpp
gframe/event_handler.cpp
+11
-0
gframe/game.cpp
gframe/game.cpp
+12
-1
gframe/game.h
gframe/game.h
+10
-0
gframe/image_manager.cpp
gframe/image_manager.cpp
+1
-1
strings.conf
strings.conf
+3
-0
No files found.
.gitignore
View file @
eb9bebcc
...
@@ -30,7 +30,6 @@
...
@@ -30,7 +30,6 @@
/Magic*
/Magic*
/pics
/pics
/Printer
/Printer
/script
/ygopro-*
/ygopro-*
/*-Cards
/*-Cards
...
...
.travis.yml
View file @
eb9bebcc
...
@@ -11,15 +11,8 @@ addons:
...
@@ -11,15 +11,8 @@ addons:
-
libsqlite3-dev
-
libsqlite3-dev
before_install
:
before_install
:
-
git submodule update --init --recursive
-
git submodule update --init --recursive
-
wget 'http://www.lua.org/ftp/lua-5.3.4.tar.gz'
-
tar zxf lua-5.3.4.tar.gz
-
cd lua-5.3.4
-
make linux test
-
sudo make install
-
cd ..
-
wget -O - https://github.com/premake/premake-core/releases/download/v5.0.0-alpha12/premake-5.0.0-alpha12-linux.tar.gz | tar zfx -
-
wget -O - https://github.com/premake/premake-core/releases/download/v5.0.0-alpha12/premake-5.0.0-alpha12-linux.tar.gz | tar zfx -
-
wget -O - https://www.lua.org/ftp/lua-5.3.4.tar.gz | tar zfx -; cd lua-5.3.4; sudo make linux install; cd ..
script
:
script
:
-
./premake5 gmake
-
./premake5 gmake
-
cd build
-
cd build
...
...
appveyor.yml
View file @
eb9bebcc
version
:
'
{build}'
version
:
'
{build}'
skip_tags
:
true
install
:
install
:
-
git submodule update --init --recursive
-
git submodule update --init --recursive
...
@@ -25,9 +27,6 @@ install:
...
@@ -25,9 +27,6 @@ install:
# let premake happy
# let premake happy
-
xcopy /E premake\* .
-
xcopy /E premake\* .
# patch lua
# - patch -p0 < lua\lua.patch
# premake
# premake
-
premake5 vs2015
-
premake5 vs2015
...
@@ -40,72 +39,23 @@ build:
...
@@ -40,72 +39,23 @@ build:
after_build
:
after_build
:
-
ps
:
move bin\release\ygopro.exe .
-
ps
:
move bin\release\ygopro.exe .
-
git clone https://github.com/Smile-DK/ygopro-svrelease
-
bash -c "curl --retry 5 --connect-timeout 30 --location --remote-header-name --remote-name https://github.com/purerosefallen/ygopro-server/archive/master.zip ; exit 0"
-
7z x ygopro-server-master.zip
-
mv -f ygopro-server-master ygopro-server
-
bash -c "curl --retry 5 --connect-timeout 30 --location --remote-header-name --remote-name https://nodejs.org/dist/v9.1.0/node-v9.1.0-win-x64.zip ; exit 0"
-
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"
-
bash -c "curl --retry 5 --connect-timeout 30 --location --remote-header-name --remote-name https://github.com/purerosefallen/windbot/archive/master.zip ; exit 0"
-
7z x windbot-master.zip
-
cd windbot-master
-
msbuild /property:Configuration=Release /property:OutDir=../ygopro-server/windbot
-
cd ../ygopro-server
-
mkdir ygopro
-
cd ygopro
-
mkdir replay
-
mv -f ../../gframe .
-
mv -f ../../ocgcore .
-
mv -f ../../premake .
-
mv -f ../../event .
-
mv -f ../../lua .
-
mv -f ../../sqlite3 .
-
mv -f ../../script .
-
mv -f ../../cards.cdb .
-
mv -f ../../textures .
-
mv -f ../../premake4.lua .
-
mv -f ../../premake5.lua .
-
mv -f ../../lflist.conf .
-
mv -f ../../strings.conf .
-
mv -f ../../system.conf .
-
cp -rf ../../ygopro.exe .
-
mv -f ../../premake5.exe .
-
cd ..
-
mkdir redis
-
cd redis
-
cp -rf ../../Redis-x64-3.2.100.zip .
-
7z x Redis-x64-3.2.100.zip
-
rm -rf Redis-x64-3.2.100.zip
-
cd ..
-
cp -rf ygopro/cards.cdb windbot
-
cp -rf config_build config
-
cp -rf ../node-v9.1.0-win-x64.zip .
-
7z x node-v9.1.0-win-x64.zip
-
rm -rf node-v9.1.0-win-x64.zip
-
cp -rf node-v9.1.0-win-x64/* .
-
rm -rf node-v9.1.0-win-x64
-
npm install
-
npm install pm2@latest -g
-
npm install ws
-
npm install redis
-
7z a -mx9 -xr!.git* ../ygopro-server.7z ./*
-
cd ..
test
:
off
test
:
off
artifacts
:
artifacts
:
-
path
:
ygopro.exe
-
path
:
ygopro.exe
name
:
ygopro
name
:
ygopro server mode
-
path
:
ygopro-server.7z
name
:
ygopro-server
deploy
:
release
:
win
description
:
'
Automatic
build
commit
$(APPVEYOR_REPO_COMMIT)
$(APPVEYOR_REPO_COMMIT_TIMESTAMP)'
provider
:
GitHub
force_update
:
true
auth_token
:
secure
:
EQ9miMjfX/QAoBvgc6D+JLmHatLyxOEKZ/uo68QijxWW5Gp4MzB/pOH9+u2GlDVO
on
:
branch
:
server
cache
:
cache
:
-
premake-5.0.0-alpha12-windows.zip
-
premake-5.0.0-alpha12-windows.zip
...
@@ -114,5 +64,3 @@ cache:
...
@@ -114,5 +64,3 @@ cache:
-
irrlicht-1.8.4.zip
-
irrlicht-1.8.4.zip
-
lua-5.3.4.tar.gz
-
lua-5.3.4.tar.gz
-
sqlite-amalgamation-3210000.zip
-
sqlite-amalgamation-3210000.zip
-
Redis-x64-3.2.100.zip
cards.cdb
View file @
eb9bebcc
No preview for this file type
gframe/deck_con.cpp
View file @
eb9bebcc
...
@@ -177,6 +177,46 @@ bool DeckBuilder::OnEvent(const irr::SEvent& event) {
...
@@ -177,6 +177,46 @@ bool DeckBuilder::OnEvent(const irr::SEvent& event) {
}
}
break
;
break
;
}
}
case
BUTTON_RENAME_DECK
:
{
int
sel
=
mainGame
->
cbDBDecks
->
getSelected
();
if
(
sel
==
-
1
)
break
;
mainGame
->
gMutex
.
Lock
();
mainGame
->
wRenameDeck
->
setText
(
dataManager
.
GetSysString
(
1367
));
mainGame
->
ebREName
->
setText
(
mainGame
->
cbDBDecks
->
getItem
(
sel
));
mainGame
->
PopupElement
(
mainGame
->
wRenameDeck
);
mainGame
->
gMutex
.
Unlock
();
prev_operation
=
id
;
prev_sel
=
sel
;
break
;
}
case
BUTTON_RENAME_DECK_SAVE
:
{
mainGame
->
HideElement
(
mainGame
->
wRenameDeck
);
if
(
prev_operation
==
BUTTON_RENAME_DECK
)
{
wchar_t
newname
[
256
];
BufferIO
::
CopyWStr
(
mainGame
->
ebREName
->
getText
(),
newname
,
256
);
if
(
mywcsncasecmp
(
newname
+
wcslen
(
newname
)
-
4
,
L""
,
4
))
{
myswprintf
(
newname
,
L"%ls"
,
mainGame
->
ebREName
->
getText
());
}
if
(
DeckManager
::
RenameDeck
(
mainGame
->
cbDBDecks
->
getItem
(
prev_sel
),
newname
))
{
mainGame
->
RefreshDeck
(
mainGame
->
cbDBDecks
);
mainGame
->
cbDBDecks
->
setSelected
(
prev_sel
);
mainGame
->
stACMessage
->
setText
(
dataManager
.
GetSysString
(
1366
));
mainGame
->
PopupElement
(
mainGame
->
wACMessage
,
20
);
}
else
{
mainGame
->
env
->
addMessageBox
(
L""
,
dataManager
.
GetSysString
(
1365
));
}
}
prev_operation
=
0
;
prev_sel
=
-
1
;
break
;
}
case
BUTTON_RENAME_DECK_CANCEL
:
{
mainGame
->
HideElement
(
mainGame
->
wRenameDeck
);
prev_operation
=
0
;
prev_sel
=
-
1
;
break
;
}
case
BUTTON_DELETE_DECK
:
{
case
BUTTON_DELETE_DECK
:
{
int
sel
=
mainGame
->
cbDBDecks
->
getSelected
();
int
sel
=
mainGame
->
cbDBDecks
->
getSelected
();
if
(
sel
==
-
1
)
if
(
sel
==
-
1
)
...
@@ -777,7 +817,7 @@ void DeckBuilder::FilterCards() {
...
@@ -777,7 +817,7 @@ void DeckBuilder::FilterCards() {
results
.
clear
();
results
.
clear
();
const
wchar_t
*
pstr
=
mainGame
->
ebCardName
->
getText
();
const
wchar_t
*
pstr
=
mainGame
->
ebCardName
->
getText
();
int
trycode
=
BufferIO
::
GetVal
(
pstr
);
int
trycode
=
BufferIO
::
GetVal
(
pstr
);
if
(
dataManager
.
GetData
(
trycode
,
0
))
{
if
(
dataManager
.
GetData
(
trycode
,
0
))
{
auto
ptr
=
dataManager
.
GetCodePointer
(
trycode
);
// verified by GetData()
auto
ptr
=
dataManager
.
GetCodePointer
(
trycode
);
// verified by GetData()
results
.
push_back
(
ptr
);
results
.
push_back
(
ptr
);
mainGame
->
scrFilter
->
setVisible
(
false
);
mainGame
->
scrFilter
->
setVisible
(
false
);
...
@@ -791,16 +831,14 @@ void DeckBuilder::FilterCards() {
...
@@ -791,16 +831,14 @@ void DeckBuilder::FilterCards() {
size_t
element_start
=
0
;
size_t
element_start
=
0
;
while
(
1
)
{
while
(
1
)
{
size_t
element_end
=
str
.
find_first_of
(
L' '
,
element_start
);
size_t
element_end
=
str
.
find_first_of
(
L' '
,
element_start
);
if
(
element_end
==
std
::
wstring
::
npos
)
{
if
(
element_end
==
std
::
wstring
::
npos
)
break
;
break
;
}
size_t
length
=
element_end
-
element_start
;
size_t
length
=
element_end
-
element_start
;
if
(
length
>
0
)
{
if
(
length
>
0
)
{
query_elements
.
push_back
(
str
.
substr
(
element_start
,
length
));
query_elements
.
push_back
(
str
.
substr
(
element_start
,
length
));
element_start
=
element_end
+
1
;
element_start
=
element_end
+
1
;
}
else
{
}
else
element_start
++
;
element_start
++
;
}
}
}
query_elements
.
push_back
(
str
.
substr
(
element_start
));
query_elements
.
push_back
(
str
.
substr
(
element_start
));
std
::
unordered_map
<
std
::
wstring
,
unsigned
int
>
set_code_map
;
std
::
unordered_map
<
std
::
wstring
,
unsigned
int
>
set_code_map
;
...
@@ -817,73 +855,72 @@ void DeckBuilder::FilterCards() {
...
@@ -817,73 +855,72 @@ void DeckBuilder::FilterCards() {
query_elements
.
erase
(
*
elements_track_iterator
);
query_elements
.
erase
(
*
elements_track_iterator
);
}
}
auto
strpointer
=
dataManager
.
_strings
.
begin
();
auto
strpointer
=
dataManager
.
_strings
.
begin
();
for
(
code_pointer
ptr
=
dataManager
.
_datas
.
begin
();
ptr
!=
dataManager
.
_datas
.
end
();
++
ptr
,
++
strpointer
)
{
for
(
code_pointer
ptr
=
dataManager
.
_datas
.
begin
();
ptr
!=
dataManager
.
_datas
.
end
();
++
ptr
,
++
strpointer
)
{
const
CardDataC
&
data
=
ptr
->
second
;
const
CardDataC
&
data
=
ptr
->
second
;
const
CardString
&
text
=
strpointer
->
second
;
const
CardString
&
text
=
strpointer
->
second
;
if
(
data
.
type
&
TYPE_TOKEN
)
if
(
data
.
type
&
TYPE_TOKEN
)
continue
;
continue
;
switch
(
filter_type
)
{
switch
(
filter_type
)
{
case
1
:
{
case
1
:
{
if
(
!
(
data
.
type
&
TYPE_MONSTER
)
||
(
data
.
type
&
filter_type2
)
!=
filter_type2
)
if
(
!
(
data
.
type
&
TYPE_MONSTER
)
||
(
data
.
type
&
filter_type2
)
!=
filter_type2
)
continue
;
continue
;
if
(
filter_race
&&
data
.
race
!=
filter_race
)
if
(
filter_race
&&
data
.
race
!=
filter_race
)
continue
;
continue
;
if
(
filter_attrib
&&
data
.
attribute
!=
filter_attrib
)
if
(
filter_attrib
&&
data
.
attribute
!=
filter_attrib
)
continue
;
continue
;
if
(
filter_atktype
)
{
if
(
filter_atktype
)
{
if
((
filter_atktype
==
1
&&
data
.
attack
!=
filter_atk
)
||
(
filter_atktype
==
2
&&
data
.
attack
<
filter_atk
)
if
((
filter_atktype
==
1
&&
data
.
attack
!=
filter_atk
)
||
(
filter_atktype
==
2
&&
data
.
attack
<
filter_atk
)
||
(
filter_atktype
==
3
&&
data
.
attack
<=
filter_atk
)
||
(
filter_atktype
==
4
&&
(
data
.
attack
>
filter_atk
||
data
.
attack
<
0
))
||
(
filter_atktype
==
3
&&
data
.
attack
<=
filter_atk
)
||
(
filter_atktype
==
4
&&
(
data
.
attack
>
filter_atk
||
data
.
attack
<
0
))
||
(
filter_atktype
==
5
&&
(
data
.
attack
>=
filter_atk
||
data
.
attack
<
0
))
||
(
filter_atktype
==
6
&&
data
.
attack
!=
-
2
))
||
(
filter_atktype
==
5
&&
(
data
.
attack
>=
filter_atk
||
data
.
attack
<
0
))
||
(
filter_atktype
==
6
&&
data
.
attack
!=
-
2
))
continue
;
continue
;
}
}
if
(
filter_deftype
)
{
if
(
filter_deftype
)
{
if
((
filter_deftype
==
1
&&
data
.
defense
!=
filter_def
)
||
(
filter_deftype
==
2
&&
data
.
defense
<
filter_def
)
if
((
filter_deftype
==
1
&&
data
.
defense
!=
filter_def
)
||
(
filter_deftype
==
2
&&
data
.
defense
<
filter_def
)
||
(
filter_deftype
==
3
&&
data
.
defense
<=
filter_def
)
||
(
filter_deftype
==
4
&&
(
data
.
defense
>
filter_def
||
data
.
defense
<
0
))
||
(
filter_deftype
==
3
&&
data
.
defense
<=
filter_def
)
||
(
filter_deftype
==
4
&&
(
data
.
defense
>
filter_def
||
data
.
defense
<
0
))
||
(
filter_deftype
==
5
&&
(
data
.
defense
>=
filter_def
||
data
.
defense
<
0
))
||
(
filter_deftype
==
6
&&
data
.
defense
!=
-
2
)
||
(
filter_deftype
==
5
&&
(
data
.
defense
>=
filter_def
||
data
.
defense
<
0
))
||
(
filter_deftype
==
6
&&
data
.
defense
!=
-
2
)
||
(
data
.
type
&
TYPE_LINK
))
||
(
data
.
type
&
TYPE_LINK
))
continue
;
continue
;
}
}
if
(
filter_lvtype
)
{
if
(
filter_lvtype
)
{
if
((
filter_lvtype
==
1
&&
data
.
level
!=
filter_lv
)
||
(
filter_lvtype
==
2
&&
data
.
level
<
filter_lv
)
if
((
filter_lvtype
==
1
&&
data
.
level
!=
filter_lv
)
||
(
filter_lvtype
==
2
&&
data
.
level
<
filter_lv
)
||
(
filter_lvtype
==
3
&&
data
.
level
<=
filter_lv
)
||
(
filter_lvtype
==
4
&&
data
.
level
>
filter_lv
)
||
(
filter_lvtype
==
3
&&
data
.
level
<=
filter_lv
)
||
(
filter_lvtype
==
4
&&
data
.
level
>
filter_lv
)
||
(
filter_lvtype
==
5
&&
data
.
level
>=
filter_lv
)
||
filter_lvtype
==
6
)
||
(
filter_lvtype
==
5
&&
data
.
level
>=
filter_lv
)
||
filter_lvtype
==
6
)
continue
;
continue
;
}
}
if
(
filter_scltype
)
{
if
(
filter_scltype
)
{
if
((
filter_scltype
==
1
&&
data
.
lscale
!=
filter_scl
)
||
(
filter_scltype
==
2
&&
data
.
lscale
<
filter_scl
)
if
((
filter_scltype
==
1
&&
data
.
lscale
!=
filter_scl
)
||
(
filter_scltype
==
2
&&
data
.
lscale
<
filter_scl
)
||
(
filter_scltype
==
3
&&
data
.
lscale
<=
filter_scl
)
||
(
filter_scltype
==
4
&&
(
data
.
lscale
>
filter_scl
||
data
.
lscale
==
0
))
||
(
filter_scltype
==
3
&&
data
.
lscale
<=
filter_scl
)
||
(
filter_scltype
==
4
&&
(
data
.
lscale
>
filter_scl
||
data
.
lscale
==
0
))
||
(
filter_scltype
==
5
&&
(
data
.
lscale
>=
filter_scl
||
data
.
lscale
==
0
))
||
filter_scltype
==
6
||
(
filter_scltype
==
5
&&
(
data
.
lscale
>=
filter_scl
||
data
.
lscale
==
0
))
||
filter_scltype
==
6
||
!
(
data
.
type
&
TYPE_PENDULUM
))
||
!
(
data
.
type
&
TYPE_PENDULUM
))
continue
;
continue
;
}
}
break
;
break
;
}
}
case
2
:
{
case
2
:
{
if
(
!
(
data
.
type
&
TYPE_SPELL
))
if
(
!
(
data
.
type
&
TYPE_SPELL
))
continue
;
continue
;
if
(
filter_type2
&&
data
.
type
!=
filter_type2
)
if
(
filter_type2
&&
data
.
type
!=
filter_type2
)
continue
;
continue
;
break
;
break
;
}
}
case
3
:
{
case
3
:
{
if
(
!
(
data
.
type
&
TYPE_TRAP
))
if
(
!
(
data
.
type
&
TYPE_TRAP
))
continue
;
continue
;
if
(
filter_type2
&&
data
.
type
!=
filter_type2
)
if
(
filter_type2
&&
data
.
type
!=
filter_type2
)
continue
;
continue
;
break
;
break
;
}
}
}
}
if
(
filter_effect
&&
!
(
data
.
category
&
filter_effect
))
if
(
filter_effect
&&
!
(
data
.
category
&
filter_effect
))
continue
;
continue
;
if
(
filter_marks
&&
(
data
.
link_marker
&
filter_marks
)
!=
filter_marks
)
if
(
filter_marks
&&
(
data
.
link_marker
&
filter_marks
)
!=
filter_marks
)
continue
;
continue
;
if
(
filter_lm
)
{
if
(
filter_lm
)
{
if
(
filter_lm
<=
3
&&
(
!
filterList
->
count
(
ptr
->
first
)
||
(
*
filterList
)[
ptr
->
first
]
!=
filter_lm
-
1
))
if
(
filter_lm
<=
3
&&
(
!
filterList
->
count
(
ptr
->
first
)
||
(
*
filterList
)[
ptr
->
first
]
!=
filter_lm
-
1
))
continue
;
continue
;
if
(
filter_lm
==
4
&&
data
.
ot
!=
1
)
if
(
filter_lm
==
4
&&
data
.
ot
!=
1
)
continue
;
continue
;
if
(
filter_lm
==
5
&&
data
.
ot
!=
2
)
if
(
filter_lm
==
5
&&
data
.
ot
!=
2
)
continue
;
continue
;
if
(
filter_lm
==
6
&&
data
.
ot
!=
3
)
if
(
filter_lm
==
6
&&
data
.
ot
!=
3
)
continue
;
continue
;
...
@@ -912,19 +949,17 @@ void DeckBuilder::FilterCards() {
...
@@ -912,19 +949,17 @@ void DeckBuilder::FilterCards() {
}
}
}
}
}
}
if
(
is_target
)
{
if
(
is_target
)
results
.
push_back
(
ptr
);
results
.
push_back
(
ptr
);
}
else
{
else
continue
;
continue
;
}
}
}
myswprintf
(
result_string
,
L"%d"
,
results
.
size
());
myswprintf
(
result_string
,
L"%d"
,
results
.
size
());
if
(
results
.
size
()
>
7
)
{
if
(
results
.
size
()
>
7
)
{
mainGame
->
scrFilter
->
setVisible
(
true
);
mainGame
->
scrFilter
->
setVisible
(
true
);
mainGame
->
scrFilter
->
setMax
(
results
.
size
()
-
7
);
mainGame
->
scrFilter
->
setMax
(
results
.
size
()
-
7
);
mainGame
->
scrFilter
->
setPos
(
0
);
mainGame
->
scrFilter
->
setPos
(
0
);
}
}
else
{
else
{
mainGame
->
scrFilter
->
setVisible
(
false
);
mainGame
->
scrFilter
->
setVisible
(
false
);
mainGame
->
scrFilter
->
setPos
(
0
);
mainGame
->
scrFilter
->
setPos
(
0
);
}
}
...
...
gframe/deck_manager.cpp
View file @
eb9bebcc
...
@@ -90,6 +90,23 @@ void DeckManager::LoadLFList() {
...
@@ -90,6 +90,23 @@ void DeckManager::LoadLFList() {
nolimit
.
content
=
new
std
::
unordered_map
<
int
,
int
>
;
nolimit
.
content
=
new
std
::
unordered_map
<
int
,
int
>
;
_lfList
.
push_back
(
nolimit
);
_lfList
.
push_back
(
nolimit
);
}
}
bool
DeckManager
::
RenameDeck
(
const
wchar_t
*
oldname
,
const
wchar_t
*
newname
)
{
wchar_t
oldfname
[
256
];
wchar_t
newfname
[
256
];
myswprintf
(
oldfname
,
L"./deck/%ls.ydk"
,
oldname
);
myswprintf
(
newfname
,
L"./deck/%ls.ydk"
,
newname
);
#ifdef WIN32
BOOL
result
=
MoveFileW
(
oldfname
,
newfname
);
return
!!
result
;
#else
char
oldfilefn
[
256
];
char
newfilefn
[
256
];
BufferIO
::
EncodeUTF8
(
oldfname
,
oldfilefn
);
BufferIO
::
EncodeUTF8
(
newfname
,
newfilefn
);
int
result
=
rename
(
oldfilefn
,
newfilefn
);
return
result
==
0
;
#endif
}
wchar_t
*
DeckManager
::
GetLFListName
(
int
lfhash
)
{
wchar_t
*
DeckManager
::
GetLFListName
(
int
lfhash
)
{
for
(
size_t
i
=
0
;
i
<
_lfList
.
size
();
++
i
)
{
for
(
size_t
i
=
0
;
i
<
_lfList
.
size
();
++
i
)
{
if
(
_lfList
[
i
].
hash
==
(
unsigned
int
)
lfhash
)
{
if
(
_lfList
[
i
].
hash
==
(
unsigned
int
)
lfhash
)
{
...
@@ -298,4 +315,28 @@ bool DeckManager::DeleteDeck(Deck& deck, const wchar_t* name) {
...
@@ -298,4 +315,28 @@ bool DeckManager::DeleteDeck(Deck& deck, const wchar_t* name) {
return
result
==
0
;
return
result
==
0
;
#endif
#endif
}
}
const
wchar_t
*
DeckManager
::
GetMainFormatString
()
{
myswprintf
(
DeckFormatBuffer
,
L"%d ( %d / %d / %d )"
,
deckManager
.
current_deck
.
main
.
size
(),
GetTypeCount
(
deckManager
.
current_deck
.
main
,
TYPE_MONSTER
),
GetTypeCount
(
deckManager
.
current_deck
.
main
,
TYPE_SPELL
),
GetTypeCount
(
deckManager
.
current_deck
.
main
,
TYPE_TRAP
));
wchar_t
*
result
=
DeckFormatBuffer
;
return
result
;
}
const
wchar_t
*
DeckManager
::
GetExtraFormatString
()
{
myswprintf
(
DeckFormatBuffer
,
L"%d ( %d / %d / %d / %d )"
,
deckManager
.
current_deck
.
extra
.
size
(),
GetTypeCount
(
deckManager
.
current_deck
.
extra
,
TYPE_FUSION
),
GetTypeCount
(
deckManager
.
current_deck
.
extra
,
TYPE_SYNCHRO
),
GetTypeCount
(
deckManager
.
current_deck
.
extra
,
TYPE_XYZ
),
GetTypeCount
(
deckManager
.
current_deck
.
extra
,
TYPE_LINK
));
wchar_t
*
result
=
DeckFormatBuffer
;
return
result
;
}
const
wchar_t
*
DeckManager
::
GetSideFormatString
()
{
myswprintf
(
DeckFormatBuffer
,
L"%d ( %d / %d / %d / %d )"
,
deckManager
.
current_deck
.
side
.
size
(),
GetTypeCount
(
deckManager
.
current_deck
.
side
,
TYPE_MONSTER
),
GetTypeCount
(
deckManager
.
current_deck
.
side
,
TYPE_SPELL
),
GetTypeCount
(
deckManager
.
current_deck
.
side
,
TYPE_TRAP
),
GetTypeCount
(
deckManager
.
current_deck
.
side
,
TYPE_FUSION
|
TYPE_SYNCHRO
|
TYPE_XYZ
|
TYPE_LINK
));
wchar_t
*
result
=
DeckFormatBuffer
;
return
result
;
}
int
DeckManager
::
GetTypeCount
(
std
::
vector
<
code_pointer
>
list
,
unsigned
int
ctype
)
{
int
res
=
0
;
for
(
size_t
i
=
0
;
i
<
list
.
size
();
++
i
)
{
code_pointer
cur
=
list
[
i
];
if
(
cur
->
second
.
type
&
ctype
)
res
++
;
}
return
res
;
}
}
}
gframe/deck_manager.h
View file @
eb9bebcc
...
@@ -44,6 +44,12 @@ public:
...
@@ -44,6 +44,12 @@ public:
bool
LoadDeck
(
const
wchar_t
*
file
);
bool
LoadDeck
(
const
wchar_t
*
file
);
bool
SaveDeck
(
Deck
&
deck
,
const
wchar_t
*
name
);
bool
SaveDeck
(
Deck
&
deck
,
const
wchar_t
*
name
);
bool
DeleteDeck
(
Deck
&
deck
,
const
wchar_t
*
name
);
bool
DeleteDeck
(
Deck
&
deck
,
const
wchar_t
*
name
);
static
bool
RenameDeck
(
const
wchar_t
*
oldname
,
const
wchar_t
*
newname
);
wchar_t
DeckFormatBuffer
[
128
];
const
wchar_t
*
GetMainFormatString
();
const
wchar_t
*
GetSideFormatString
();
const
wchar_t
*
GetExtraFormatString
();
int
GetTypeCount
(
std
::
vector
<
code_pointer
>
list
,
unsigned
int
ctype
);
};
};
extern
DeckManager
deckManager
;
extern
DeckManager
deckManager
;
...
...
gframe/drawing.cpp
View file @
eb9bebcc
...
@@ -1111,10 +1111,10 @@ void Game::DrawThumb(code_pointer cp, position2di pos, std::unordered_map<int, i
...
@@ -1111,10 +1111,10 @@ void Game::DrawThumb(code_pointer cp, position2di pos, std::unordered_map<int, i
void
Game
::
DrawDeckBd
()
{
void
Game
::
DrawDeckBd
()
{
wchar_t
textBuffer
[
64
];
wchar_t
textBuffer
[
64
];
//main deck
//main deck
driver
->
draw2DRectangle
(
Resize
(
310
,
137
,
4
10
,
157
),
0x400000ff
,
0x400000ff
,
0x40000000
,
0x40000000
);
driver
->
draw2DRectangle
(
Resize
(
310
,
137
,
5
10
,
157
),
0x400000ff
,
0x400000ff
,
0x40000000
,
0x40000000
);
driver
->
draw2DRectangleOutline
(
Resize
(
309
,
136
,
4
10
,
157
));
driver
->
draw2DRectangleOutline
(
Resize
(
309
,
136
,
5
10
,
157
));
DrawShadowText
(
textFont
,
dataManager
.
GetSysString
(
1330
),
Resize
(
315
,
137
,
4
10
,
157
),
Resize
(
1
,
1
,
1
,
1
),
0xffffffff
,
0xff000000
,
false
,
true
);
DrawShadowText
(
textFont
,
dataManager
.
GetSysString
(
1330
),
Resize
(
315
,
137
,
5
10
,
157
),
Resize
(
1
,
1
,
1
,
1
),
0xffffffff
,
0xff000000
,
false
,
true
);
DrawShadowText
(
numFont
,
d
ataManager
.
numStrings
[
deckManager
.
current_deck
.
main
.
size
()],
Resize
(
380
,
138
,
4
40
,
158
),
Resize
(
1
,
1
,
1
,
1
),
0xffffffff
,
0xff000000
,
false
,
true
);
DrawShadowText
(
numFont
,
d
eckManager
.
GetMainFormatString
(),
Resize
(
380
,
138
,
5
40
,
158
),
Resize
(
1
,
1
,
1
,
1
),
0xffffffff
,
0xff000000
,
false
,
true
);
driver
->
draw2DRectangle
(
Resize
(
310
,
160
,
797
,
436
),
0x400000ff
,
0x400000ff
,
0x40000000
,
0x40000000
);
driver
->
draw2DRectangle
(
Resize
(
310
,
160
,
797
,
436
),
0x400000ff
,
0x400000ff
,
0x40000000
,
0x40000000
);
driver
->
draw2DRectangleOutline
(
Resize
(
309
,
159
,
797
,
436
));
driver
->
draw2DRectangleOutline
(
Resize
(
309
,
159
,
797
,
436
));
int
lx
;
int
lx
;
...
@@ -1132,10 +1132,10 @@ void Game::DrawDeckBd() {
...
@@ -1132,10 +1132,10 @@ void Game::DrawDeckBd() {
driver
->
draw2DRectangleOutline
(
Resize
(
313
+
(
i
%
lx
)
*
dx
,
163
+
(
i
/
lx
)
*
68
,
359
+
(
i
%
lx
)
*
dx
,
228
+
(
i
/
lx
)
*
68
));
driver
->
draw2DRectangleOutline
(
Resize
(
313
+
(
i
%
lx
)
*
dx
,
163
+
(
i
/
lx
)
*
68
,
359
+
(
i
%
lx
)
*
dx
,
228
+
(
i
/
lx
)
*
68
));
}
}
//extra deck
//extra deck
driver
->
draw2DRectangle
(
Resize
(
310
,
440
,
4
10
,
460
),
0x400000ff
,
0x400000ff
,
0x40000000
,
0x40000000
);
driver
->
draw2DRectangle
(
Resize
(
310
,
440
,
5
10
,
460
),
0x400000ff
,
0x400000ff
,
0x40000000
,
0x40000000
);
driver
->
draw2DRectangleOutline
(
Resize
(
309
,
439
,
4
10
,
460
));
driver
->
draw2DRectangleOutline
(
Resize
(
309
,
439
,
5
10
,
460
));
DrawShadowText
(
textFont
,
dataManager
.
GetSysString
(
1331
),
Resize
(
315
,
440
,
4
10
,
460
),
Resize
(
1
,
1
,
1
,
1
),
0xffffffff
,
0xff000000
,
false
,
true
);
DrawShadowText
(
textFont
,
dataManager
.
GetSysString
(
1331
),
Resize
(
315
,
440
,
5
10
,
460
),
Resize
(
1
,
1
,
1
,
1
),
0xffffffff
,
0xff000000
,
false
,
true
);
DrawShadowText
(
numFont
,
d
ataManager
.
numStrings
[
deckManager
.
current_deck
.
extra
.
size
()],
Resize
(
380
,
441
,
4
40
,
461
),
Resize
(
1
,
1
,
1
,
1
),
0xffffffff
,
0xff000000
,
false
,
true
);
DrawShadowText
(
numFont
,
d
eckManager
.
GetExtraFormatString
(),
Resize
(
380
,
441
,
5
40
,
461
),
Resize
(
1
,
1
,
1
,
1
),
0xffffffff
,
0xff000000
,
false
,
true
);
driver
->
draw2DRectangle
(
Resize
(
310
,
463
,
797
,
533
),
0x400000ff
,
0x400000ff
,
0x40000000
,
0x40000000
);
driver
->
draw2DRectangle
(
Resize
(
310
,
463
,
797
,
533
),
0x400000ff
,
0x400000ff
,
0x40000000
,
0x40000000
);
driver
->
draw2DRectangleOutline
(
Resize
(
309
,
462
,
797
,
533
));
driver
->
draw2DRectangleOutline
(
Resize
(
309
,
462
,
797
,
533
));
if
(
deckManager
.
current_deck
.
extra
.
size
()
<=
10
)
if
(
deckManager
.
current_deck
.
extra
.
size
()
<=
10
)
...
@@ -1147,10 +1147,10 @@ void Game::DrawDeckBd() {
...
@@ -1147,10 +1147,10 @@ void Game::DrawDeckBd() {
driver
->
draw2DRectangleOutline
(
Resize
(
313
+
i
*
dx
,
465
,
359
+
i
*
dx
,
531
));
driver
->
draw2DRectangleOutline
(
Resize
(
313
+
i
*
dx
,
465
,
359
+
i
*
dx
,
531
));
}
}
//side deck
//side deck
driver
->
draw2DRectangle
(
Resize
(
310
,
537
,
4
10
,
557
),
0x400000ff
,
0x400000ff
,
0x40000000
,
0x40000000
);
driver
->
draw2DRectangle
(
Resize
(
310
,
537
,
5
10
,
557
),
0x400000ff
,
0x400000ff
,
0x40000000
,
0x40000000
);
driver
->
draw2DRectangleOutline
(
Resize
(
309
,
536
,
4
10
,
557
));
driver
->
draw2DRectangleOutline
(
Resize
(
309
,
536
,
5
10
,
557
));
DrawShadowText
(
textFont
,
dataManager
.
GetSysString
(
1332
),
Resize
(
315
,
537
,
4
10
,
557
),
Resize
(
1
,
1
,
1
,
1
),
0xffffffff
,
0xff000000
,
false
,
true
);
DrawShadowText
(
textFont
,
dataManager
.
GetSysString
(
1332
),
Resize
(
315
,
537
,
5
10
,
557
),
Resize
(
1
,
1
,
1
,
1
),
0xffffffff
,
0xff000000
,
false
,
true
);
DrawShadowText
(
numFont
,
d
ataManager
.
numStrings
[
deckManager
.
current_deck
.
side
.
size
()],
Resize
(
380
,
538
,
4
40
,
558
),
Resize
(
1
,
1
,
1
,
1
),
0xffffffff
,
0xff000000
,
false
,
true
);
DrawShadowText
(
numFont
,
d
eckManager
.
GetSideFormatString
(),
Resize
(
380
,
538
,
5
40
,
558
),
Resize
(
1
,
1
,
1
,
1
),
0xffffffff
,
0xff000000
,
false
,
true
);
driver
->
draw2DRectangle
(
Resize
(
310
,
560
,
797
,
630
),
0x400000ff
,
0x400000ff
,
0x40000000
,
0x40000000
);
driver
->
draw2DRectangle
(
Resize
(
310
,
560
,
797
,
630
),
0x400000ff
,
0x400000ff
,
0x40000000
,
0x40000000
);
driver
->
draw2DRectangleOutline
(
Resize
(
309
,
559
,
797
,
630
));
driver
->
draw2DRectangleOutline
(
Resize
(
309
,
559
,
797
,
630
));
if
(
deckManager
.
current_deck
.
side
.
size
()
<=
10
)
if
(
deckManager
.
current_deck
.
side
.
size
()
<=
10
)
...
...
gframe/duelclient.cpp
View file @
eb9bebcc
This diff is collapsed.
Click to expand it.
gframe/event_handler.cpp
View file @
eb9bebcc
...
@@ -1680,6 +1680,17 @@ bool ClientField::OnEvent(const irr::SEvent& event) {
...
@@ -1680,6 +1680,17 @@ bool ClientField::OnEvent(const irr::SEvent& event) {
}
}
break
;
break
;
}
}
case
irr
:
:
KEY_KEY_Z
:
{
if
(
!
mainGame
->
dInfo
.
isReplay
&&
!
mainGame
->
HasFocus
(
EGUIET_EDIT_BOX
))
{
mainGame
->
dInfo
.
isReplaySkiping
=
event
.
KeyInput
.
PressedDown
;
if
(
mainGame
->
dInfo
.
isStarted
&&
!
mainGame
->
dInfo
.
isReplaySkiping
)
{
mainGame
->
gMutex
.
Lock
();
mainGame
->
dField
.
RefreshAllCards
();
mainGame
->
gMutex
.
Unlock
();
}
}
break
;
}
case
irr
:
:
KEY_F1
:
case
irr
:
:
KEY_F1
:
case
irr
:
:
KEY_F2
:
case
irr
:
:
KEY_F2
:
case
irr
:
:
KEY_F3
:
case
irr
:
:
KEY_F3
:
...
...
gframe/game.cpp
View file @
eb9bebcc
...
@@ -540,11 +540,21 @@ bool Game::Initialize() {
...
@@ -540,11 +540,21 @@ bool Game::Initialize() {
btnSideSort
->
setVisible
(
false
);
btnSideSort
->
setVisible
(
false
);
btnSideReload
=
env
->
addButton
(
rect
<
s32
>
(
440
,
100
,
500
,
130
),
0
,
BUTTON_SIDE_RELOAD
,
dataManager
.
GetSysString
(
1309
));
btnSideReload
=
env
->
addButton
(
rect
<
s32
>
(
440
,
100
,
500
,
130
),
0
,
BUTTON_SIDE_RELOAD
,
dataManager
.
GetSysString
(
1309
));
btnSideReload
->
setVisible
(
false
);
btnSideReload
->
setVisible
(
false
);
btnRenameDeck
=
env
->
addButton
(
rect
<
s32
>
(
170
,
99
,
220
,
120
),
wDeckEdit
,
BUTTON_RENAME_DECK
,
dataManager
.
GetSysString
(
1362
));
//
//
scrFilter
=
env
->
addScrollBar
(
false
,
recti
(
999
,
161
,
1019
,
629
),
0
,
SCROLL_FILTER
);
scrFilter
=
env
->
addScrollBar
(
false
,
recti
(
999
,
161
,
1019
,
629
),
0
,
SCROLL_FILTER
);
scrFilter
->
setLargeStep
(
10
);
scrFilter
->
setLargeStep
(
10
);
scrFilter
->
setSmallStep
(
1
);
scrFilter
->
setSmallStep
(
1
);
scrFilter
->
setVisible
(
false
);
scrFilter
->
setVisible
(
false
);
//rename deck
wRenameDeck
=
env
->
addWindow
(
rect
<
s32
>
(
510
,
200
,
820
,
320
),
false
,
dataManager
.
GetSysString
(
1367
));
wRenameDeck
->
getCloseButton
()
->
setVisible
(
false
);
wRenameDeck
->
setVisible
(
false
);
env
->
addStaticText
(
dataManager
.
GetSysString
(
1368
),
rect
<
s32
>
(
20
,
25
,
290
,
45
),
false
,
false
,
wRenameDeck
);
ebREName
=
env
->
addEditBox
(
L""
,
rect
<
s32
>
(
20
,
50
,
290
,
70
),
true
,
wRenameDeck
,
-
1
);
ebREName
->
setTextAlignment
(
irr
::
gui
::
EGUIA_CENTER
,
irr
::
gui
::
EGUIA_CENTER
);
btnREYes
=
env
->
addButton
(
rect
<
s32
>
(
70
,
80
,
140
,
105
),
wRenameDeck
,
BUTTON_RENAME_DECK_SAVE
,
dataManager
.
GetSysString
(
1341
));
btnRENo
=
env
->
addButton
(
rect
<
s32
>
(
170
,
80
,
240
,
105
),
wRenameDeck
,
BUTTON_RENAME_DECK_CANCEL
,
dataManager
.
GetSysString
(
1212
));
//sort type
//sort type
wSort
=
env
->
addStaticText
(
L""
,
rect
<
s32
>
(
930
,
132
,
1020
,
156
),
true
,
false
,
0
,
-
1
,
true
);
wSort
=
env
->
addStaticText
(
L""
,
rect
<
s32
>
(
930
,
132
,
1020
,
156
),
true
,
false
,
0
,
-
1
,
true
);
cbSortType
=
env
->
addComboBox
(
rect
<
s32
>
(
10
,
2
,
85
,
22
),
wSort
,
COMBOBOX_SORTTYPE
);
cbSortType
=
env
->
addComboBox
(
rect
<
s32
>
(
10
,
2
,
85
,
22
),
wSort
,
COMBOBOX_SORTTYPE
);
...
@@ -1728,6 +1738,7 @@ void Game::OnResize() {
...
@@ -1728,6 +1738,7 @@ void Game::OnResize() {
btnSideSort
->
setRelativePosition
(
Resize
(
375
,
100
,
435
,
130
));
btnSideSort
->
setRelativePosition
(
Resize
(
375
,
100
,
435
,
130
));
btnSideReload
->
setRelativePosition
(
Resize
(
440
,
100
,
500
,
130
));
btnSideReload
->
setRelativePosition
(
Resize
(
440
,
100
,
500
,
130
));
btnDeleteDeck
->
setRelativePosition
(
Resize
(
225
,
95
,
290
,
120
));
btnDeleteDeck
->
setRelativePosition
(
Resize
(
225
,
95
,
290
,
120
));
btnRenameDeck
->
setRelativePosition
(
Resize
(
170
,
99
,
220
,
120
));
wLanWindow
->
setRelativePosition
(
ResizeWin
(
220
,
100
,
800
,
520
));
wLanWindow
->
setRelativePosition
(
ResizeWin
(
220
,
100
,
800
,
520
));
wCreateHost
->
setRelativePosition
(
ResizeWin
(
320
,
100
,
700
,
520
));
wCreateHost
->
setRelativePosition
(
ResizeWin
(
320
,
100
,
700
,
520
));
...
@@ -1749,7 +1760,7 @@ void Game::OnResize() {
...
@@ -1749,7 +1760,7 @@ void Game::OnResize() {
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
(
500
,
60
,
820
,
90
));
//sound / music volume bar
//sound / music volume bar
scrSoundVolume
->
setRelativePosition
(
recti
(
20
+
126
,
200
+
4
,
20
+
(
300
*
xScale
)
-
40
,
200
+
21
));
scrSoundVolume
->
setRelativePosition
(
recti
(
20
+
126
,
200
+
4
,
20
+
(
300
*
xScale
)
-
40
,
200
+
21
));
scrMusicVolume
->
setRelativePosition
(
recti
(
20
+
126
,
230
+
4
,
20
+
(
300
*
xScale
)
-
40
,
230
+
21
));
scrMusicVolume
->
setRelativePosition
(
recti
(
20
+
126
,
230
+
4
,
20
+
(
300
*
xScale
)
-
40
,
230
+
21
));
...
...
gframe/game.h
View file @
eb9bebcc
...
@@ -464,6 +464,12 @@ public:
...
@@ -464,6 +464,12 @@ public:
irr
::
gui
::
IGUIStaticText
*
stStar
;
irr
::
gui
::
IGUIStaticText
*
stStar
;
irr
::
gui
::
IGUIStaticText
*
stSearch
;
irr
::
gui
::
IGUIStaticText
*
stSearch
;
irr
::
gui
::
IGUIStaticText
*
stScale
;
irr
::
gui
::
IGUIStaticText
*
stScale
;
irr
::
gui
::
IGUIButton
*
btnRenameDeck
;
//deck rename
irr
::
gui
::
IGUIWindow
*
wRenameDeck
;
irr
::
gui
::
IGUIEditBox
*
ebREName
;
irr
::
gui
::
IGUIButton
*
btnREYes
;
irr
::
gui
::
IGUIButton
*
btnRENo
;
//filter
//filter
irr
::
gui
::
IGUIStaticText
*
wFilter
;
irr
::
gui
::
IGUIStaticText
*
wFilter
;
irr
::
gui
::
IGUIScrollBar
*
scrFilter
;
irr
::
gui
::
IGUIScrollBar
*
scrFilter
;
...
@@ -675,6 +681,10 @@ extern HostInfo game_info;
...
@@ -675,6 +681,10 @@ extern HostInfo game_info;
#define BUTTON_MARKS_FILTER 380
#define BUTTON_MARKS_FILTER 380
#define BUTTON_MARKERS_OK 381
#define BUTTON_MARKERS_OK 381
#define BUTTON_RENAME_DECK 386
#define BUTTON_RENAME_DECK_SAVE 387
#define BUTTON_RENAME_DECK_CANCEL 388
#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/image_manager.cpp
View file @
eb9bebcc
...
@@ -60,7 +60,7 @@ bool ImageManager::Initial() {
...
@@ -60,7 +60,7 @@ bool ImageManager::Initial() {
if
(
!
tBackGround_deck
)
if
(
!
tBackGround_deck
)
tBackGround_deck
=
GetRandomImage
(
TEXTURE_DUEL
);
tBackGround_deck
=
GetRandomImage
(
TEXTURE_DUEL
);
if
(
!
tBackGround_deck
)
if
(
!
tBackGround_deck
)
tBackGround_deck
=
tBackGround
;
tBackGround_deck
=
tBackGround
;
tField
[
0
]
=
driver
->
getTexture
(
"textures/field2.png"
);
tField
[
0
]
=
driver
->
getTexture
(
"textures/field2.png"
);
tFieldTransparent
[
0
]
=
driver
->
getTexture
(
"textures/field-transparent2.png"
);
tFieldTransparent
[
0
]
=
driver
->
getTexture
(
"textures/field-transparent2.png"
);
tField
[
1
]
=
driver
->
getTexture
(
"textures/field3.png"
);
tField
[
1
]
=
driver
->
getTexture
(
"textures/field3.png"
);
...
...
strings.conf
View file @
eb9bebcc
...
@@ -378,6 +378,9 @@
...
@@ -378,6 +378,9 @@
!
system
1363
是否删除这个录像?
!
system
1363
是否删除这个录像?
!
system
1364
重命名录像
!
system
1364
重命名录像
!
system
1365
重命名失败,可能存在同名文件
!
system
1365
重命名失败,可能存在同名文件
!
system
1366
重命名成功
!
system
1367
重命名卡组
!
system
1368
卡组文件:
!
system
1370
星数↑
!
system
1370
星数↑
!
system
1371
攻击↑
!
system
1371
攻击↑
!
system
1372
守备↑
!
system
1372
守备↑
...
...
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