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
c4b5e990
Commit
c4b5e990
authored
Nov 28, 2016
by
edo9300
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
added double deck mode
parent
a440e683
Changes
10
Hide whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
162 additions
and
69 deletions
+162
-69
gframe/deck_con.cpp
gframe/deck_con.cpp
+0
-2
gframe/deck_manager.cpp
gframe/deck_manager.cpp
+99
-7
gframe/deck_manager.h
gframe/deck_manager.h
+3
-2
gframe/duelclient.cpp
gframe/duelclient.cpp
+24
-3
gframe/game.cpp
gframe/game.cpp
+3
-1
gframe/game.h
gframe/game.h
+2
-1
gframe/menu_handler.cpp
gframe/menu_handler.cpp
+20
-38
gframe/network.h
gframe/network.h
+1
-1
gframe/single_duel.cpp
gframe/single_duel.cpp
+5
-7
gframe/tag_duel.cpp
gframe/tag_duel.cpp
+5
-7
No files found.
gframe/deck_con.cpp
View file @
c4b5e990
...
...
@@ -945,8 +945,6 @@ bool DeckBuilder::CardNameCompare(const wchar_t *sa, const wchar_t *sb)
{
ca
=
towupper
(
sa
[
i
]);
cb
=
towupper
(
sb
[
j
]);
if
(
ca
==
'-'
)
ca
=
' '
;
if
(
cb
==
'-'
)
cb
=
' '
;
if
(
ca
==
cb
)
{
j
++
;
...
...
gframe/deck_manager.cpp
View file @
c4b5e990
...
...
@@ -75,7 +75,7 @@ int DeckManager::TypeCount(std::vector<code_pointer> cards, int type) {
}
return
count
;
}
int
DeckManager
::
CheckLFList
(
Deck
&
deck
,
int
lfhash
,
bool
allow_ocg
,
bool
allow_tcg
)
{
int
DeckManager
::
CheckLFList
(
Deck
&
deck
,
int
lfhash
,
bool
allow_ocg
,
bool
allow_tcg
,
bool
doubled
)
{
std
::
unordered_map
<
int
,
int
>
ccount
;
std
::
unordered_map
<
int
,
int
>*
list
=
0
;
for
(
size_t
i
=
0
;
i
<
_lfList
.
size
();
++
i
)
{
...
...
@@ -87,7 +87,8 @@ int DeckManager::CheckLFList(Deck& deck, int lfhash, bool allow_ocg, bool allow_
if
(
!
list
)
return
0
;
int
dc
=
0
;
if
(
deck
.
main
.
size
()
<
40
||
deck
.
main
.
size
()
>
60
||
deck
.
extra
.
size
()
>
15
||
deck
.
side
.
size
()
>
15
)
if
(
deck
.
main
.
size
()
<
40
||
(
!
doubled
&&
(
deck
.
main
.
size
()
>
60
||
deck
.
extra
.
size
()
>
15
||
deck
.
side
.
size
()
>
15
))
||
(
doubled
&&
(
deck
.
main
.
size
()
!=
100
||
deck
.
extra
.
size
()
>
30
||
deck
.
side
.
size
()
>
30
)))
return
1
;
for
(
size_t
i
=
0
;
i
<
deck
.
main
.
size
();
++
i
)
{
code_pointer
cit
=
deck
.
main
[
i
];
...
...
@@ -126,9 +127,12 @@ int DeckManager::CheckLFList(Deck& deck, int lfhash, bool allow_ocg, bool allow_
}
return
0
;
}
void
DeckManager
::
LoadDeck
(
Deck
&
deck
,
int
*
dbuf
,
int
mainc
,
int
sidec
)
{
void
DeckManager
::
LoadDeck
(
Deck
&
deck
,
int
*
dbuf
,
int
mainc
,
int
sidec
,
int
mainc2
,
int
sidec2
,
bool
doubled
)
{
deck
.
clear
();
int
code
;
int
d
=
1
;
if
(
doubled
)
d
=
2
;
CardData
cd
;
for
(
int
i
=
0
;
i
<
mainc
;
++
i
)
{
code
=
dbuf
[
i
];
...
...
@@ -136,9 +140,9 @@ void DeckManager::LoadDeck(Deck& deck, int* dbuf, int mainc, int sidec) {
continue
;
if
(
cd
.
type
&
TYPE_TOKEN
)
continue
;
else
if
(
cd
.
type
&
0x802040
&&
deck
.
extra
.
size
()
<
15
)
{
else
if
(
cd
.
type
&
0x802040
&&
deck
.
extra
.
size
()
<
15
*
d
)
{
deck
.
extra
.
push_back
(
dataManager
.
GetCodePointer
(
code
));
//verified by GetData()
}
else
if
(
deck
.
main
.
size
()
<
60
)
{
}
else
if
(
deck
.
main
.
size
()
<
60
*
d
)
{
deck
.
main
.
push_back
(
dataManager
.
GetCodePointer
(
code
));
}
}
...
...
@@ -148,7 +152,28 @@ void DeckManager::LoadDeck(Deck& deck, int* dbuf, int mainc, int sidec) {
continue
;
if
(
cd
.
type
&
TYPE_TOKEN
)
continue
;
if
(
deck
.
side
.
size
()
<
15
)
if
(
deck
.
side
.
size
()
<
15
*
d
)
deck
.
side
.
push_back
(
dataManager
.
GetCodePointer
(
code
));
//verified by GetData()
}
for
(
int
i
=
0
;
i
<
mainc2
;
++
i
)
{
code
=
dbuf
[
mainc
+
sidec
+
i
];
if
(
!
dataManager
.
GetData
(
code
,
&
cd
))
continue
;
if
(
cd
.
type
&
TYPE_TOKEN
)
continue
;
else
if
(
cd
.
type
&
0x802040
&&
deck
.
extra
.
size
()
<
30
)
{
deck
.
extra
.
push_back
(
dataManager
.
GetCodePointer
(
code
));
//verified by GetData()
}
else
if
(
deck
.
main
.
size
()
<
120
)
{
deck
.
main
.
push_back
(
dataManager
.
GetCodePointer
(
code
));
}
}
for
(
int
i
=
0
;
i
<
sidec2
;
++
i
)
{
code
=
dbuf
[
mainc
+
sidec
+
mainc2
+
i
];
if
(
!
dataManager
.
GetData
(
code
,
&
cd
))
continue
;
if
(
cd
.
type
&
TYPE_TOKEN
)
continue
;
if
(
deck
.
side
.
size
()
<
30
)
deck
.
side
.
push_back
(
dataManager
.
GetCodePointer
(
code
));
//verified by GetData()
}
}
...
...
@@ -162,7 +187,7 @@ bool DeckManager::LoadSide(Deck& deck, int* dbuf, int mainc, int sidec) {
for
(
size_t
i
=
0
;
i
<
deck
.
side
.
size
();
++
i
)
pcount
[
deck
.
side
[
i
]
->
first
]
++
;
Deck
ndeck
;
LoadDeck
(
ndeck
,
dbuf
,
mainc
,
sidec
);
LoadDeck
(
ndeck
,
dbuf
,
mainc
,
sidec
,
0
,
0
,
true
);
if
(
ndeck
.
main
.
size
()
!=
deck
.
main
.
size
()
||
ndeck
.
extra
.
size
()
!=
deck
.
extra
.
size
())
return
false
;
for
(
size_t
i
=
0
;
i
<
ndeck
.
main
.
size
();
++
i
)
...
...
@@ -217,6 +242,73 @@ bool DeckManager::LoadDeck(const wchar_t* file) {
LoadDeck
(
current_deck
,
cardlist
,
mainc
,
sidec
);
return
true
;
}
bool
DeckManager
::
LoadDeckDouble
(
const
wchar_t
*
file
,
const
wchar_t
*
file2
)
{
int
sp
=
0
,
ct
=
0
,
mainc
=
0
,
sidec
=
0
,
mainc2
=
0
,
sidec2
=
0
,
code
;
wchar_t
deck
[
64
];
wchar_t
deck2
[
64
];
myswprintf
(
deck
,
L"./deck/%ls.ydk"
,
file
);
myswprintf
(
deck2
,
L"./deck/%ls.ydk"
,
file2
);
int
cardlist
[
256
];
bool
is_side
=
false
;
#ifdef WIN32
FILE
*
fp
=
_wfopen
(
deck
,
L"r"
);
FILE
*
fp2
=
_wfopen
(
deck2
,
L"r"
);
#else
char
deckfn
[
256
];
BufferIO
::
EncodeUTF8
(
deck
,
deckfn
);
FILE
*
fp
=
fopen
(
deckfn
,
"r"
);
BufferIO
::
EncodeUTF8
(
deck2
,
deckfn
);
FILE
*
fp2
=
fopen
(
deckfn
,
"r"
);
#endif
if
(
!
fp
||
!
fp2
)
return
false
;
char
linebuf
[
256
];
fseek
(
fp
,
0
,
SEEK_END
);
int
fsize
=
ftell
(
fp
);
fseek
(
fp
,
0
,
SEEK_SET
);
fgets
(
linebuf
,
256
,
fp
);
while
(
ftell
(
fp
)
<
fsize
&&
ct
<
128
)
{
fgets
(
linebuf
,
256
,
fp
);
if
(
linebuf
[
0
]
==
'!'
)
{
is_side
=
true
;
continue
;
}
if
(
linebuf
[
0
]
<
'0'
||
linebuf
[
0
]
>
'9'
)
continue
;
sp
=
0
;
while
(
linebuf
[
sp
]
>=
'0'
&&
linebuf
[
sp
]
<=
'9'
)
sp
++
;
linebuf
[
sp
]
=
0
;
code
=
atoi
(
linebuf
);
cardlist
[
ct
++
]
=
code
;
if
(
is_side
)
sidec
++
;
else
mainc
++
;
}
fclose
(
fp
);
is_side
=
false
;
fseek
(
fp2
,
0
,
SEEK_END
);
int
fsize2
=
ftell
(
fp2
);
fseek
(
fp2
,
0
,
SEEK_SET
);
fgets
(
linebuf
,
256
,
fp2
);
while
(
ftell
(
fp2
)
<
fsize2
&&
ct
<
128
)
{
fgets
(
linebuf
,
256
,
fp2
);
if
(
linebuf
[
0
]
==
'!'
)
{
is_side
=
true
;
continue
;
}
if
(
linebuf
[
0
]
<
'0'
||
linebuf
[
0
]
>
'9'
)
continue
;
sp
=
0
;
while
(
linebuf
[
sp
]
>=
'0'
&&
linebuf
[
sp
]
<=
'9'
)
sp
++
;
linebuf
[
sp
]
=
0
;
code
=
atoi
(
linebuf
);
cardlist
[
ct
++
]
=
code
;
if
(
is_side
)
sidec2
++
;
else
mainc2
++
;
}
fclose
(
fp2
);
LoadDeck
(
current_deck
,
cardlist
,
mainc
,
sidec
,
mainc2
,
sidec2
);
return
true
;
}
bool
DeckManager
::
SaveDeck
(
Deck
&
deck
,
const
wchar_t
*
name
)
{
wchar_t
file
[
64
];
myswprintf
(
file
,
L"./deck/%ls.ydk"
,
name
);
...
...
gframe/deck_manager.h
View file @
c4b5e990
...
...
@@ -37,11 +37,12 @@ public:
void
LoadLFList
();
wchar_t
*
GetLFListName
(
int
lfhash
);
int
CheckLFList
(
Deck
&
deck
,
int
lfhash
,
bool
allow_ocg
,
bool
allow_tcg
);
int
CheckLFList
(
Deck
&
deck
,
int
lfhash
,
bool
allow_ocg
,
bool
allow_tcg
,
bool
doubled
);
int
TypeCount
(
std
::
vector
<
code_pointer
>
cards
,
int
type
);
void
LoadDeck
(
Deck
&
deck
,
int
*
dbuf
,
int
mainc
,
int
sidec
);
void
LoadDeck
(
Deck
&
deck
,
int
*
dbuf
,
int
mainc
,
int
sidec
,
int
mainc2
=
0
,
int
sidec2
=
0
,
bool
doubled
=
false
);
bool
LoadSide
(
Deck
&
deck
,
int
*
dbuf
,
int
mainc
,
int
sidec
);
bool
LoadDeck
(
const
wchar_t
*
file
);
bool
LoadDeckDouble
(
const
wchar_t
*
file
,
const
wchar_t
*
file2
);
bool
SaveDeck
(
Deck
&
deck
,
const
wchar_t
*
name
);
bool
DeleteDeck
(
Deck
&
deck
,
const
wchar_t
*
name
);
};
...
...
gframe/duelclient.cpp
View file @
c4b5e990
...
...
@@ -132,12 +132,12 @@ void DuelClient::ClientEvent(bufferevent *bev, short events, void *ctx) {
cscg
.
info
.
rose
=
mainGame
->
chkRules
[
8
]
->
isChecked
();
cscg
.
info
.
turbo1
=
mainGame
->
chkRules
[
9
]
->
isChecked
();
cscg
.
info
.
turbo2
=
mainGame
->
chkRules
[
10
]
->
isChecked
();
cscg
.
info
.
turbo3
=
mainGame
->
chkRules
[
11
]
->
isChecked
();
cscg
.
info
.
doubled
=
mainGame
->
chkRules
[
11
]
->
isChecked
();
cscg
.
info
.
command
=
mainGame
->
chkRules
[
12
]
->
isChecked
();
cscg
.
info
.
master
=
mainGame
->
chkRules
[
13
]
->
isChecked
();
cscg
.
info
.
rule_count
=
0
;
for
(
int
i
=
0
;
i
<
14
;
++
i
)
{
if
(
mainGame
->
chkRules
[
i
]
->
isChecked
())
if
(
mainGame
->
chkRules
[
i
]
->
isChecked
()
&&
i
!=
11
)
++
cscg
.
info
.
rule_count
;
}
cscg
.
info
.
no_check_deck
=
mainGame
->
chkNoCheckDeck
->
isChecked
();
...
...
@@ -245,6 +245,7 @@ void DuelClient::HandleSTOCPacketLan(char* data, unsigned int len) {
mainGame
->
env
->
addMessageBox
(
L""
,
msgbuf
);
}
mainGame
->
cbDeckSelect
->
setEnabled
(
true
);
mainGame
->
cbDeckSelect2
->
setEnabled
(
true
);
mainGame
->
gMutex
.
Unlock
();
break
;
}
...
...
@@ -410,7 +411,7 @@ void DuelClient::HandleSTOCPacketLan(char* data, unsigned int len) {
myswprintf
(
msgbuf
,
L"*%ls
\n
"
,
dataManager
.
GetSysString
(
1142
));
str2
.
append
(
msgbuf
);
}
if
(
pkt
->
info
.
turbo3
)
{
if
(
pkt
->
info
.
doubled
)
{
myswprintf
(
msgbuf
,
L"*%ls
\n
"
,
dataManager
.
GetSysString
(
1143
));
str2
.
append
(
msgbuf
);
}
...
...
@@ -455,7 +456,15 @@ void DuelClient::HandleSTOCPacketLan(char* data, unsigned int len) {
mainGame
->
SetStaticText
(
mainGame
->
stHostPrepRule
,
180
,
mainGame
->
guiFont
,
(
wchar_t
*
)
str
.
c_str
());
mainGame
->
SetStaticText
(
mainGame
->
stHostPrepRule2
,
180
,
mainGame
->
guiFont
,
(
wchar_t
*
)
str2
.
c_str
());
mainGame
->
RefreshDeck
(
mainGame
->
cbDeckSelect
);
mainGame
->
RefreshDeck
(
mainGame
->
cbDeckSelect2
);
mainGame
->
cbDeckSelect
->
setEnabled
(
true
);
if
(
pkt
->
info
.
doubled
)
{
mainGame
->
cbDeckSelect2
->
setVisible
(
true
);
mainGame
->
cbDeckSelect2
->
setEnabled
(
true
);
}
else
{
mainGame
->
cbDeckSelect2
->
setVisible
(
false
);
mainGame
->
cbDeckSelect2
->
setEnabled
(
false
);
}
if
(
mainGame
->
wCreateHost
->
isVisible
())
mainGame
->
HideElement
(
mainGame
->
wCreateHost
);
else
if
(
mainGame
->
wLanWindow
->
isVisible
())
...
...
@@ -1835,6 +1844,8 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) {
}
case
MSG_SWAP_GRAVE_DECK
:
{
int
player
=
mainGame
->
LocalPlayer
(
BufferIO
::
ReadInt8
(
pbuf
));
int
m
=
0
;
int
e
=
mainGame
->
dField
.
extra
[
player
].
size
();
if
(
mainGame
->
dInfo
.
isReplay
&&
mainGame
->
dInfo
.
isReplaySkiping
)
{
mainGame
->
dField
.
grave
[
player
].
swap
(
mainGame
->
dField
.
deck
[
player
]);
for
(
auto
cit
=
mainGame
->
dField
.
grave
[
player
].
begin
();
cit
!=
mainGame
->
dField
.
grave
[
player
].
end
();
++
cit
)
...
...
@@ -1842,10 +1853,15 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) {
for
(
auto
cit
=
mainGame
->
dField
.
deck
[
player
].
begin
();
cit
!=
mainGame
->
dField
.
deck
[
player
].
end
();
)
{
if
((
*
cit
)
->
type
&
0x802040
)
{
(
*
cit
)
->
location
=
LOCATION_EXTRA
;
(
*
cit
)
->
position
=
POS_FACEDOWN
;
(
*
cit
)
->
sequence
=
e
;
mainGame
->
dField
.
extra
[
player
].
push_back
(
*
cit
);
cit
=
mainGame
->
dField
.
deck
[
player
].
erase
(
cit
);
e
++
;
}
else
{
(
*
cit
)
->
location
=
LOCATION_DECK
;
(
*
cit
)
->
sequence
=
m
;
m
++
;
++
cit
;
}
}
...
...
@@ -1860,10 +1876,15 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) {
ClientCard
*
pcard
=
*
cit
;
if
(
pcard
->
type
&
0x802040
)
{
pcard
->
location
=
LOCATION_EXTRA
;
pcard
->
position
=
POS_FACEDOWN
;
pcard
->
sequence
=
e
;
mainGame
->
dField
.
extra
[
player
].
push_back
(
pcard
);
cit
=
mainGame
->
dField
.
deck
[
player
].
erase
(
cit
);
e
++
;
}
else
{
pcard
->
location
=
LOCATION_DECK
;
pcard
->
sequence
=
m
;
m
++
;
++
cit
;
}
mainGame
->
dField
.
MoveCard
(
pcard
,
10
);
...
...
gframe/game.cpp
View file @
c4b5e990
...
...
@@ -30,7 +30,7 @@ bool Game::Initialize() {
params
.
DriverType
=
irr
::
video
::
EDT_DIRECT3D9
;
else
params
.
DriverType
=
irr
::
video
::
EDT_OPENGL
;
params
.
WindowSize
=
irr
::
core
::
dimension2d
<
u32
>
(
1024
,
640
);
params
.
WindowSize
=
irr
::
core
::
dimension2d
<
u32
>
(
1024
,
640
);
device
=
irr
::
createDeviceEx
(
params
);
if
(
!
device
)
return
false
;
...
...
@@ -214,6 +214,8 @@ bool Game::Initialize() {
env
->
addStaticText
(
dataManager
.
GetSysString
(
1254
),
rect
<
s32
>
(
10
,
235
,
110
,
255
),
false
,
false
,
wHostPrepare
);
cbDeckSelect
=
env
->
addComboBox
(
rect
<
s32
>
(
120
,
230
,
270
,
255
),
wHostPrepare
);
cbDeckSelect
->
setMaxSelectionRows
(
10
);
cbDeckSelect2
=
env
->
addComboBox
(
rect
<
s32
>
(
280
,
230
,
430
,
255
),
wHostPrepare
);
cbDeckSelect2
->
setMaxSelectionRows
(
10
);
btnHostPrepStart
=
env
->
addButton
(
rect
<
s32
>
(
230
,
280
,
340
,
305
),
wHostPrepare
,
BUTTON_HP_START
,
dataManager
.
GetSysString
(
1215
));
btnHostPrepCancel
=
env
->
addButton
(
rect
<
s32
>
(
350
,
280
,
460
,
305
),
wHostPrepare
,
BUTTON_HP_CANCEL
,
dataManager
.
GetSysString
(
1212
));
//img
...
...
gframe/game.h
View file @
c4b5e990
...
...
@@ -273,6 +273,7 @@ public:
irr
::
gui
::
IGUICheckBox
*
chkHostPrepReady
[
4
];
irr
::
gui
::
IGUIButton
*
btnHostPrepKick
[
4
];
irr
::
gui
::
IGUIComboBox
*
cbDeckSelect
;
irr
::
gui
::
IGUIComboBox
*
cbDeckSelect2
;
irr
::
gui
::
IGUIStaticText
*
stHostPrepRule
;
irr
::
gui
::
IGUIStaticText
*
stHostPrepRule2
;
irr
::
gui
::
IGUIStaticText
*
stHostPrepOB
;
...
...
@@ -586,7 +587,7 @@ extern Game* mainGame;
#define CHECK_ROSE_DUEL 361
#define CHECK_TURBO_DUEL_1 362
#define CHECK_TURBO_DUEL_2 363
#define CHECK_
TURBO_DUEL_3
364
#define CHECK_
DOUBLE_DECK
364
#define CHECK_COMMAND_DUEL 365
#define CHECK_DECK_MASTER_DUEL 366
#define CHECKBOX_ENABLE_MUSIC 361
...
...
gframe/menu_handler.cpp
View file @
c4b5e990
...
...
@@ -324,8 +324,12 @@ bool MenuHandler::OnEvent(const irr::SEvent& event) {
break
;
mainGame
->
env
->
setFocus
(
mainGame
->
wHostPrepare
);
if
(
static_cast
<
irr
::
gui
::
IGUICheckBox
*>
(
caller
)
->
isChecked
())
{
if
(
mainGame
->
cbDeckSelect
->
getSelected
()
==
-
1
||
!
deckManager
.
LoadDeck
(
mainGame
->
cbDeckSelect
->
getItem
(
mainGame
->
cbDeckSelect
->
getSelected
())))
{
bool
check
=
false
;
if
(
!
mainGame
->
chkRules
[
11
]
->
isChecked
())
check
=
(
mainGame
->
cbDeckSelect
->
getSelected
()
==
-
1
||
!
deckManager
.
LoadDeck
(
mainGame
->
cbDeckSelect
->
getItem
(
mainGame
->
cbDeckSelect
->
getSelected
())));
else
check
=
(
mainGame
->
cbDeckSelect
->
getSelected
()
==
-
1
||
mainGame
->
cbDeckSelect2
->
getSelected
()
==
-
1
||
!
deckManager
.
LoadDeckDouble
(
mainGame
->
cbDeckSelect
->
getItem
(
mainGame
->
cbDeckSelect
->
getSelected
()),
mainGame
->
cbDeckSelect2
->
getItem
(
mainGame
->
cbDeckSelect2
->
getSelected
())));
if
(
check
)
{
static_cast
<
irr
::
gui
::
IGUICheckBox
*>
(
caller
)
->
setChecked
(
false
);
break
;
}
...
...
@@ -344,21 +348,23 @@ bool MenuHandler::OnEvent(const irr::SEvent& event) {
DuelClient
::
SendBufferToServer
(
CTOS_UPDATE_DECK
,
deckbuf
,
pdeck
-
deckbuf
);
DuelClient
::
SendPacketToServer
(
CTOS_HS_READY
);
mainGame
->
cbDeckSelect
->
setEnabled
(
false
);
mainGame
->
cbDeckSelect2
->
setEnabled
(
false
);
}
else
{
DuelClient
::
SendPacketToServer
(
CTOS_HS_NOTREADY
);
mainGame
->
cbDeckSelect
->
setEnabled
(
true
);
mainGame
->
cbDeckSelect2
->
setEnabled
(
true
);
}
break
;
}
case
CHECK_SEALED_DUEL
:
{
if
(
static_cast
<
irr
::
gui
::
IGUICheckBox
*>
(
caller
)
->
isChecked
())
{
for
(
int
i
=
1
;
i
<
14
;
++
i
)
if
(
i
!=
3
)
if
(
i
!=
3
&&
i
!=
11
)
mainGame
->
chkRules
[
i
]
->
setEnabled
(
false
);
}
else
{
for
(
int
i
=
1
;
i
<
14
;
++
i
)
if
(
i
!=
3
)
if
(
i
!=
3
&&
i
!=
11
)
mainGame
->
chkRules
[
i
]
->
setEnabled
(
true
);
}
break
;
...
...
@@ -366,12 +372,12 @@ bool MenuHandler::OnEvent(const irr::SEvent& event) {
case
CHECK_BOOSTER_DUEL
:
{
if
(
static_cast
<
irr
::
gui
::
IGUICheckBox
*>
(
caller
)
->
isChecked
())
{
for
(
int
i
=
0
;
i
<
14
;
++
i
)
if
(
i
!=
1
&&
i
!=
3
)
if
(
i
!=
1
&&
i
!=
3
&&
i
!=
11
)
mainGame
->
chkRules
[
i
]
->
setEnabled
(
false
);
}
else
{
for
(
int
i
=
0
;
i
<
14
;
++
i
)
if
(
i
!=
1
&&
i
!=
3
)
if
(
i
!=
1
&&
i
!=
3
&&
i
!=
11
)
mainGame
->
chkRules
[
i
]
->
setEnabled
(
true
);
}
break
;
...
...
@@ -380,16 +386,16 @@ bool MenuHandler::OnEvent(const irr::SEvent& event) {
if
(
static_cast
<
irr
::
gui
::
IGUICheckBox
*>
(
caller
)
->
isChecked
())
{
mainGame
->
chkRules
[
0
]
->
setEnabled
(
false
);
mainGame
->
chkRules
[
1
]
->
setEnabled
(
false
);
for
(
int
i
=
9
;
i
<
12
;
++
i
)
mainGame
->
chkRules
[
i
]
->
setEnabled
(
false
);
mainGame
->
chkRules
[
9
]
->
setEnabled
(
false
);
mainGame
->
chkRules
[
10
]
->
setEnabled
(
false
);
}
else
{
mainGame
->
chkRules
[
0
]
->
setEnabled
(
true
);
mainGame
->
chkRules
[
1
]
->
setEnabled
(
true
);
for
(
int
i
=
9
;
i
<
12
;
++
i
)
mainGame
->
chkRules
[
i
]
->
setEnabled
(
true
);
mainGame
->
chkRules
[
9
]
->
setEnabled
(
true
);
mainGame
->
chkRules
[
10
]
->
setEnabled
(
true
);
for
(
int
i
=
0
;
i
<
14
;
++
i
)
{
if
(
mainGame
->
chkRules
[
i
]
->
isChecked
()
&&
i
!=
3
)
if
(
mainGame
->
chkRules
[
i
]
->
isChecked
()
&&
i
!=
3
&&
i
!=
11
)
for
(
int
i
=
0
;
i
<
2
;
++
i
)
mainGame
->
chkRules
[
i
]
->
setEnabled
(
false
);
}
...
...
@@ -411,7 +417,7 @@ bool MenuHandler::OnEvent(const irr::SEvent& event) {
for
(
int
i
=
0
;
i
<
2
;
++
i
)
mainGame
->
chkRules
[
i
]
->
setEnabled
(
true
);
for
(
int
i
=
0
;
i
<
16
;
++
i
)
{
if
(
mainGame
->
chkRules
[
i
]
->
isChecked
()
&&
i
!=
3
)
if
(
mainGame
->
chkRules
[
i
]
->
isChecked
()
&&
i
!=
3
&&
i
!=
11
)
for
(
int
i
=
0
;
i
<
2
;
++
i
)
mainGame
->
chkRules
[
i
]
->
setEnabled
(
false
);
}
...
...
@@ -423,15 +429,13 @@ bool MenuHandler::OnEvent(const irr::SEvent& event) {
for
(
int
i
=
0
;
i
<
3
;
++
i
)
mainGame
->
chkRules
[
i
]
->
setEnabled
(
false
);
mainGame
->
chkRules
[
10
]
->
setEnabled
(
false
);
mainGame
->
chkRules
[
11
]
->
setEnabled
(
false
);
}
else
{
for
(
int
i
=
0
;
i
<
3
;
++
i
)
mainGame
->
chkRules
[
i
]
->
setEnabled
(
true
);
mainGame
->
chkRules
[
10
]
->
setEnabled
(
true
);
mainGame
->
chkRules
[
11
]
->
setEnabled
(
true
);
for
(
int
i
=
0
;
i
<
16
;
++
i
)
{
if
(
mainGame
->
chkRules
[
i
]
->
isChecked
()
&&
i
!=
3
)
if
(
mainGame
->
chkRules
[
i
]
->
isChecked
()
&&
i
!=
3
&&
i
!=
11
)
for
(
int
i
=
0
;
i
<
2
;
++
i
)
mainGame
->
chkRules
[
i
]
->
setEnabled
(
false
);
}
...
...
@@ -443,35 +447,13 @@ bool MenuHandler::OnEvent(const irr::SEvent& event) {
for
(
int
i
=
0
;
i
<
3
;
++
i
)
mainGame
->
chkRules
[
i
]
->
setEnabled
(
false
);
mainGame
->
chkRules
[
9
]
->
setEnabled
(
false
);
mainGame
->
chkRules
[
11
]
->
setEnabled
(
false
);
}
else
{
for
(
int
i
=
0
;
i
<
3
;
++
i
)
mainGame
->
chkRules
[
i
]
->
setEnabled
(
true
);
mainGame
->
chkRules
[
9
]
->
setEnabled
(
true
);
mainGame
->
chkRules
[
11
]
->
setEnabled
(
true
);
for
(
int
i
=
0
;
i
<
16
;
++
i
)
{
if
(
mainGame
->
chkRules
[
i
]
->
isChecked
()
&&
i
!=
3
)
for
(
int
i
=
0
;
i
<
2
;
++
i
)
mainGame
->
chkRules
[
i
]
->
setEnabled
(
false
);
}
}
break
;
}
case
CHECK_TURBO_DUEL_3
:
{
if
(
static_cast
<
irr
::
gui
::
IGUICheckBox
*>
(
caller
)
->
isChecked
())
{
for
(
int
i
=
0
;
i
<
3
;
++
i
)
mainGame
->
chkRules
[
i
]
->
setEnabled
(
false
);
mainGame
->
chkRules
[
9
]
->
setEnabled
(
false
);
mainGame
->
chkRules
[
10
]
->
setEnabled
(
false
);
}
else
{
for
(
int
i
=
0
;
i
<
3
;
++
i
)
mainGame
->
chkRules
[
i
]
->
setEnabled
(
true
);
mainGame
->
chkRules
[
9
]
->
setEnabled
(
true
);
mainGame
->
chkRules
[
10
]
->
setEnabled
(
true
);
for
(
int
i
=
0
;
i
<
16
;
++
i
)
{
if
(
mainGame
->
chkRules
[
i
]
->
isChecked
()
&&
i
!=
3
)
if
(
mainGame
->
chkRules
[
i
]
->
isChecked
()
&&
i
!=
3
&&
i
!=
11
)
for
(
int
i
=
0
;
i
<
2
;
++
i
)
mainGame
->
chkRules
[
i
]
->
setEnabled
(
false
);
}
...
...
gframe/network.h
View file @
c4b5e990
...
...
@@ -28,7 +28,7 @@ struct HostInfo {
bool
rose
;
bool
turbo1
;
bool
turbo2
;
bool
turbo3
;
bool
doubled
;
bool
command
;
bool
master
;
unsigned
int
rule_count
;
...
...
gframe/single_duel.cpp
View file @
c4b5e990
...
...
@@ -254,7 +254,7 @@ void SingleDuel::PlayerReady(DuelPlayer* dp, bool is_ready) {
if
(
is_ready
)
{
bool
allow_ocg
=
host_info
.
rule
==
0
||
host_info
.
rule
==
2
;
bool
allow_tcg
=
host_info
.
rule
==
1
||
host_info
.
rule
==
2
;
int
res
=
host_info
.
no_check_deck
?
false
:
deckManager
.
CheckLFList
(
pdeck
[
dp
->
type
],
host_info
.
lflist
,
allow_ocg
,
allow_tcg
);
int
res
=
host_info
.
no_check_deck
?
false
:
deckManager
.
CheckLFList
(
pdeck
[
dp
->
type
],
host_info
.
lflist
,
allow_ocg
,
allow_tcg
,
host_info
.
doubled
);
if
(
res
)
{
STOC_HS_PlayerChange
scpc
;
scpc
.
status
=
(
dp
->
type
<<
4
)
|
PLAYERCHANGE_NOTREADY
;
...
...
@@ -286,7 +286,7 @@ void SingleDuel::UpdateDeck(DuelPlayer* dp, void* pdata) {
int
mainc
=
BufferIO
::
ReadInt32
(
deckbuf
);
int
sidec
=
BufferIO
::
ReadInt32
(
deckbuf
);
if
(
duel_count
==
0
)
{
deckManager
.
LoadDeck
(
pdeck
[
dp
->
type
],
(
int
*
)
deckbuf
,
mainc
,
sidec
);
deckManager
.
LoadDeck
(
pdeck
[
dp
->
type
],
(
int
*
)
deckbuf
,
mainc
,
sidec
,
0
,
0
,
host_info
.
doubled
);
}
else
{
if
(
deckManager
.
LoadSide
(
pdeck
[
dp
->
type
],
(
int
*
)
deckbuf
,
mainc
,
sidec
))
{
ready
[
dp
->
type
]
=
true
;
...
...
@@ -415,8 +415,6 @@ void SingleDuel::TPResult(DuelPlayer* dp, unsigned char tp) {
int
opt
=
0
;
if
(
host_info
.
enable_priority
)
opt
|=
DUEL_OBSOLETE_RULING
;
if
(
host_info
.
destiny_draw
)
opt
|=
DUEL_DESTINY_DRAW
;
if
(
host_info
.
no_shuffle_deck
)
opt
|=
DUEL_PSEUDO_SHUFFLE
;
last_replay
.
WriteInt32
(
host_info
.
start_lp
,
false
);
...
...
@@ -471,11 +469,11 @@ void SingleDuel::TPResult(DuelPlayer* dp, unsigned char tp) {
if
(
host_info
.
turbo2
)
{
new_card
(
pduel
,
110000000
,
0
,
0
,
LOCATION_DECK
,
0
,
POS_FACEDOWN_DEFENSE
);
last_replay
.
WriteInt32
(
110000000
,
false
);
}
if
(
host_info
.
turbo3
)
{
}
/*
if(host_info.
doubled
) {
new_card(pduel, 511001727, 0, 0, LOCATION_DECK, 0, POS_FACEDOWN_DEFENSE);
last_replay.WriteInt32(511001727, false);
}
}
*/
if
(
host_info
.
command
)
{
new_card
(
pduel
,
95200000
,
0
,
0
,
LOCATION_DECK
,
0
,
POS_FACEDOWN_DEFENSE
);
last_replay
.
WriteInt32
(
95200000
,
false
);
...
...
gframe/tag_duel.cpp
View file @
c4b5e990
...
...
@@ -224,7 +224,7 @@ void TagDuel::PlayerReady(DuelPlayer* dp, bool is_ready) {
if
(
is_ready
)
{
bool
allow_ocg
=
host_info
.
rule
==
0
||
host_info
.
rule
==
2
;
bool
allow_tcg
=
host_info
.
rule
==
1
||
host_info
.
rule
==
2
;
int
res
=
host_info
.
no_check_deck
?
false
:
deckManager
.
CheckLFList
(
pdeck
[
dp
->
type
],
host_info
.
lflist
,
allow_ocg
,
allow_tcg
);
int
res
=
host_info
.
no_check_deck
?
false
:
deckManager
.
CheckLFList
(
pdeck
[
dp
->
type
],
host_info
.
lflist
,
allow_ocg
,
allow_tcg
,
host_info
.
doubled
);
if
(
res
)
{
STOC_HS_PlayerChange
scpc
;
scpc
.
status
=
(
dp
->
type
<<
4
)
|
PLAYERCHANGE_NOTREADY
;
...
...
@@ -256,7 +256,7 @@ void TagDuel::UpdateDeck(DuelPlayer* dp, void* pdata) {
char
*
deckbuf
=
(
char
*
)
pdata
;
int
mainc
=
BufferIO
::
ReadInt32
(
deckbuf
);
int
sidec
=
BufferIO
::
ReadInt32
(
deckbuf
);
deckManager
.
LoadDeck
(
pdeck
[
dp
->
type
],
(
int
*
)
deckbuf
,
mainc
,
sidec
);
deckManager
.
LoadDeck
(
pdeck
[
dp
->
type
],
(
int
*
)
deckbuf
,
mainc
,
sidec
,
0
,
0
,
host_info
.
doubled
);
}
void
TagDuel
::
StartDuel
(
DuelPlayer
*
dp
)
{
if
(
dp
!=
host_player
)
...
...
@@ -385,8 +385,6 @@ void TagDuel::TPResult(DuelPlayer* dp, unsigned char tp) {
int
opt
=
0
;
if
(
host_info
.
enable_priority
)
opt
|=
DUEL_OBSOLETE_RULING
;
if
(
host_info
.
destiny_draw
)
opt
|=
DUEL_DESTINY_DRAW
;
if
(
host_info
.
no_shuffle_deck
)
opt
|=
DUEL_PSEUDO_SHUFFLE
;
opt
|=
DUEL_TAG_MODE
;
...
...
@@ -447,11 +445,11 @@ void TagDuel::TPResult(DuelPlayer* dp, unsigned char tp) {
if
(
host_info
.
turbo2
)
{
new_card
(
pduel
,
110000000
,
0
,
0
,
LOCATION_DECK
,
0
,
POS_FACEDOWN_DEFENSE
);
last_replay
.
WriteInt32
(
110000000
,
false
);
}
if
(
host_info
.
turbo3
)
{
}
/*
if(host_info.
doubled
) {
new_card(pduel, 511001727, 0, 0, LOCATION_DECK, 0, POS_FACEDOWN_DEFENSE);
last_replay.WriteInt32(511001727, false);
}
}
*/
if
(
host_info
.
command
)
{
new_card
(
pduel
,
95200000
,
0
,
0
,
LOCATION_DECK
,
0
,
POS_FACEDOWN_DEFENSE
);
last_replay
.
WriteInt32
(
95200000
,
false
);
...
...
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