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
Commits
2fa138f1
Commit
2fa138f1
authored
Dec 31, 2016
by
DailyShana
Browse files
Options
Browse Files
Download
Plain Diff
Merge #1900
parents
9449eec5
f35ecc7d
Changes
9
Show whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
172 additions
and
72 deletions
+172
-72
gframe/config.h
gframe/config.h
+2
-0
gframe/deck_con.cpp
gframe/deck_con.cpp
+2
-1
gframe/deck_manager.cpp
gframe/deck_manager.cpp
+18
-17
gframe/deck_manager.h
gframe/deck_manager.h
+1
-0
gframe/gframe.cpp
gframe/gframe.cpp
+83
-38
gframe/menu_handler.cpp
gframe/menu_handler.cpp
+37
-6
gframe/replay.cpp
gframe/replay.cpp
+15
-6
gframe/replay_mode.cpp
gframe/replay_mode.cpp
+2
-0
gframe/single_mode.cpp
gframe/single_mode.cpp
+12
-4
No files found.
gframe/config.h
View file @
2fa138f1
...
...
@@ -73,5 +73,7 @@ using namespace gui;
extern
const
unsigned
short
PRO_VERSION
;
extern
int
enable_log
;
extern
bool
exit_on_return
;
extern
bool
open_file
;
extern
wchar_t
open_file_name
[
256
];
#endif
gframe/deck_con.cpp
View file @
2fa138f1
...
...
@@ -88,7 +88,8 @@ bool DeckBuilder::OnEvent(const irr::SEvent& event) {
break
;
}
case
BUTTON_SAVE_DECK
:
{
if
(
deckManager
.
SaveDeck
(
deckManager
.
current_deck
,
mainGame
->
cbDBDecks
->
getItem
(
mainGame
->
cbDBDecks
->
getSelected
())))
{
int
sel
=
mainGame
->
cbDBDecks
->
getSelected
();
if
(
sel
>-
1
&&
deckManager
.
SaveDeck
(
deckManager
.
current_deck
,
mainGame
->
cbDBDecks
->
getItem
(
sel
)))
{
mainGame
->
stACMessage
->
setText
(
dataManager
.
GetSysString
(
1335
));
mainGame
->
PopupElement
(
mainGame
->
wACMessage
,
20
);
}
...
...
gframe/deck_manager.cpp
View file @
2fa138f1
...
...
@@ -168,21 +168,28 @@ bool DeckManager::LoadSide(Deck& deck, int* dbuf, int mainc, int sidec) {
deck
=
ndeck
;
return
true
;
}
bool
DeckManager
::
LoadDeck
(
const
wchar_t
*
file
)
{
int
sp
=
0
,
ct
=
0
,
mainc
=
0
,
sidec
=
0
,
code
;
wchar_t
deck
[
64
];
myswprintf
(
deck
,
L"./deck/%ls.ydk"
,
file
);
int
cardlist
[
128
];
bool
is_side
=
false
;
FILE
*
DeckManager
::
OpenDeckFile
(
const
wchar_t
*
file
,
const
char
*
mode
)
{
#ifdef WIN32
FILE
*
fp
=
_wfopen
(
deck
,
L"r"
);
FILE
*
fp
=
_wfopen
(
file
,
(
wchar_t
*
)
mode
);
#else
char
deckfn
[
256
];
BufferIO
::
EncodeUTF8
(
deck
,
deckfn
);
FILE
*
fp
=
fopen
(
deckfn
,
"r"
);
char
file2
[
256
];
BufferIO
::
EncodeUTF8
(
file
,
file2
);
FILE
*
fp
=
fopen
(
file2
,
mode
);
#endif
return
fp
;
}
bool
DeckManager
::
LoadDeck
(
const
wchar_t
*
file
)
{
int
sp
=
0
,
ct
=
0
,
mainc
=
0
,
sidec
=
0
,
code
;
wchar_t
localfile
[
64
];
myswprintf
(
localfile
,
L"./deck/%ls.ydk"
,
file
);
FILE
*
fp
=
OpenDeckFile
(
localfile
,
"r"
);
if
(
!
fp
)
{
fp
=
OpenDeckFile
(
file
,
"r"
);
}
if
(
!
fp
)
return
false
;
int
cardlist
[
128
];
bool
is_side
=
false
;
char
linebuf
[
256
];
fseek
(
fp
,
0
,
SEEK_END
);
int
fsize
=
ftell
(
fp
);
...
...
@@ -211,13 +218,7 @@ bool DeckManager::LoadDeck(const wchar_t* file) {
bool
DeckManager
::
SaveDeck
(
Deck
&
deck
,
const
wchar_t
*
name
)
{
wchar_t
file
[
64
];
myswprintf
(
file
,
L"./deck/%ls.ydk"
,
name
);
#ifdef WIN32
FILE
*
fp
=
_wfopen
(
file
,
L"w"
);
#else
char
filefn
[
256
];
BufferIO
::
EncodeUTF8
(
file
,
filefn
);
FILE
*
fp
=
fopen
(
filefn
,
"w"
);
#endif
FILE
*
fp
=
OpenDeckFile
(
file
,
"w"
);
if
(
!
fp
)
return
false
;
fprintf
(
fp
,
"#created by ...
\n
#main
\n
"
);
...
...
gframe/deck_manager.h
View file @
2fa138f1
...
...
@@ -40,6 +40,7 @@ public:
int
CheckLFList
(
Deck
&
deck
,
int
lfhash
,
bool
allow_ocg
,
bool
allow_tcg
);
void
LoadDeck
(
Deck
&
deck
,
int
*
dbuf
,
int
mainc
,
int
sidec
);
bool
LoadSide
(
Deck
&
deck
,
int
*
dbuf
,
int
mainc
,
int
sidec
);
FILE
*
OpenDeckFile
(
const
wchar_t
*
file
,
const
char
*
mode
);
bool
LoadDeck
(
const
wchar_t
*
file
);
bool
SaveDeck
(
Deck
&
deck
,
const
wchar_t
*
name
);
bool
DeleteDeck
(
Deck
&
deck
,
const
wchar_t
*
name
);
...
...
gframe/gframe.cpp
View file @
2fa138f1
...
...
@@ -5,6 +5,34 @@
int
enable_log
=
0
;
bool
exit_on_return
=
false
;
bool
open_file
=
false
;
wchar_t
open_file_name
[
256
]
=
L""
;
void
GetParameter
(
char
*
param
,
const
char
*
arg
)
{
#ifdef _WIN32
wchar_t
arg1
[
260
];
MultiByteToWideChar
(
CP_ACP
,
0
,
arg
,
-
1
,
arg1
,
260
);
BufferIO
::
EncodeUTF8
(
arg1
,
param
);
#else
strcpy
(
param
,
arg1
);
#endif
}
void
GetParameterW
(
wchar_t
*
param
,
const
char
*
arg
)
{
#ifdef _WIN32
MultiByteToWideChar
(
CP_ACP
,
0
,
arg
,
-
1
,
param
,
260
);
#else
BufferIO
::
DecodeUTF8
(
arg
,
param
);
#endif
}
void
ClickButton
(
irr
::
gui
::
IGUIElement
*
btn
)
{
irr
::
SEvent
event
;
event
.
EventType
=
irr
::
EET_GUI_EVENT
;
event
.
GUIEvent
.
EventType
=
irr
::
gui
::
EGET_BUTTON_CLICKED
;
event
.
GUIEvent
.
Caller
=
btn
;
ygo
::
mainGame
->
device
->
postEventFromUser
(
event
);
}
int
main
(
int
argc
,
char
*
argv
[])
{
#ifdef _WIN32
...
...
@@ -22,47 +50,64 @@ int main(int argc, char* argv[]) {
return
0
;
for
(
int
i
=
1
;
i
<
argc
;
++
i
)
{
/*command line args:
* -j: join host (host info from system.conf)
* -d: deck edit
* -r: replay */
if
(
argv
[
i
][
0
]
==
'-'
&&
argv
[
i
][
1
]
==
'e'
)
{
#ifdef _WIN32
wchar_t
fname
[
260
];
MultiByteToWideChar
(
CP_ACP
,
0
,
&
argv
[
i
][
2
],
-
1
,
fname
,
260
);
char
fname2
[
260
];
BufferIO
::
EncodeUTF8
(
fname
,
fname2
);
ygo
::
dataManager
.
LoadDB
(
fname2
);
#else
ygo
::
dataManager
.
LoadDB
(
&
argv
[
i
][
2
]);
#endif
}
else
if
(
!
strcmp
(
argv
[
i
],
"-j"
)
||
!
strcmp
(
argv
[
i
],
"-d"
)
||
!
strcmp
(
argv
[
i
],
"-r"
)
||
!
strcmp
(
argv
[
i
],
"-s"
))
{
if
(
!
strcmp
(
argv
[
i
],
"-e"
))
{
// extra database
++
i
;
char
param
[
128
];
GetParameter
(
param
,
&
argv
[
i
][
0
]);
ygo
::
dataManager
.
LoadDB
(
param
);
}
else
if
(
!
strcmp
(
argv
[
i
],
"-n"
))
{
// nickName
++
i
;
wchar_t
param
[
128
];
GetParameterW
(
param
,
&
argv
[
i
][
0
]);
ygo
::
mainGame
->
ebNickName
->
setText
(
param
);
}
else
if
(
!
strcmp
(
argv
[
i
],
"-h"
))
{
// Host address
++
i
;
wchar_t
param
[
128
];
GetParameterW
(
param
,
&
argv
[
i
][
0
]);
ygo
::
mainGame
->
ebJoinIP
->
setText
(
param
);
}
else
if
(
!
strcmp
(
argv
[
i
],
"-p"
))
{
// host Port
++
i
;
wchar_t
param
[
128
];
GetParameterW
(
param
,
&
argv
[
i
][
0
]);
ygo
::
mainGame
->
ebJoinPort
->
setText
(
param
);
}
else
if
(
!
strcmp
(
argv
[
i
],
"-w"
))
{
// host passWord
++
i
;
wchar_t
param
[
128
];
GetParameterW
(
param
,
&
argv
[
i
][
0
]);
ygo
::
mainGame
->
ebJoinPass
->
setText
(
param
);
}
else
if
(
!
strcmp
(
argv
[
i
],
"-x"
))
{
// eXit on return
exit_on_return
=
true
;
irr
::
SEvent
event
;
event
.
EventType
=
irr
::
EET_GUI_EVENT
;
event
.
GUIEvent
.
EventType
=
irr
::
gui
::
EGET_BUTTON_CLICKED
;
if
(
!
strcmp
(
argv
[
i
],
"-j"
))
{
ygo
::
mainGame
->
HideElement
(
ygo
::
mainGame
->
wMainMenu
);
event
.
GUIEvent
.
Caller
=
ygo
::
mainGame
->
btnJoinHost
;
ygo
::
mainGame
->
device
->
postEventFromUser
(
event
);
}
else
if
(
!
strcmp
(
argv
[
i
],
"-d"
))
{
event
.
GUIEvent
.
Caller
=
ygo
::
mainGame
->
btnDeckEdit
;
ygo
::
mainGame
->
device
->
postEventFromUser
(
event
);
}
else
if
(
!
strcmp
(
argv
[
i
],
"-r"
))
{
event
.
GUIEvent
.
Caller
=
ygo
::
mainGame
->
btnReplayMode
;
ygo
::
mainGame
->
device
->
postEventFromUser
(
event
);
ygo
::
mainGame
->
lstReplayList
->
setSelected
(
0
);
event
.
GUIEvent
.
Caller
=
ygo
::
mainGame
->
btnLoadReplay
;
ygo
::
mainGame
->
device
->
postEventFromUser
(
event
);
}
else
if
(
!
strcmp
(
argv
[
i
],
"-s"
))
{
event
.
GUIEvent
.
Caller
=
ygo
::
mainGame
->
btnServerMode
;
ygo
::
mainGame
->
device
->
postEventFromUser
(
event
);
ygo
::
mainGame
->
lstSinglePlayList
->
setSelected
(
0
);
event
.
GUIEvent
.
Caller
=
ygo
::
mainGame
->
btnLoadSinglePlay
;
ygo
::
mainGame
->
device
->
postEventFromUser
(
event
);
}
else
if
(
!
strcmp
(
argv
[
i
],
"-j"
))
{
// Join host
ClickButton
(
ygo
::
mainGame
->
btnLanMode
);
ClickButton
(
ygo
::
mainGame
->
btnJoinHost
);
break
;
}
else
if
(
!
strcmp
(
argv
[
i
],
"-d"
))
{
// Deck
if
(
i
<
argc
)
{
open_file
=
true
;
GetParameterW
(
open_file_name
,
&
argv
[
i
+
1
][
0
]);
}
ClickButton
(
ygo
::
mainGame
->
btnDeckEdit
);
break
;
}
else
if
(
!
strcmp
(
argv
[
i
],
"-r"
))
{
// Replay
if
(
i
<
argc
)
{
open_file
=
true
;
GetParameterW
(
open_file_name
,
&
argv
[
i
+
1
][
0
]);
}
ClickButton
(
ygo
::
mainGame
->
btnReplayMode
);
if
(
open_file
)
ClickButton
(
ygo
::
mainGame
->
btnLoadReplay
);
break
;
}
else
if
(
!
strcmp
(
argv
[
i
],
"-s"
))
{
// Single
if
(
i
<
argc
)
{
open_file
=
true
;
GetParameterW
(
open_file_name
,
&
argv
[
i
+
1
][
0
]);
}
ClickButton
(
ygo
::
mainGame
->
btnServerMode
);
if
(
open_file
)
ClickButton
(
ygo
::
mainGame
->
btnLoadSinglePlay
);
break
;
}
}
ygo
::
mainGame
->
MainLoop
();
#ifdef _WIN32
...
...
gframe/menu_handler.cpp
View file @
2fa138f1
...
...
@@ -74,6 +74,8 @@ bool MenuHandler::OnEvent(const irr::SEvent& event) {
case
BUTTON_JOIN_CANCEL
:
{
mainGame
->
HideElement
(
mainGame
->
wLanWindow
);
mainGame
->
ShowElement
(
mainGame
->
wMainMenu
);
if
(
exit_on_return
)
mainGame
->
device
->
closeDevice
();
break
;
}
case
BUTTON_LAN_REFRESH
:
{
...
...
@@ -160,10 +162,15 @@ bool MenuHandler::OnEvent(const irr::SEvent& event) {
break
;
}
case
BUTTON_LOAD_REPLAY
:
{
if
(
open_file
)
{
ReplayMode
::
cur_replay
.
OpenReplay
(
open_file_name
);
open_file
=
false
;
}
else
{
if
(
mainGame
->
lstReplayList
->
getSelected
()
==
-
1
)
break
;
if
(
!
ReplayMode
::
cur_replay
.
OpenReplay
(
mainGame
->
lstReplayList
->
getListItem
(
mainGame
->
lstReplayList
->
getSelected
())))
break
;
}
mainGame
->
imgCard
->
setImage
(
imageManager
.
tCover
[
0
]);
mainGame
->
wCardImg
->
setVisible
(
true
);
mainGame
->
wInfos
->
setVisible
(
true
);
...
...
@@ -198,7 +205,7 @@ bool MenuHandler::OnEvent(const irr::SEvent& event) {
break
;
}
case
BUTTON_LOAD_SINGLEPLAY
:
{
if
(
mainGame
->
lstSinglePlayList
->
getSelected
()
==
-
1
)
if
(
!
open_file
&&
mainGame
->
lstSinglePlayList
->
getSelected
()
==
-
1
)
break
;
mainGame
->
singleSignal
.
SetNoWait
(
false
);
SingleMode
::
StartPlay
();
...
...
@@ -211,8 +218,32 @@ bool MenuHandler::OnEvent(const irr::SEvent& event) {
}
case
BUTTON_DECK_EDIT
:
{
mainGame
->
RefreshDeck
(
mainGame
->
cbDBDecks
);
if
(
mainGame
->
cbDBDecks
->
getSelected
()
!=
-
1
)
if
(
open_file
&&
deckManager
.
LoadDeck
(
open_file_name
))
{
#ifdef WIN32
wchar_t
*
dash
=
wcsrchr
(
open_file_name
,
L'\\'
);
#else
wchar_t
*
dash
=
wcsrchr
(
open_file_name
,
L'/'
);
#endif
wchar_t
*
dot
=
wcsrchr
(
open_file_name
,
L'.'
);
if
(
dash
&&
dot
)
{
wchar_t
deck_name
[
256
];
wcsncpy
(
deck_name
,
dash
+
1
,
dot
-
dash
-
1
);
deck_name
[
dot
-
dash
-
1
]
=
L'\0'
;
mainGame
->
ebDeckname
->
setText
(
deck_name
);
mainGame
->
cbDBDecks
->
setSelected
(
-
1
);
}
else
{
for
(
size_t
i
=
0
;
i
<
mainGame
->
cbDBDecks
->
getItemCount
();
++
i
)
{
if
(
!
wcscmp
(
mainGame
->
cbDBDecks
->
getItem
(
i
),
open_file_name
))
{
mainGame
->
cbDBDecks
->
setSelected
(
i
);
break
;
}
}
}
open_file
=
false
;
}
else
if
(
mainGame
->
cbDBDecks
->
getSelected
()
!=
-
1
)
{
deckManager
.
LoadDeck
(
mainGame
->
cbDBDecks
->
getItem
(
mainGame
->
cbDBDecks
->
getSelected
()));
mainGame
->
ebDeckname
->
setText
(
L""
);
}
mainGame
->
HideElement
(
mainGame
->
wMainMenu
);
mainGame
->
is_building
=
true
;
mainGame
->
is_siding
=
false
;
...
...
gframe/replay.cpp
View file @
2fa138f1
...
...
@@ -139,6 +139,14 @@ void Replay::SaveReplay(const wchar_t* name) {
fclose
(
fp
);
}
bool
Replay
::
OpenReplay
(
const
wchar_t
*
name
)
{
#ifdef WIN32
fp
=
_wfopen
(
name
,
L"rb"
);
#else
char
name2
[
256
];
BufferIO
::
EncodeUTF8
(
name
,
name2
);
fp
=
fopen
(
name2
,
"rb"
);
#endif
if
(
!
fp
)
{
wchar_t
fname
[
256
];
myswprintf
(
fname
,
L"./replay/%ls"
,
name
);
#ifdef WIN32
...
...
@@ -148,6 +156,7 @@ bool Replay::OpenReplay(const wchar_t* name) {
BufferIO
::
EncodeUTF8
(
fname
,
fname2
);
fp
=
fopen
(
fname2
,
"rb"
);
#endif
}
if
(
!
fp
)
return
false
;
fseek
(
fp
,
0
,
SEEK_END
);
...
...
gframe/replay_mode.cpp
View file @
2fa138f1
...
...
@@ -185,6 +185,8 @@ int ReplayMode::ReplayThread(void* param) {
mainGame
->
ShowElement
(
mainGame
->
wReplay
);
mainGame
->
device
->
setEventReceiver
(
&
mainGame
->
menuHandler
);
mainGame
->
gMutex
.
Unlock
();
if
(
exit_on_return
)
mainGame
->
device
->
closeDevice
();
}
return
0
;
}
...
...
gframe/single_mode.cpp
View file @
2fa138f1
...
...
@@ -29,11 +29,17 @@ void SingleMode::SetResponse(unsigned char* resp) {
set_responseb
(
pduel
,
resp
);
}
int
SingleMode
::
SinglePlayThread
(
void
*
param
)
{
char
fname2
[
256
];
size_t
slen
;
if
(
open_file
)
{
slen
=
BufferIO
::
EncodeUTF8
(
open_file_name
,
fname2
);
open_file
=
false
;
}
else
{
const
wchar_t
*
name
=
mainGame
->
lstSinglePlayList
->
getListItem
(
mainGame
->
lstSinglePlayList
->
getSelected
());
wchar_t
fname
[
256
];
myswprintf
(
fname
,
L"./single/%ls"
,
name
);
char
fname2
[
256
]
;
size_t
slen
=
BufferIO
::
EncodeUTF8
(
fname
,
fname2
);
slen
=
BufferIO
::
EncodeUTF8
(
fname
,
fname2
)
;
}
mtrandom
rnd
;
time_t
seed
=
time
(
0
);
rnd
.
reset
(
seed
);
...
...
@@ -103,6 +109,8 @@ int SingleMode::SinglePlayThread(void* param) {
mainGame
->
ShowElement
(
mainGame
->
wSinglePlay
);
mainGame
->
device
->
setEventReceiver
(
&
mainGame
->
menuHandler
);
mainGame
->
gMutex
.
Unlock
();
if
(
exit_on_return
)
mainGame
->
device
->
closeDevice
();
}
return
0
;
}
...
...
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