Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Y
ygopro
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Locked Files
Issues
0
Issues
0
List
Boards
Labels
Service Desk
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Security & Compliance
Security & Compliance
Dependency List
License Compliance
Packages
Packages
List
Container Registry
Analytics
Analytics
CI / CD
Code Review
Insights
Issues
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
YGOPRO-520DIY
ygopro
Commits
5c106955
Commit
5c106955
authored
Mar 15, 2018
by
mercury233
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'master' of
https://github.com/Fluorohydride/ygopro
parents
8956aa07
3f419cc9
Changes
21
Expand all
Show whitespace changes
Inline
Side-by-side
Showing
21 changed files
with
520 additions
and
320 deletions
+520
-320
gframe/client_card.h
gframe/client_card.h
+3
-3
gframe/client_field.cpp
gframe/client_field.cpp
+11
-10
gframe/client_field.h
gframe/client_field.h
+1
-0
gframe/config.h
gframe/config.h
+6
-0
gframe/data_manager.cpp
gframe/data_manager.cpp
+22
-29
gframe/deck_con.cpp
gframe/deck_con.cpp
+6
-3
gframe/deck_con.h
gframe/deck_con.h
+1
-0
gframe/duelclient.cpp
gframe/duelclient.cpp
+8
-0
gframe/event_handler.cpp
gframe/event_handler.cpp
+129
-253
gframe/game.cpp
gframe/game.cpp
+6
-2
gframe/game.h
gframe/game.h
+5
-0
gframe/gframe.cpp
gframe/gframe.cpp
+18
-0
gframe/menu_handler.cpp
gframe/menu_handler.cpp
+78
-0
gframe/menu_handler.h
gframe/menu_handler.h
+3
-1
gframe/replay.cpp
gframe/replay.cpp
+30
-0
gframe/replay.h
gframe/replay.h
+2
-0
gframe/single_mode.cpp
gframe/single_mode.cpp
+1
-0
lflist.conf
lflist.conf
+179
-17
ocgcore
ocgcore
+1
-1
script
script
+1
-1
strings.conf
strings.conf
+9
-0
No files found.
gframe/client_card.h
View file @
5c106955
...
@@ -39,9 +39,9 @@ struct CardDataC {
...
@@ -39,9 +39,9 @@ struct CardDataC {
unsigned
int
category
;
unsigned
int
category
;
};
};
struct
CardString
{
struct
CardString
{
wchar_t
*
name
;
std
::
wstring
name
;
wchar_t
*
text
;
std
::
wstring
text
;
wchar_t
*
desc
[
16
];
std
::
wstring
desc
[
16
];
};
};
typedef
std
::
unordered_map
<
unsigned
int
,
CardDataC
>::
const_iterator
code_pointer
;
typedef
std
::
unordered_map
<
unsigned
int
,
CardDataC
>::
const_iterator
code_pointer
;
...
...
gframe/client_field.cpp
View file @
5c106955
...
@@ -645,6 +645,7 @@ void ClientField::ReplaySwap() {
...
@@ -645,6 +645,7 @@ void ClientField::ReplaySwap() {
(
*
cit
)
->
is_moving
=
false
;
(
*
cit
)
->
is_moving
=
false
;
}
}
mainGame
->
dInfo
.
isFirst
=
!
mainGame
->
dInfo
.
isFirst
;
mainGame
->
dInfo
.
isFirst
=
!
mainGame
->
dInfo
.
isFirst
;
mainGame
->
dInfo
.
isReplaySwapped
=
!
mainGame
->
dInfo
.
isReplaySwapped
;
std
::
swap
(
mainGame
->
dInfo
.
lp
[
0
],
mainGame
->
dInfo
.
lp
[
1
]);
std
::
swap
(
mainGame
->
dInfo
.
lp
[
0
],
mainGame
->
dInfo
.
lp
[
1
]);
std
::
swap
(
mainGame
->
dInfo
.
strLP
[
0
],
mainGame
->
dInfo
.
strLP
[
1
]);
std
::
swap
(
mainGame
->
dInfo
.
strLP
[
0
],
mainGame
->
dInfo
.
strLP
[
1
]);
std
::
swap
(
mainGame
->
dInfo
.
hostname
,
mainGame
->
dInfo
.
clientname
);
std
::
swap
(
mainGame
->
dInfo
.
hostname
,
mainGame
->
dInfo
.
clientname
);
...
@@ -1369,7 +1370,7 @@ void ClientField::UpdateDeclarableCodeType(bool enter) {
...
@@ -1369,7 +1370,7 @@ void ClientField::UpdateDeclarableCodeType(bool enter) {
if
(
dataManager
.
GetString
(
trycode
,
&
cstr
)
&&
dataManager
.
GetData
(
trycode
,
&
cd
)
&&
is_declarable
(
cd
,
declarable_type
))
{
if
(
dataManager
.
GetString
(
trycode
,
&
cstr
)
&&
dataManager
.
GetData
(
trycode
,
&
cd
)
&&
is_declarable
(
cd
,
declarable_type
))
{
mainGame
->
lstANCard
->
clear
();
mainGame
->
lstANCard
->
clear
();
ancard
.
clear
();
ancard
.
clear
();
mainGame
->
lstANCard
->
addItem
(
cstr
.
name
);
mainGame
->
lstANCard
->
addItem
(
cstr
.
name
.
c_str
()
);
ancard
.
push_back
(
trycode
);
ancard
.
push_back
(
trycode
);
return
;
return
;
}
}
...
@@ -1378,15 +1379,15 @@ void ClientField::UpdateDeclarableCodeType(bool enter) {
...
@@ -1378,15 +1379,15 @@ void ClientField::UpdateDeclarableCodeType(bool enter) {
mainGame
->
lstANCard
->
clear
();
mainGame
->
lstANCard
->
clear
();
ancard
.
clear
();
ancard
.
clear
();
for
(
auto
cit
=
dataManager
.
_strings
.
begin
();
cit
!=
dataManager
.
_strings
.
end
();
++
cit
)
{
for
(
auto
cit
=
dataManager
.
_strings
.
begin
();
cit
!=
dataManager
.
_strings
.
end
();
++
cit
)
{
if
(
wcsstr
(
cit
->
second
.
name
,
pname
)
!=
0
)
{
if
(
cit
->
second
.
name
.
find
(
pname
)
!=
std
::
wstring
::
npos
)
{
auto
cp
=
dataManager
.
GetCodePointer
(
cit
->
first
);
//verified by _strings
auto
cp
=
dataManager
.
GetCodePointer
(
cit
->
first
);
//verified by _strings
//datas.alias can be double card names or alias
//datas.alias can be double card names or alias
if
(
is_declarable
(
cp
->
second
,
declarable_type
))
{
if
(
is_declarable
(
cp
->
second
,
declarable_type
))
{
if
(
wcscmp
(
pname
,
cit
->
second
.
name
)
==
0
)
{
//exact match
if
(
pname
==
cit
->
second
.
name
)
{
//exact match
mainGame
->
lstANCard
->
insertItem
(
0
,
cit
->
second
.
name
,
-
1
);
mainGame
->
lstANCard
->
insertItem
(
0
,
cit
->
second
.
name
.
c_str
()
,
-
1
);
ancard
.
insert
(
ancard
.
begin
(),
cit
->
first
);
ancard
.
insert
(
ancard
.
begin
(),
cit
->
first
);
}
else
{
}
else
{
mainGame
->
lstANCard
->
addItem
(
cit
->
second
.
name
);
mainGame
->
lstANCard
->
addItem
(
cit
->
second
.
name
.
c_str
()
);
ancard
.
push_back
(
cit
->
first
);
ancard
.
push_back
(
cit
->
first
);
}
}
}
}
...
@@ -1401,7 +1402,7 @@ void ClientField::UpdateDeclarableCodeOpcode(bool enter) {
...
@@ -1401,7 +1402,7 @@ void ClientField::UpdateDeclarableCodeOpcode(bool enter) {
if
(
dataManager
.
GetString
(
trycode
,
&
cstr
)
&&
dataManager
.
GetData
(
trycode
,
&
cd
)
&&
is_declarable
(
cd
,
opcode
))
{
if
(
dataManager
.
GetString
(
trycode
,
&
cstr
)
&&
dataManager
.
GetData
(
trycode
,
&
cd
)
&&
is_declarable
(
cd
,
opcode
))
{
mainGame
->
lstANCard
->
clear
();
mainGame
->
lstANCard
->
clear
();
ancard
.
clear
();
ancard
.
clear
();
mainGame
->
lstANCard
->
addItem
(
cstr
.
name
);
mainGame
->
lstANCard
->
addItem
(
cstr
.
name
.
c_str
()
);
ancard
.
push_back
(
trycode
);
ancard
.
push_back
(
trycode
);
return
;
return
;
}
}
...
@@ -1410,15 +1411,15 @@ void ClientField::UpdateDeclarableCodeOpcode(bool enter) {
...
@@ -1410,15 +1411,15 @@ void ClientField::UpdateDeclarableCodeOpcode(bool enter) {
mainGame
->
lstANCard
->
clear
();
mainGame
->
lstANCard
->
clear
();
ancard
.
clear
();
ancard
.
clear
();
for
(
auto
cit
=
dataManager
.
_strings
.
begin
();
cit
!=
dataManager
.
_strings
.
end
();
++
cit
)
{
for
(
auto
cit
=
dataManager
.
_strings
.
begin
();
cit
!=
dataManager
.
_strings
.
end
();
++
cit
)
{
if
(
wcsstr
(
cit
->
second
.
name
,
pname
)
!=
0
)
{
if
(
cit
->
second
.
name
.
find
(
pname
)
!=
std
::
wstring
::
npos
)
{
auto
cp
=
dataManager
.
GetCodePointer
(
cit
->
first
);
//verified by _strings
auto
cp
=
dataManager
.
GetCodePointer
(
cit
->
first
);
//verified by _strings
//datas.alias can be double card names or alias
//datas.alias can be double card names or alias
if
(
is_declarable
(
cp
->
second
,
opcode
))
{
if
(
is_declarable
(
cp
->
second
,
opcode
))
{
if
(
wcscmp
(
pname
,
cit
->
second
.
name
)
==
0
)
{
//exact match
if
(
pname
==
cit
->
second
.
name
)
{
//exact match
mainGame
->
lstANCard
->
insertItem
(
0
,
cit
->
second
.
name
,
-
1
);
mainGame
->
lstANCard
->
insertItem
(
0
,
cit
->
second
.
name
.
c_str
()
,
-
1
);
ancard
.
insert
(
ancard
.
begin
(),
cit
->
first
);
ancard
.
insert
(
ancard
.
begin
(),
cit
->
first
);
}
else
{
}
else
{
mainGame
->
lstANCard
->
addItem
(
cit
->
second
.
name
);
mainGame
->
lstANCard
->
addItem
(
cit
->
second
.
name
.
c_str
()
);
ancard
.
push_back
(
cit
->
first
);
ancard
.
push_back
(
cit
->
first
);
}
}
}
}
...
...
gframe/client_field.h
View file @
5c106955
...
@@ -137,6 +137,7 @@ public:
...
@@ -137,6 +137,7 @@ public:
void
ShowCancelOrFinishButton
(
int
buttonOp
);
void
ShowCancelOrFinishButton
(
int
buttonOp
);
void
SetShowMark
(
ClientCard
*
pcard
,
bool
enable
);
void
SetShowMark
(
ClientCard
*
pcard
,
bool
enable
);
void
SetResponseSelectedCards
()
const
;
void
SetResponseSelectedCards
()
const
;
void
CancelOrFinish
();
};
};
}
}
...
...
gframe/config.h
View file @
5c106955
...
@@ -13,8 +13,12 @@
...
@@ -13,8 +13,12 @@
#ifdef _MSC_VER
#ifdef _MSC_VER
#define myswprintf _swprintf
#define myswprintf _swprintf
#define mywcsncasecmp _wcsnicmp
#define mystrncasecmp _strnicmp
#else
#else
#define myswprintf swprintf
#define myswprintf swprintf
#define mywcsncasecmp wcsncasecmp
#define mystrncasecmp strncasecmp
#endif
#endif
#define socklen_t int
#define socklen_t int
...
@@ -41,6 +45,8 @@
...
@@ -41,6 +45,8 @@
#include <wchar.h>
#include <wchar.h>
#define myswprintf(buf, fmt, ...) swprintf(buf, 4096, fmt, ##__VA_ARGS__)
#define myswprintf(buf, fmt, ...) swprintf(buf, 4096, fmt, ##__VA_ARGS__)
#define mywcsncasecmp wcsncasecmp
#define mystrncasecmp strncasecmp
inline
int
_wtoi
(
const
wchar_t
*
s
)
{
inline
int
_wtoi
(
const
wchar_t
*
s
)
{
wchar_t
*
endptr
;
wchar_t
*
endptr
;
return
(
int
)
wcstol
(
s
,
&
endptr
,
10
);
return
(
int
)
wcstol
(
s
,
&
endptr
,
10
);
...
...
gframe/data_manager.cpp
View file @
5c106955
...
@@ -17,8 +17,7 @@ bool DataManager::LoadDB(const char* file) {
...
@@ -17,8 +17,7 @@ bool DataManager::LoadDB(const char* file) {
return
Error
(
pDB
);
return
Error
(
pDB
);
CardDataC
cd
;
CardDataC
cd
;
CardString
cs
;
CardString
cs
;
for
(
int
i
=
0
;
i
<
16
;
++
i
)
cs
.
desc
[
i
]
=
0
;
int
step
=
0
;
int
step
=
0
,
len
=
0
;
do
{
do
{
step
=
sqlite3_step
(
pStmt
);
step
=
sqlite3_step
(
pStmt
);
if
(
step
==
SQLITE_BUSY
||
step
==
SQLITE_ERROR
||
step
==
SQLITE_MISUSE
)
if
(
step
==
SQLITE_BUSY
||
step
==
SQLITE_ERROR
||
step
==
SQLITE_MISUSE
)
...
@@ -44,27 +43,21 @@ bool DataManager::LoadDB(const char* file) {
...
@@ -44,27 +43,21 @@ bool DataManager::LoadDB(const char* file) {
cd
.
attribute
=
sqlite3_column_int
(
pStmt
,
9
);
cd
.
attribute
=
sqlite3_column_int
(
pStmt
,
9
);
cd
.
category
=
sqlite3_column_int
(
pStmt
,
10
);
cd
.
category
=
sqlite3_column_int
(
pStmt
,
10
);
_datas
.
insert
(
std
::
make_pair
(
cd
.
code
,
cd
));
_datas
.
insert
(
std
::
make_pair
(
cd
.
code
,
cd
));
len
=
BufferIO
::
DecodeUTF8
((
const
char
*
)
sqlite3_column_text
(
pStmt
,
12
),
strBuffer
);
if
(
const
char
*
text
=
(
const
char
*
)
sqlite3_column_text
(
pStmt
,
12
))
{
if
(
len
)
{
BufferIO
::
DecodeUTF8
(
text
,
strBuffer
);
cs
.
name
=
new
wchar_t
[
len
+
1
];
cs
.
name
=
strBuffer
;
memcpy
(
cs
.
name
,
strBuffer
,
(
len
+
1
)
*
sizeof
(
wchar_t
));
}
else
cs
.
name
=
0
;
len
=
BufferIO
::
DecodeUTF8
((
const
char
*
)
sqlite3_column_text
(
pStmt
,
13
),
strBuffer
);
if
(
len
)
{
cs
.
text
=
new
wchar_t
[
len
+
1
];
memcpy
(
cs
.
text
,
strBuffer
,
(
len
+
1
)
*
sizeof
(
wchar_t
));
}
else
{
cs
.
text
=
new
wchar_t
[
1
];
cs
.
text
[
0
]
=
0
;
}
}
for
(
int
i
=
14
;
i
<
30
;
++
i
)
{
if
(
const
char
*
text
=
(
const
char
*
)
sqlite3_column_text
(
pStmt
,
13
))
{
len
=
BufferIO
::
DecodeUTF8
((
const
char
*
)
sqlite3_column_text
(
pStmt
,
i
),
strBuffer
);
BufferIO
::
DecodeUTF8
(
text
,
strBuffer
);
if
(
len
)
{
cs
.
text
=
strBuffer
;
cs
.
desc
[
i
-
14
]
=
new
wchar_t
[
len
+
1
];
memcpy
(
cs
.
desc
[
i
-
14
],
strBuffer
,
(
len
+
1
)
*
sizeof
(
wchar_t
));
}
else
cs
.
desc
[
i
-
14
]
=
0
;
}
}
_strings
.
insert
(
std
::
make_pair
(
cd
.
code
,
cs
));
for
(
int
i
=
0
;
i
<
16
;
++
i
)
{
if
(
const
char
*
text
=
(
const
char
*
)
sqlite3_column_text
(
pStmt
,
i
+
14
))
{
BufferIO
::
DecodeUTF8
(
text
,
strBuffer
);
cs
.
desc
[
i
]
=
strBuffer
;
}
}
_strings
.
emplace
(
cd
.
code
,
cs
);
}
}
}
while
(
step
!=
SQLITE_DONE
);
}
while
(
step
!=
SQLITE_DONE
);
sqlite3_finalize
(
pStmt
);
sqlite3_finalize
(
pStmt
);
...
@@ -126,8 +119,8 @@ code_pointer DataManager::GetCodePointer(int code) {
...
@@ -126,8 +119,8 @@ code_pointer DataManager::GetCodePointer(int code) {
bool
DataManager
::
GetString
(
int
code
,
CardString
*
pStr
)
{
bool
DataManager
::
GetString
(
int
code
,
CardString
*
pStr
)
{
auto
csit
=
_strings
.
find
(
code
);
auto
csit
=
_strings
.
find
(
code
);
if
(
csit
==
_strings
.
end
())
{
if
(
csit
==
_strings
.
end
())
{
pStr
->
name
=
(
wchar_t
*
)
unknown_string
;
pStr
->
name
=
unknown_string
;
pStr
->
text
=
(
wchar_t
*
)
unknown_string
;
pStr
->
text
=
unknown_string
;
return
false
;
return
false
;
}
}
*
pStr
=
csit
->
second
;
*
pStr
=
csit
->
second
;
...
@@ -137,16 +130,16 @@ const wchar_t* DataManager::GetName(int code) {
...
@@ -137,16 +130,16 @@ const wchar_t* DataManager::GetName(int code) {
auto
csit
=
_strings
.
find
(
code
);
auto
csit
=
_strings
.
find
(
code
);
if
(
csit
==
_strings
.
end
())
if
(
csit
==
_strings
.
end
())
return
unknown_string
;
return
unknown_string
;
if
(
csit
->
second
.
name
)
if
(
!
csit
->
second
.
name
.
empty
()
)
return
csit
->
second
.
name
;
return
csit
->
second
.
name
.
c_str
()
;
return
unknown_string
;
return
unknown_string
;
}
}
const
wchar_t
*
DataManager
::
GetText
(
int
code
)
{
const
wchar_t
*
DataManager
::
GetText
(
int
code
)
{
auto
csit
=
_strings
.
find
(
code
);
auto
csit
=
_strings
.
find
(
code
);
if
(
csit
==
_strings
.
end
())
if
(
csit
==
_strings
.
end
())
return
unknown_string
;
return
unknown_string
;
if
(
csit
->
second
.
text
)
if
(
!
csit
->
second
.
text
.
empty
()
)
return
csit
->
second
.
text
;
return
csit
->
second
.
text
.
c_str
()
;
return
unknown_string
;
return
unknown_string
;
}
}
const
wchar_t
*
DataManager
::
GetDesc
(
int
strCode
)
{
const
wchar_t
*
DataManager
::
GetDesc
(
int
strCode
)
{
...
@@ -157,8 +150,8 @@ const wchar_t* DataManager::GetDesc(int strCode) {
...
@@ -157,8 +150,8 @@ const wchar_t* DataManager::GetDesc(int strCode) {
auto
csit
=
_strings
.
find
(
code
);
auto
csit
=
_strings
.
find
(
code
);
if
(
csit
==
_strings
.
end
())
if
(
csit
==
_strings
.
end
())
return
unknown_string
;
return
unknown_string
;
if
(
csit
->
second
.
desc
[
offset
]
)
if
(
!
csit
->
second
.
desc
[
offset
].
empty
()
)
return
csit
->
second
.
desc
[
offset
];
return
csit
->
second
.
desc
[
offset
]
.
c_str
()
;
return
unknown_string
;
return
unknown_string
;
}
}
const
wchar_t
*
DataManager
::
GetSysString
(
int
code
)
{
const
wchar_t
*
DataManager
::
GetSysString
(
int
code
)
{
...
...
gframe/deck_con.cpp
View file @
5c106955
...
@@ -84,6 +84,7 @@ void DeckBuilder::Initialize() {
...
@@ -84,6 +84,7 @@ void DeckBuilder::Initialize() {
is_starting_dragging
=
false
;
is_starting_dragging
=
false
;
prev_deck
=
mainGame
->
cbDBDecks
->
getSelected
();
prev_deck
=
mainGame
->
cbDBDecks
->
getSelected
();
prev_operation
=
0
;
prev_operation
=
0
;
prev_sel
=
-
1
;
is_modified
=
false
;
is_modified
=
false
;
mainGame
->
device
->
setEventReceiver
(
this
);
mainGame
->
device
->
setEventReceiver
(
this
);
}
}
...
@@ -184,6 +185,7 @@ bool DeckBuilder::OnEvent(const irr::SEvent& event) {
...
@@ -184,6 +185,7 @@ bool DeckBuilder::OnEvent(const irr::SEvent& event) {
mainGame
->
PopupElement
(
mainGame
->
wQuery
);
mainGame
->
PopupElement
(
mainGame
->
wQuery
);
mainGame
->
gMutex
.
Unlock
();
mainGame
->
gMutex
.
Unlock
();
prev_operation
=
id
;
prev_operation
=
id
;
prev_sel
=
sel
;
break
;
break
;
}
}
case
BUTTON_LEAVE_GAME
:
{
case
BUTTON_LEAVE_GAME
:
{
...
@@ -260,7 +262,7 @@ bool DeckBuilder::OnEvent(const irr::SEvent& event) {
...
@@ -260,7 +262,7 @@ bool DeckBuilder::OnEvent(const irr::SEvent& event) {
deckManager
.
current_deck
.
extra
.
clear
();
deckManager
.
current_deck
.
extra
.
clear
();
deckManager
.
current_deck
.
side
.
clear
();
deckManager
.
current_deck
.
side
.
clear
();
}
else
if
(
prev_operation
==
BUTTON_DELETE_DECK
)
{
}
else
if
(
prev_operation
==
BUTTON_DELETE_DECK
)
{
int
sel
=
mainGame
->
cbDBDecks
->
getSelected
()
;
int
sel
=
prev_sel
;
if
(
deckManager
.
DeleteDeck
(
deckManager
.
current_deck
,
mainGame
->
cbDBDecks
->
getItem
(
sel
)))
{
if
(
deckManager
.
DeleteDeck
(
deckManager
.
current_deck
,
mainGame
->
cbDBDecks
->
getItem
(
sel
)))
{
mainGame
->
cbDBDecks
->
removeItem
(
sel
);
mainGame
->
cbDBDecks
->
removeItem
(
sel
);
int
count
=
mainGame
->
cbDBDecks
->
getItemCount
();
int
count
=
mainGame
->
cbDBDecks
->
getItemCount
();
...
@@ -274,6 +276,7 @@ bool DeckBuilder::OnEvent(const irr::SEvent& event) {
...
@@ -274,6 +276,7 @@ bool DeckBuilder::OnEvent(const irr::SEvent& event) {
prev_deck
=
sel
;
prev_deck
=
sel
;
is_modified
=
false
;
is_modified
=
false
;
}
}
prev_sel
=
-
1
;
}
else
if
(
prev_operation
==
BUTTON_LEAVE_GAME
)
{
}
else
if
(
prev_operation
==
BUTTON_LEAVE_GAME
)
{
Terminate
();
Terminate
();
}
else
if
(
prev_operation
==
COMBOBOX_DBDECKS
)
{
}
else
if
(
prev_operation
==
COMBOBOX_DBDECKS
)
{
...
@@ -845,12 +848,12 @@ void DeckBuilder::FilterCards() {
...
@@ -845,12 +848,12 @@ void DeckBuilder::FilterCards() {
}
}
if
(
pstr
)
{
if
(
pstr
)
{
if
(
pstr
[
0
]
==
L'$'
)
{
if
(
pstr
[
0
]
==
L'$'
)
{
if
(
!
CardNameContains
(
text
.
name
,
&
pstr
[
1
]))
if
(
!
CardNameContains
(
text
.
name
.
c_str
()
,
&
pstr
[
1
]))
continue
;
continue
;
}
else
if
(
pstr
[
0
]
==
L'@'
&&
set_code
)
{
}
else
if
(
pstr
[
0
]
==
L'@'
&&
set_code
)
{
if
(
!
check_set_code
(
data
,
set_code
))
continue
;
if
(
!
check_set_code
(
data
,
set_code
))
continue
;
}
else
{
}
else
{
if
(
!
CardNameContains
(
text
.
name
,
pstr
)
&&
wcsstr
(
text
.
text
,
pstr
)
==
0
if
(
!
CardNameContains
(
text
.
name
.
c_str
(),
pstr
)
&&
text
.
text
.
find
(
pstr
)
==
std
::
wstring
::
npos
&&
(
!
set_code
||
!
check_set_code
(
data
,
set_code
)))
&&
(
!
set_code
||
!
check_set_code
(
data
,
set_code
)))
continue
;
continue
;
}
}
...
...
gframe/deck_con.h
View file @
5c106955
...
@@ -62,6 +62,7 @@ public:
...
@@ -62,6 +62,7 @@ public:
code_pointer
draging_pointer
;
code_pointer
draging_pointer
;
int
prev_deck
;
int
prev_deck
;
s32
prev_operation
;
s32
prev_operation
;
int
prev_sel
;
bool
is_modified
;
bool
is_modified
;
std
::
unordered_map
<
int
,
int
>*
filterList
;
std
::
unordered_map
<
int
,
int
>*
filterList
;
...
...
gframe/duelclient.cpp
View file @
5c106955
...
@@ -562,6 +562,7 @@ void DuelClient::HandleSTOCPacketLan(char* data, unsigned int len) {
...
@@ -562,6 +562,7 @@ void DuelClient::HandleSTOCPacketLan(char* data, unsigned int len) {
mainGame
->
dInfo
.
time_left
[
0
]
=
0
;
mainGame
->
dInfo
.
time_left
[
0
]
=
0
;
mainGame
->
dInfo
.
time_left
[
1
]
=
0
;
mainGame
->
dInfo
.
time_left
[
1
]
=
0
;
mainGame
->
dInfo
.
time_player
=
2
;
mainGame
->
dInfo
.
time_player
=
2
;
mainGame
->
dInfo
.
isReplaySwapped
=
false
;
mainGame
->
is_building
=
false
;
mainGame
->
is_building
=
false
;
mainGame
->
wCardImg
->
setVisible
(
true
);
mainGame
->
wCardImg
->
setVisible
(
true
);
mainGame
->
wInfos
->
setVisible
(
true
);
mainGame
->
wInfos
->
setVisible
(
true
);
...
@@ -672,6 +673,7 @@ void DuelClient::HandleSTOCPacketLan(char* data, unsigned int len) {
...
@@ -672,6 +673,7 @@ void DuelClient::HandleSTOCPacketLan(char* data, unsigned int len) {
wchar_t
timetext
[
80
];
wchar_t
timetext
[
80
];
mbstowcs
(
timetext
,
timebuf
,
size
);
mbstowcs
(
timetext
,
timebuf
,
size
);
mainGame
->
ebRSName
->
setText
(
timetext
);
mainGame
->
ebRSName
->
setText
(
timetext
);
mainGame
->
wReplaySave
->
setText
(
dataManager
.
GetSysString
(
1340
));
mainGame
->
PopupElement
(
mainGame
->
wReplaySave
);
mainGame
->
PopupElement
(
mainGame
->
wReplaySave
);
mainGame
->
gMutex
.
Unlock
();
mainGame
->
gMutex
.
Unlock
();
mainGame
->
replaySignal
.
Reset
();
mainGame
->
replaySignal
.
Reset
();
...
@@ -1050,6 +1052,12 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) {
...
@@ -1050,6 +1052,12 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) {
mainGame
->
dField
.
Initial
(
mainGame
->
LocalPlayer
(
1
),
deckc
,
extrac
);
mainGame
->
dField
.
Initial
(
mainGame
->
LocalPlayer
(
1
),
deckc
,
extrac
);
mainGame
->
dInfo
.
turn
=
0
;
mainGame
->
dInfo
.
turn
=
0
;
mainGame
->
dInfo
.
is_shuffling
=
false
;
mainGame
->
dInfo
.
is_shuffling
=
false
;
if
(
mainGame
->
dInfo
.
isReplaySwapped
)
{
std
::
swap
(
mainGame
->
dInfo
.
hostname
,
mainGame
->
dInfo
.
clientname
);
std
::
swap
(
mainGame
->
dInfo
.
hostname_tag
,
mainGame
->
dInfo
.
clientname_tag
);
mainGame
->
dInfo
.
isReplaySwapped
=
false
;
mainGame
->
dField
.
ReplaySwap
();
}
mainGame
->
gMutex
.
Unlock
();
mainGame
->
gMutex
.
Unlock
();
return
true
;
return
true
;
}
}
...
...
gframe/event_handler.cpp
View file @
5c106955
This diff is collapsed.
Click to expand it.
gframe/game.cpp
View file @
5c106955
...
@@ -44,6 +44,8 @@ bool Game::Initialize() {
...
@@ -44,6 +44,8 @@ bool Game::Initialize() {
ignore_chain
=
false
;
ignore_chain
=
false
;
chain_when_avail
=
false
;
chain_when_avail
=
false
;
is_building
=
false
;
is_building
=
false
;
menuHandler
.
prev_operation
=
0
;
menuHandler
.
prev_sel
=
-
1
;
memset
(
&
dInfo
,
0
,
sizeof
(
DuelInfo
));
memset
(
&
dInfo
,
0
,
sizeof
(
DuelInfo
));
memset
(
chatTiming
,
0
,
sizeof
(
chatTiming
));
memset
(
chatTiming
,
0
,
sizeof
(
chatTiming
));
deckManager
.
LoadLFList
();
deckManager
.
LoadLFList
();
...
@@ -544,8 +546,10 @@ bool Game::Initialize() {
...
@@ -544,8 +546,10 @@ bool Game::Initialize() {
wReplay
->
setVisible
(
false
);
wReplay
->
setVisible
(
false
);
lstReplayList
=
env
->
addListBox
(
rect
<
s32
>
(
10
,
30
,
350
,
400
),
wReplay
,
LISTBOX_REPLAY_LIST
,
true
);
lstReplayList
=
env
->
addListBox
(
rect
<
s32
>
(
10
,
30
,
350
,
400
),
wReplay
,
LISTBOX_REPLAY_LIST
,
true
);
lstReplayList
->
setItemHeight
(
18
);
lstReplayList
->
setItemHeight
(
18
);
btnLoadReplay
=
env
->
addButton
(
rect
<
s32
>
(
460
,
355
,
570
,
380
),
wReplay
,
BUTTON_LOAD_REPLAY
,
dataManager
.
GetSysString
(
1348
));
btnLoadReplay
=
env
->
addButton
(
rect
<
s32
>
(
470
,
355
,
570
,
380
),
wReplay
,
BUTTON_LOAD_REPLAY
,
dataManager
.
GetSysString
(
1348
));
btnReplayCancel
=
env
->
addButton
(
rect
<
s32
>
(
460
,
385
,
570
,
410
),
wReplay
,
BUTTON_CANCEL_REPLAY
,
dataManager
.
GetSysString
(
1347
));
btnDeleteReplay
=
env
->
addButton
(
rect
<
s32
>
(
360
,
355
,
460
,
380
),
wReplay
,
BUTTON_DELETE_REPLAY
,
dataManager
.
GetSysString
(
1361
));
btnRenameReplay
=
env
->
addButton
(
rect
<
s32
>
(
360
,
385
,
460
,
410
),
wReplay
,
BUTTON_RENAME_REPLAY
,
dataManager
.
GetSysString
(
1362
));
btnReplayCancel
=
env
->
addButton
(
rect
<
s32
>
(
470
,
385
,
570
,
410
),
wReplay
,
BUTTON_CANCEL_REPLAY
,
dataManager
.
GetSysString
(
1347
));
env
->
addStaticText
(
dataManager
.
GetSysString
(
1349
),
rect
<
s32
>
(
360
,
30
,
570
,
50
),
false
,
true
,
wReplay
);
env
->
addStaticText
(
dataManager
.
GetSysString
(
1349
),
rect
<
s32
>
(
360
,
30
,
570
,
50
),
false
,
true
,
wReplay
);
stReplayInfo
=
env
->
addStaticText
(
L""
,
rect
<
s32
>
(
360
,
60
,
570
,
350
),
false
,
true
,
wReplay
);
stReplayInfo
=
env
->
addStaticText
(
L""
,
rect
<
s32
>
(
360
,
60
,
570
,
350
),
false
,
true
,
wReplay
);
env
->
addStaticText
(
dataManager
.
GetSysString
(
1353
),
rect
<
s32
>
(
360
,
275
,
570
,
295
),
false
,
true
,
wReplay
);
env
->
addStaticText
(
dataManager
.
GetSysString
(
1353
),
rect
<
s32
>
(
360
,
275
,
570
,
295
),
false
,
true
,
wReplay
);
...
...
gframe/game.h
View file @
5c106955
...
@@ -67,6 +67,7 @@ struct DuelInfo {
...
@@ -67,6 +67,7 @@ struct DuelInfo {
unsigned
char
time_player
;
unsigned
char
time_player
;
unsigned
short
time_limit
;
unsigned
short
time_limit
;
unsigned
short
time_left
[
2
];
unsigned
short
time_left
[
2
];
bool
isReplaySwapped
;
};
};
struct
BotInfo
{
struct
BotInfo
{
...
@@ -284,6 +285,8 @@ public:
...
@@ -284,6 +285,8 @@ public:
irr
::
gui
::
IGUIListBox
*
lstReplayList
;
irr
::
gui
::
IGUIListBox
*
lstReplayList
;
irr
::
gui
::
IGUIStaticText
*
stReplayInfo
;
irr
::
gui
::
IGUIStaticText
*
stReplayInfo
;
irr
::
gui
::
IGUIButton
*
btnLoadReplay
;
irr
::
gui
::
IGUIButton
*
btnLoadReplay
;
irr
::
gui
::
IGUIButton
*
btnDeleteReplay
;
irr
::
gui
::
IGUIButton
*
btnRenameReplay
;
irr
::
gui
::
IGUIButton
*
btnReplayCancel
;
irr
::
gui
::
IGUIButton
*
btnReplayCancel
;
irr
::
gui
::
IGUIEditBox
*
ebRepStartTurn
;
irr
::
gui
::
IGUIEditBox
*
ebRepStartTurn
;
//single play
//single play
...
@@ -498,6 +501,8 @@ extern Game* mainGame;
...
@@ -498,6 +501,8 @@ extern Game* mainGame;
#define LISTBOX_REPLAY_LIST 130
#define LISTBOX_REPLAY_LIST 130
#define BUTTON_LOAD_REPLAY 131
#define BUTTON_LOAD_REPLAY 131
#define BUTTON_CANCEL_REPLAY 132
#define BUTTON_CANCEL_REPLAY 132
#define BUTTON_DELETE_REPLAY 133
#define BUTTON_RENAME_REPLAY 134
#define EDITBOX_CHAT 140
#define EDITBOX_CHAT 140
#define BUTTON_MSG_OK 200
#define BUTTON_MSG_OK 200
#define BUTTON_YES 201
#define BUTTON_YES 201
...
...
gframe/gframe.cpp
View file @
5c106955
...
@@ -78,6 +78,7 @@ int main(int argc, char* argv[]) {
...
@@ -78,6 +78,7 @@ int main(int argc, char* argv[]) {
char
param
[
128
];
char
param
[
128
];
GetParameter
(
param
,
&
argv
[
i
][
2
]);
GetParameter
(
param
,
&
argv
[
i
][
2
]);
ygo
::
dataManager
.
LoadDB
(
param
);
ygo
::
dataManager
.
LoadDB
(
param
);
continue
;
}
}
if
(
!
strcmp
(
argv
[
i
],
"-e"
))
{
// extra database
if
(
!
strcmp
(
argv
[
i
],
"-e"
))
{
// extra database
++
i
;
++
i
;
...
@@ -156,6 +157,23 @@ int main(int argc, char* argv[]) {
...
@@ -156,6 +157,23 @@ int main(int argc, char* argv[]) {
if
(
open_file
)
if
(
open_file
)
ClickButton
(
ygo
::
mainGame
->
btnLoadSinglePlay
);
ClickButton
(
ygo
::
mainGame
->
btnLoadSinglePlay
);
break
;
break
;
}
else
if
(
argc
==
2
&&
strlen
(
argv
[
1
])
>=
4
)
{
char
*
pstrext
=
argv
[
1
]
+
strlen
(
argv
[
1
])
-
4
;
if
(
!
mystrncasecmp
(
pstrext
,
".ydk"
,
4
))
{
open_file
=
true
;
GetParameterW
(
open_file_name
,
&
argv
[
1
][
0
]);
exit_on_return
=
!
keep_on_return
;
ClickButton
(
ygo
::
mainGame
->
btnDeckEdit
);
break
;
}
if
(
!
mystrncasecmp
(
pstrext
,
".yrp"
,
4
))
{
open_file
=
true
;
GetParameterW
(
open_file_name
,
&
argv
[
1
][
0
]);
exit_on_return
=
!
keep_on_return
;
ClickButton
(
ygo
::
mainGame
->
btnReplayMode
);
ClickButton
(
ygo
::
mainGame
->
btnLoadReplay
);
break
;
}
}
}
}
}
ygo
::
mainGame
->
MainLoop
();
ygo
::
mainGame
->
MainLoop
();
...
...
gframe/menu_handler.cpp
View file @
5c106955
...
@@ -30,6 +30,14 @@ bool MenuHandler::OnEvent(const irr::SEvent& event) {
...
@@ -30,6 +30,14 @@ bool MenuHandler::OnEvent(const irr::SEvent& event) {
case
irr
:
:
EET_GUI_EVENT
:
{
case
irr
:
:
EET_GUI_EVENT
:
{
irr
::
gui
::
IGUIElement
*
caller
=
event
.
GUIEvent
.
Caller
;
irr
::
gui
::
IGUIElement
*
caller
=
event
.
GUIEvent
.
Caller
;
s32
id
=
caller
->
getID
();
s32
id
=
caller
->
getID
();
if
(
mainGame
->
wQuery
->
isVisible
()
&&
id
!=
BUTTON_YES
&&
id
!=
BUTTON_NO
)
{
mainGame
->
wQuery
->
getParent
()
->
bringToFront
(
mainGame
->
wQuery
);
break
;
}
if
(
mainGame
->
wReplaySave
->
isVisible
()
&&
id
!=
BUTTON_REPLAY_SAVE
&&
id
!=
BUTTON_REPLAY_CANCEL
)
{
mainGame
->
wReplaySave
->
getParent
()
->
bringToFront
(
mainGame
->
wReplaySave
);
break
;
}
switch
(
event
.
GUIEvent
.
EventType
)
{
switch
(
event
.
GUIEvent
.
EventType
)
{
case
irr
:
:
gui
::
EGET_BUTTON_CLICKED
:
{
case
irr
:
:
gui
::
EGET_BUTTON_CLICKED
:
{
switch
(
id
)
{
switch
(
id
)
{
...
@@ -185,6 +193,7 @@ bool MenuHandler::OnEvent(const irr::SEvent& event) {
...
@@ -185,6 +193,7 @@ bool MenuHandler::OnEvent(const irr::SEvent& event) {
mainGame
->
HideElement
(
mainGame
->
wMainMenu
);
mainGame
->
HideElement
(
mainGame
->
wMainMenu
);
mainGame
->
ShowElement
(
mainGame
->
wReplay
);
mainGame
->
ShowElement
(
mainGame
->
wReplay
);
mainGame
->
ebRepStartTurn
->
setText
(
L"1"
);
mainGame
->
ebRepStartTurn
->
setText
(
L"1"
);
mainGame
->
stReplayInfo
->
setText
(
L""
);
mainGame
->
RefreshReplay
();
mainGame
->
RefreshReplay
();
break
;
break
;
}
}
...
@@ -230,6 +239,33 @@ bool MenuHandler::OnEvent(const irr::SEvent& event) {
...
@@ -230,6 +239,33 @@ bool MenuHandler::OnEvent(const irr::SEvent& event) {
ReplayMode
::
StartReplay
(
start_turn
);
ReplayMode
::
StartReplay
(
start_turn
);
break
;
break
;
}
}
case
BUTTON_DELETE_REPLAY
:
{
int
sel
=
mainGame
->
lstReplayList
->
getSelected
();
if
(
sel
==
-
1
)
break
;
mainGame
->
gMutex
.
Lock
();
wchar_t
textBuffer
[
256
];
myswprintf
(
textBuffer
,
L"%ls
\n
%ls"
,
mainGame
->
lstReplayList
->
getListItem
(
sel
),
dataManager
.
GetSysString
(
1363
));
mainGame
->
SetStaticText
(
mainGame
->
stQMessage
,
310
,
mainGame
->
textFont
,
(
wchar_t
*
)
textBuffer
);
mainGame
->
PopupElement
(
mainGame
->
wQuery
);
mainGame
->
gMutex
.
Unlock
();
prev_operation
=
id
;
prev_sel
=
sel
;
break
;
}
case
BUTTON_RENAME_REPLAY
:
{
int
sel
=
mainGame
->
lstReplayList
->
getSelected
();
if
(
sel
==
-
1
)
break
;
mainGame
->
gMutex
.
Lock
();
mainGame
->
wReplaySave
->
setText
(
dataManager
.
GetSysString
(
1364
));
mainGame
->
ebRSName
->
setText
(
mainGame
->
lstReplayList
->
getListItem
(
sel
));
mainGame
->
PopupElement
(
mainGame
->
wReplaySave
);
mainGame
->
gMutex
.
Unlock
();
prev_operation
=
id
;
prev_sel
=
sel
;
break
;
}
case
BUTTON_CANCEL_REPLAY
:
{
case
BUTTON_CANCEL_REPLAY
:
{
mainGame
->
HideElement
(
mainGame
->
wReplay
);
mainGame
->
HideElement
(
mainGame
->
wReplay
);
mainGame
->
ShowElement
(
mainGame
->
wMainMenu
);
mainGame
->
ShowElement
(
mainGame
->
wMainMenu
);
...
@@ -331,6 +367,48 @@ bool MenuHandler::OnEvent(const irr::SEvent& event) {
...
@@ -331,6 +367,48 @@ bool MenuHandler::OnEvent(const irr::SEvent& event) {
mainGame
->
deckBuilder
.
Initialize
();
mainGame
->
deckBuilder
.
Initialize
();
break
;
break
;
}
}
case
BUTTON_YES
:
{
mainGame
->
HideElement
(
mainGame
->
wQuery
);
if
(
prev_operation
==
BUTTON_DELETE_REPLAY
)
{
if
(
Replay
::
DeleteReplay
(
mainGame
->
lstReplayList
->
getListItem
(
prev_sel
)))
{
mainGame
->
stReplayInfo
->
setText
(
L""
);
mainGame
->
lstReplayList
->
removeItem
(
prev_sel
);
}
}
prev_operation
=
0
;
prev_sel
=
-
1
;
break
;
}
case
BUTTON_NO
:
{
mainGame
->
HideElement
(
mainGame
->
wQuery
);
prev_operation
=
0
;
prev_sel
=
-
1
;
break
;
}
case
BUTTON_REPLAY_SAVE
:
{
mainGame
->
HideElement
(
mainGame
->
wReplaySave
);
if
(
prev_operation
==
BUTTON_RENAME_REPLAY
)
{
wchar_t
newname
[
256
];
BufferIO
::
CopyWStr
(
mainGame
->
ebRSName
->
getText
(),
newname
,
256
);
if
(
mywcsncasecmp
(
newname
+
wcslen
(
newname
)
-
4
,
L".yrp"
,
4
))
{
myswprintf
(
newname
,
L"%ls.yrp"
,
mainGame
->
ebRSName
->
getText
());
}
if
(
Replay
::
RenameReplay
(
mainGame
->
lstReplayList
->
getListItem
(
prev_sel
),
newname
))
{
mainGame
->
lstReplayList
->
setItem
(
prev_sel
,
newname
,
-
1
);
}
else
{
mainGame
->
env
->
addMessageBox
(
L""
,
dataManager
.
GetSysString
(
1365
));
}
}
prev_operation
=
0
;
prev_sel
=
-
1
;
break
;
}
case
BUTTON_REPLAY_CANCEL
:
{
mainGame
->
HideElement
(
mainGame
->
wReplaySave
);
prev_operation
=
0
;
prev_sel
=
-
1
;
break
;
}
}
}
break
;
break
;
}
}
...
...
gframe/menu_handler.h
View file @
5c106955
...
@@ -8,6 +8,8 @@ namespace ygo {
...
@@ -8,6 +8,8 @@ namespace ygo {
class
MenuHandler
:
public
irr
::
IEventReceiver
{
class
MenuHandler
:
public
irr
::
IEventReceiver
{
public:
public:
virtual
bool
OnEvent
(
const
irr
::
SEvent
&
event
);
virtual
bool
OnEvent
(
const
irr
::
SEvent
&
event
);
s32
prev_operation
;
int
prev_sel
;
};
};
...
...
gframe/replay.cpp
View file @
5c106955
...
@@ -192,6 +192,36 @@ bool Replay::CheckReplay(const wchar_t* name) {
...
@@ -192,6 +192,36 @@ bool Replay::CheckReplay(const wchar_t* name) {
fclose
(
rfp
);
fclose
(
rfp
);
return
rheader
.
id
==
0x31707279
&&
rheader
.
version
>=
0x12d0
;
return
rheader
.
id
==
0x31707279
&&
rheader
.
version
>=
0x12d0
;
}
}
bool
Replay
::
DeleteReplay
(
const
wchar_t
*
name
)
{
wchar_t
fname
[
256
];
myswprintf
(
fname
,
L"./replay/%ls"
,
name
);
#ifdef WIN32
BOOL
result
=
DeleteFileW
(
fname
);
return
!!
result
;
#else
char
filefn
[
256
];
BufferIO
::
EncodeUTF8
(
fname
,
filefn
);
int
result
=
unlink
(
filefn
);
return
result
==
0
;
#endif
}
bool
Replay
::
RenameReplay
(
const
wchar_t
*
oldname
,
const
wchar_t
*
newname
)
{
wchar_t
oldfname
[
256
];
wchar_t
newfname
[
256
];
myswprintf
(
oldfname
,
L"./replay/%ls"
,
oldname
);
myswprintf
(
newfname
,
L"./replay/%ls"
,
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
}
bool
Replay
::
ReadNextResponse
(
unsigned
char
resp
[
64
])
{
bool
Replay
::
ReadNextResponse
(
unsigned
char
resp
[
64
])
{
if
(
pdata
-
replay_data
>=
(
int
)
replay_size
)
if
(
pdata
-
replay_data
>=
(
int
)
replay_size
)
return
false
;
return
false
;
...
...
gframe/replay.h
View file @
5c106955
...
@@ -36,6 +36,8 @@ public:
...
@@ -36,6 +36,8 @@ public:
void
SaveReplay
(
const
wchar_t
*
name
);
void
SaveReplay
(
const
wchar_t
*
name
);
bool
OpenReplay
(
const
wchar_t
*
name
);
bool
OpenReplay
(
const
wchar_t
*
name
);
static
bool
CheckReplay
(
const
wchar_t
*
name
);
static
bool
CheckReplay
(
const
wchar_t
*
name
);
static
bool
DeleteReplay
(
const
wchar_t
*
name
);
static
bool
RenameReplay
(
const
wchar_t
*
oldname
,
const
wchar_t
*
newname
);
bool
ReadNextResponse
(
unsigned
char
resp
[
64
]);
bool
ReadNextResponse
(
unsigned
char
resp
[
64
]);
void
ReadName
(
wchar_t
*
data
);
void
ReadName
(
wchar_t
*
data
);
void
ReadHeader
(
ReplayHeader
&
header
);
void
ReadHeader
(
ReplayHeader
&
header
);
...
...
gframe/single_mode.cpp
View file @
5c106955
...
@@ -139,6 +139,7 @@ int SingleMode::SinglePlayThread(void* param) {
...
@@ -139,6 +139,7 @@ int SingleMode::SinglePlayThread(void* param) {
wchar_t
timetext
[
80
];
wchar_t
timetext
[
80
];
mbstowcs
(
timetext
,
timebuf
,
size
);
mbstowcs
(
timetext
,
timebuf
,
size
);
mainGame
->
ebRSName
->
setText
(
timetext
);
mainGame
->
ebRSName
->
setText
(
timetext
);
mainGame
->
wReplaySave
->
setText
(
dataManager
.
GetSysString
(
1340
));
mainGame
->
PopupElement
(
mainGame
->
wReplaySave
);
mainGame
->
PopupElement
(
mainGame
->
wReplaySave
);
mainGame
->
gMutex
.
Unlock
();
mainGame
->
gMutex
.
Unlock
();
mainGame
->
replaySignal
.
Reset
();
mainGame
->
replaySignal
.
Reset
();
...
...
lflist.conf
View file @
5c106955
This diff is collapsed.
Click to expand it.
ocgcore
@
35463ba4
Subproject commit
6a95742d22d570d40db3a2d2e8bcea44baede328
Subproject commit
35463ba465a0926f22f13340bb9d0fd5e5443e85
script
@
47a1517a
Subproject commit
95f03c0bb5ce45fee32ca157dd63d4f6c22e0e9c
Subproject commit
47a1517ad08adc9ef37933cc2388b57d38ab277f
strings.conf
View file @
5c106955
...
@@ -49,6 +49,7 @@
...
@@ -49,6 +49,7 @@
!
system
95
是否使用[%
ls
]的效果?
!
system
95
是否使用[%
ls
]的效果?
!
system
96
是否使用[%
ls
]的效果代替破坏?
!
system
96
是否使用[%
ls
]的效果代替破坏?
!
system
97
是否把[%
ls
]在魔法与陷阱区域放置?
!
system
97
是否把[%
ls
]在魔法与陷阱区域放置?
!
system
98
是否要解放对方怪兽?
!
system
100
先攻
!
system
100
先攻
!
system
101
后攻
!
system
101
后攻
!
system
200
是否在[%
ls
]发动[%
ls
]的效果?
!
system
200
是否在[%
ls
]发动[%
ls
]的效果?
...
@@ -368,6 +369,11 @@
...
@@ -368,6 +369,11 @@
!
system
1357
不提示保留对卡组的修改
!
system
1357
不提示保留对卡组的修改
!
system
1358
键入关键字后自动进行搜索
!
system
1358
键入关键字后自动进行搜索
!
system
1360
上一步
!
system
1360
上一步
!
system
1361
删除录像
!
system
1362
重命名
!
system
1363
是否删除这个录像?
!
system
1364
重命名录像
!
system
1365
重命名失败,可能存在同名文件
!
system
1370
星数↑
!
system
1370
星数↑
!
system
1371
攻击↑
!
system
1371
攻击↑
!
system
1372
守备↑
!
system
1372
守备↑
...
@@ -879,3 +885,6 @@
...
@@ -879,3 +885,6 @@
!
setname
0
x111
武装龙 アームド・ドラゴン
!
setname
0
x111
武装龙 アームド・ドラゴン
!
setname
0
x112
幻崩 トロイメア
!
setname
0
x112
幻崩 トロイメア
!
setname
0
x113
灵神 霊神
!
setname
0
x113
灵神 霊神
!
setname
0
x114
空牙团 空牙団
!
setname
0
x115
闪刀 閃刀
!
setname
0
x1115
闪刀姬 閃刀姫
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