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
wyykak
ygopro
Commits
d72fcfd2
Commit
d72fcfd2
authored
May 15, 2020
by
nanahira
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'side' of github.com:purerosefallen/ygopro-koishi into tmp-side
parents
bbdc8d3b
453fbaa4
Changes
6
Show whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
98 additions
and
10 deletions
+98
-10
gframe/deck_con.cpp
gframe/deck_con.cpp
+35
-2
gframe/deck_con.h
gframe/deck_con.h
+2
-0
gframe/duelclient.cpp
gframe/duelclient.cpp
+44
-8
gframe/game.cpp
gframe/game.cpp
+1
-0
gframe/game.h
gframe/game.h
+5
-0
gframe/replay.cpp
gframe/replay.cpp
+11
-0
No files found.
gframe/deck_con.cpp
View file @
d72fcfd2
...
...
@@ -125,6 +125,7 @@ inline void showDeckManage() {
void
DeckBuilder
::
Initialize
()
{
mainGame
->
is_building
=
true
;
mainGame
->
is_siding
=
false
;
mainGame
->
sidedeck_available
=
false
;
mainGame
->
ClearCardInfo
();
mainGame
->
wInfos
->
setVisible
(
true
);
mainGame
->
wCardImg
->
setVisible
(
true
);
...
...
@@ -736,6 +737,7 @@ bool DeckBuilder::OnEvent(const irr::SEvent& event) {
mainGame
->
env
->
addMessageBox
(
L""
,
dataManager
.
GetSysString
(
1410
));
break
;
}
mainGame
->
scrFilter
->
setVisible
(
false
);
mainGame
->
ClearCardInfo
();
char
deckbuf
[
1024
];
char
*
pdeck
=
deckbuf
;
...
...
@@ -1102,7 +1104,7 @@ bool DeckBuilder::OnEvent(const irr::SEvent& event) {
if
(
draging_pointer
==
dataManager
.
_datas
.
end
())
break
;
if
(
hovered_pos
==
4
)
{
if
(
!
check_limit
(
draging_pointer
))
if
(
!
check_limit
(
draging_pointer
)
||
mainGame
->
is_siding
)
break
;
}
is_starting_dragging
=
true
;
...
...
@@ -1137,7 +1139,7 @@ bool DeckBuilder::OnEvent(const irr::SEvent& event) {
if
(
mainGame
->
is_siding
)
{
if
(
is_draging
)
break
;
if
(
hovered_pos
==
0
||
hovered_seq
==
-
1
)
if
(
hovered_pos
==
0
||
hovered_seq
==
-
1
||
hovered_pos
==
4
)
break
;
auto
pointer
=
dataManager
.
GetCodePointer
(
hovered_code
);
if
(
pointer
==
dataManager
.
_datas
.
end
())
...
...
@@ -1744,4 +1746,35 @@ bool DeckBuilder::check_limit(code_pointer pointer) {
}
return
limit
>
0
;
}
void
DeckBuilder
::
LoadSideDeck
(
int
p
)
{
if
(
!
mainGame
->
sidedeck_available
)
{
myswprintf
(
result_string
,
L"%d"
,
-
1
);
return
;
}
for
(
int
i
=
0
;
i
<
mainGame
->
sidedeck_main
[
p
].
size
();
++
i
)
{
int
trycode
=
mainGame
->
sidedeck_main
[
p
][
i
];
if
(
dataManager
.
GetData
(
trycode
,
0
))
{
auto
ptr
=
dataManager
.
GetCodePointer
(
trycode
);
results
.
push_back
(
ptr
);
}
}
for
(
int
i
=
0
;
i
<
mainGame
->
sidedeck_extra
[
p
].
size
();
++
i
)
{
int
trycode
=
mainGame
->
sidedeck_extra
[
p
][
i
];
if
(
dataManager
.
GetData
(
trycode
,
0
))
{
auto
ptr
=
dataManager
.
GetCodePointer
(
trycode
);
results
.
push_back
(
ptr
);
}
}
if
(
results
.
size
()
>
7
)
{
mainGame
->
scrFilter
->
setVisible
(
true
);
mainGame
->
scrFilter
->
setMax
(
results
.
size
()
-
7
);
mainGame
->
scrFilter
->
setPos
(
0
);
}
else
{
mainGame
->
scrFilter
->
setVisible
(
false
);
mainGame
->
scrFilter
->
setPos
(
0
);
}
SortList
();
myswprintf
(
result_string
,
L"%d"
,
results
.
size
());
}
}
gframe/deck_con.h
View file @
d72fcfd2
...
...
@@ -30,6 +30,8 @@ public:
void
pop_extra
(
int
seq
);
void
pop_side
(
int
seq
);
bool
check_limit
(
code_pointer
pointer
);
//side deck
void
LoadSideDeck
(
int
p
);
long
long
filter_effect
;
unsigned
int
filter_type
;
...
...
gframe/duelclient.cpp
View file @
d72fcfd2
...
...
@@ -493,6 +493,7 @@ void DuelClient::HandleSTOCPacketLan(char* data, unsigned int len) {
mainGame
->
deckBuilder
.
pre_mainc
=
deckManager
.
current_deck
.
main
.
size
();
mainGame
->
deckBuilder
.
pre_extrac
=
deckManager
.
current_deck
.
extra
.
size
();
mainGame
->
deckBuilder
.
pre_sidec
=
deckManager
.
current_deck
.
side
.
size
();
mainGame
->
deckBuilder
.
LoadSideDeck
(
mainGame
->
LocalPlayer
(
1
));
mainGame
->
device
->
setEventReceiver
(
&
mainGame
->
deckBuilder
);
mainGame
->
gMutex
.
unlock
();
break
;
...
...
@@ -702,6 +703,7 @@ void DuelClient::HandleSTOCPacketLan(char* data, unsigned int len) {
mainGame
->
btnSideShuffle
->
setVisible
(
false
);
mainGame
->
btnSideSort
->
setVisible
(
false
);
mainGame
->
btnSideReload
->
setVisible
(
false
);
mainGame
->
scrFilter
->
setVisible
(
false
);
mainGame
->
btnPhaseStatus
->
setVisible
(
false
);
mainGame
->
btnBP
->
setVisible
(
false
);
mainGame
->
btnM2
->
setVisible
(
false
);
...
...
@@ -835,14 +837,42 @@ void DuelClient::HandleSTOCPacketLan(char* data, unsigned int len) {
mainGame
->
gMutex
.
unlock
();
mainGame
->
WaitFrameSignal
(
30
);
}
if
(
mainGame
->
actionParam
||
!
is_host
)
{
prep
+=
sizeof
(
ReplayHeader
);
memcpy
(
new_replay
.
comp_data
,
prep
,
len
-
sizeof
(
ReplayHeader
)
-
1
);
new_replay
.
comp_size
=
len
-
sizeof
(
ReplayHeader
)
-
1
;
if
(
mainGame
->
actionParam
)
new_replay
.
SaveReplay
(
mainGame
->
ebRSName
->
getText
());
else
new_replay
.
SaveReplay
(
L"_LastReplay"
);
}
const
wchar_t
*
save_name
=
mainGame
->
actionParam
?
mainGame
->
ebRSName
->
getText
()
:
L"auto_saved_replay"
;
new_replay
.
SaveReplay
(
save_name
);
//side deck
Replay
side_replay
;
if
(
!
side_replay
.
OpenReplay
(
save_name
))
break
;
if
(
!!
(
side_replay
.
pheader
.
flag
&
REPLAY_TAG
))
break
;
//skip player names
wchar_t
dark_hole
[
20
];
for
(
int
i
=
0
;
i
<
2
;
++
i
)
side_replay
.
ReadName
(
dark_hole
);
//skip pre infos
for
(
int
i
=
0
;
i
<
4
;
++
i
)
side_replay
.
ReadInt32
();
//clear deck
for
(
int
i
=
0
;
i
<
2
;
++
i
)
{
mainGame
->
sidedeck_main
[
i
].
clear
();
mainGame
->
sidedeck_extra
[
i
].
clear
();
}
int
main
=
side_replay
.
ReadInt32
();
for
(
int
i
=
0
;
i
<
main
;
++
i
)
mainGame
->
sidedeck_main
[
0
].
push_back
(
side_replay
.
ReadInt32
());
int
extra
=
side_replay
.
ReadInt32
();
for
(
int
i
=
0
;
i
<
extra
;
++
i
)
mainGame
->
sidedeck_extra
[
0
].
push_back
(
side_replay
.
ReadInt32
());
main
=
side_replay
.
ReadInt32
();
for
(
int
i
=
0
;
i
<
main
;
++
i
)
mainGame
->
sidedeck_main
[
1
].
push_back
(
side_replay
.
ReadInt32
());
extra
=
side_replay
.
ReadInt32
();
for
(
int
i
=
0
;
i
<
extra
;
++
i
)
mainGame
->
sidedeck_extra
[
1
].
push_back
(
side_replay
.
ReadInt32
());
mainGame
->
sidedeck_available
=
true
;
break
;
}
case
STOC_TIME_LIMIT
:
{
...
...
@@ -1339,6 +1369,12 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) {
mainGame
->
showcard
=
101
;
mainGame
->
WaitFrameSignal
(
40
);
mainGame
->
showcard
=
0
;
//clear side deck
mainGame
->
sidedeck_available
=
false
;
for
(
int
i
=
0
;
i
<
2
;
++
i
)
{
mainGame
->
sidedeck_main
[
i
].
clear
();
mainGame
->
sidedeck_extra
[
i
].
clear
();
}
mainGame
->
gMutex
.
lock
();
mainGame
->
dField
.
Clear
();
int
playertype
=
BufferIO
::
ReadInt8
(
pbuf
);
...
...
gframe/game.cpp
View file @
d72fcfd2
...
...
@@ -1928,6 +1928,7 @@ void Game::CloseDuelWindow() {
btnSideShuffle
->
setVisible
(
false
);
btnSideSort
->
setVisible
(
false
);
btnSideReload
->
setVisible
(
false
);
scrFilter
->
setVisible
(
false
);
btnLeaveGame
->
setVisible
(
false
);
btnSpectatorSwap
->
setVisible
(
false
);
btnChainIgnore
->
setVisible
(
false
);
...
...
gframe/game.h
View file @
d72fcfd2
...
...
@@ -226,6 +226,11 @@ public:
std
::
wstring
chatMsg
[
8
];
std
::
vector
<
BotInfo
>
botInfo
;
//deck view
std
::
vector
<
int
>
sidedeck_main
[
2
];
std
::
vector
<
int
>
sidedeck_extra
[
2
];
bool
sidedeck_available
;
int
hideChatTimer
;
bool
hideChat
;
int
chatTiming
[
8
];
...
...
gframe/replay.cpp
View file @
d72fcfd2
...
...
@@ -158,6 +158,17 @@ bool Replay::OpenReplay(const wchar_t* name) {
char
fname2
[
256
];
BufferIO
::
EncodeUTF8
(
fname
,
fname2
);
fp
=
fopen
(
fname2
,
"rb"
);
#endif
}
if
(
!
fp
)
{
wchar_t
fname
[
256
];
myswprintf
(
fname
,
L"./replay/%ls.yrp"
,
name
);
#ifdef WIN32
fp
=
_wfopen
(
fname
,
L"rb"
);
#else
char
fname2
[
256
];
BufferIO
::
EncodeUTF8
(
fname
,
fname2
);
fp
=
fopen
(
fname2
,
"rb"
);
#endif
}
if
(
!
fp
)
...
...
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