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
1
Merge Requests
1
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
nanahira
ygopro
Commits
ccdbe19c
Commit
ccdbe19c
authored
Nov 12, 2017
by
edo9300
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Field update, added card type filter
parent
13d45ea3
Changes
15
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
15 changed files
with
229 additions
and
155 deletions
+229
-155
gframe/client_field.cpp
gframe/client_field.cpp
+20
-20
gframe/deck_manager.cpp
gframe/deck_manager.cpp
+5
-3
gframe/drawing.cpp
gframe/drawing.cpp
+57
-41
gframe/duelclient.cpp
gframe/duelclient.cpp
+15
-14
gframe/event_handler.cpp
gframe/event_handler.cpp
+24
-24
gframe/game.cpp
gframe/game.cpp
+57
-24
gframe/game.h
gframe/game.h
+6
-4
gframe/image_manager.cpp
gframe/image_manager.cpp
+4
-0
gframe/image_manager.h
gframe/image_manager.h
+2
-2
gframe/menu_handler.cpp
gframe/menu_handler.cpp
+12
-2
gframe/replay_mode.cpp
gframe/replay_mode.cpp
+10
-8
gframe/single_duel.cpp
gframe/single_duel.cpp
+1
-1
gframe/single_mode.cpp
gframe/single_mode.cpp
+5
-5
gframe/tag_duel.cpp
gframe/tag_duel.cpp
+1
-1
strings.conf
strings.conf
+10
-6
No files found.
gframe/client_field.cpp
View file @
ccdbe19c
...
@@ -695,8 +695,8 @@ void ClientField::GetChainLocation(int controler, int location, int sequence, ir
...
@@ -695,8 +695,8 @@ void ClientField::GetChainLocation(int controler, int location, int sequence, ir
t
->
X
=
0
;
t
->
X
=
0
;
t
->
Y
=
0
;
t
->
Y
=
0
;
t
->
Z
=
0
;
t
->
Z
=
0
;
int
rule
=
(
mainGame
->
dInfo
.
duel_rule
==
3
)
?
0
:
1
;
int
field
=
(
mainGame
->
dInfo
.
duel_field
==
3
||
mainGame
->
dInfo
.
duel_field
==
5
)
?
0
:
1
;
int
speed
=
(
mainGame
->
dInfo
.
speed
)
?
1
:
0
;
int
speed
=
(
mainGame
->
dInfo
.
extraval
&
0x1
)
?
1
:
0
;
switch
((
location
&
0x7f
))
{
switch
((
location
&
0x7f
))
{
case
LOCATION_DECK
:
{
case
LOCATION_DECK
:
{
t
->
X
=
(
matManager
.
vFieldDeck
[
controler
][
speed
][
0
].
Pos
.
X
+
matManager
.
vFieldDeck
[
controler
][
speed
][
1
].
Pos
.
X
)
/
2
;
t
->
X
=
(
matManager
.
vFieldDeck
[
controler
][
speed
][
0
].
Pos
.
X
+
matManager
.
vFieldDeck
[
controler
][
speed
][
1
].
Pos
.
X
)
/
2
;
...
@@ -723,20 +723,20 @@ void ClientField::GetChainLocation(int controler, int location, int sequence, ir
...
@@ -723,20 +723,20 @@ void ClientField::GetChainLocation(int controler, int location, int sequence, ir
break
;
break
;
}
}
case
LOCATION_SZONE
:
{
case
LOCATION_SZONE
:
{
t
->
X
=
(
matManager
.
vFieldSzone
[
controler
][
sequence
][
rule
][
speed
][
0
].
Pos
.
X
+
matManager
.
vFieldSzone
[
controler
][
sequence
][
rule
][
speed
][
1
].
Pos
.
X
)
/
2
;
t
->
X
=
(
matManager
.
vFieldSzone
[
controler
][
sequence
][
field
][
speed
][
0
].
Pos
.
X
+
matManager
.
vFieldSzone
[
controler
][
sequence
][
field
][
speed
][
1
].
Pos
.
X
)
/
2
;
t
->
Y
=
(
matManager
.
vFieldSzone
[
controler
][
sequence
][
rule
][
speed
][
0
].
Pos
.
Y
+
matManager
.
vFieldSzone
[
controler
][
sequence
][
rule
][
speed
][
2
].
Pos
.
Y
)
/
2
;
t
->
Y
=
(
matManager
.
vFieldSzone
[
controler
][
sequence
][
field
][
speed
][
0
].
Pos
.
Y
+
matManager
.
vFieldSzone
[
controler
][
sequence
][
field
][
speed
][
2
].
Pos
.
Y
)
/
2
;
t
->
Z
=
0.03
f
;
t
->
Z
=
0.03
f
;
break
;
break
;
}
}
case
LOCATION_GRAVE
:
{
case
LOCATION_GRAVE
:
{
t
->
X
=
(
matManager
.
vFieldGrave
[
controler
][
rule
][
speed
][
0
].
Pos
.
X
+
matManager
.
vFieldGrave
[
controler
][
rule
][
speed
][
1
].
Pos
.
X
)
/
2
;
t
->
X
=
(
matManager
.
vFieldGrave
[
controler
][
field
][
speed
][
0
].
Pos
.
X
+
matManager
.
vFieldGrave
[
controler
][
field
][
speed
][
1
].
Pos
.
X
)
/
2
;
t
->
Y
=
(
matManager
.
vFieldGrave
[
controler
][
rule
][
speed
][
0
].
Pos
.
Y
+
matManager
.
vFieldGrave
[
controler
][
rule
][
speed
][
2
].
Pos
.
Y
)
/
2
;
t
->
Y
=
(
matManager
.
vFieldGrave
[
controler
][
field
][
speed
][
0
].
Pos
.
Y
+
matManager
.
vFieldGrave
[
controler
][
field
][
speed
][
2
].
Pos
.
Y
)
/
2
;
t
->
Z
=
grave
[
controler
].
size
()
*
0.01
f
+
0.03
f
;
t
->
Z
=
grave
[
controler
].
size
()
*
0.01
f
+
0.03
f
;
break
;
break
;
}
}
case
LOCATION_REMOVED
:
{
case
LOCATION_REMOVED
:
{
t
->
X
=
(
matManager
.
vFieldRemove
[
controler
][
rule
][
speed
][
0
].
Pos
.
X
+
matManager
.
vFieldRemove
[
controler
][
rule
][
speed
][
1
].
Pos
.
X
)
/
2
;
t
->
X
=
(
matManager
.
vFieldRemove
[
controler
][
field
][
speed
][
0
].
Pos
.
X
+
matManager
.
vFieldRemove
[
controler
][
field
][
speed
][
1
].
Pos
.
X
)
/
2
;
t
->
Y
=
(
matManager
.
vFieldRemove
[
controler
][
rule
][
speed
][
0
].
Pos
.
Y
+
matManager
.
vFieldRemove
[
controler
][
rule
][
speed
][
2
].
Pos
.
Y
)
/
2
;
t
->
Y
=
(
matManager
.
vFieldRemove
[
controler
][
field
][
speed
][
0
].
Pos
.
Y
+
matManager
.
vFieldRemove
[
controler
][
field
][
speed
][
2
].
Pos
.
Y
)
/
2
;
t
->
Z
=
remove
[
controler
].
size
()
*
0.01
f
+
0.03
f
;
t
->
Z
=
remove
[
controler
].
size
()
*
0.01
f
+
0.03
f
;
break
;
break
;
}
}
...
@@ -752,8 +752,8 @@ void ClientField::GetCardLocation(ClientCard* pcard, irr::core::vector3df* t, ir
...
@@ -752,8 +752,8 @@ void ClientField::GetCardLocation(ClientCard* pcard, irr::core::vector3df* t, ir
int
controler
=
pcard
->
controler
;
int
controler
=
pcard
->
controler
;
int
sequence
=
pcard
->
sequence
;
int
sequence
=
pcard
->
sequence
;
int
location
=
pcard
->
location
;
int
location
=
pcard
->
location
;
int
rule
=
(
mainGame
->
dInfo
.
duel_rule
==
3
)
?
0
:
1
;
int
field
=
(
mainGame
->
dInfo
.
duel_field
==
3
||
mainGame
->
dInfo
.
duel_field
==
5
)
?
0
:
1
;
int
speed
=
(
mainGame
->
dInfo
.
speed
)
?
1
:
0
;
int
speed
=
(
mainGame
->
dInfo
.
extraval
&
0x1
)
?
1
:
0
;
switch
(
location
)
{
switch
(
location
)
{
case
LOCATION_DECK
:
{
case
LOCATION_DECK
:
{
t
->
X
=
(
matManager
.
vFieldDeck
[
controler
][
speed
][
0
].
Pos
.
X
+
matManager
.
vFieldDeck
[
controler
][
speed
][
1
].
Pos
.
X
)
/
2
;
t
->
X
=
(
matManager
.
vFieldDeck
[
controler
][
speed
][
0
].
Pos
.
X
+
matManager
.
vFieldDeck
[
controler
][
speed
][
1
].
Pos
.
X
)
/
2
;
...
@@ -872,8 +872,8 @@ void ClientField::GetCardLocation(ClientCard* pcard, irr::core::vector3df* t, ir
...
@@ -872,8 +872,8 @@ void ClientField::GetCardLocation(ClientCard* pcard, irr::core::vector3df* t, ir
break
;
break
;
}
}
case
LOCATION_SZONE
:
{
case
LOCATION_SZONE
:
{
t
->
X
=
(
matManager
.
vFieldSzone
[
controler
][
sequence
][
rule
][
speed
][
0
].
Pos
.
X
+
matManager
.
vFieldSzone
[
controler
][
sequence
][
rule
][
speed
][
1
].
Pos
.
X
)
/
2
;
t
->
X
=
(
matManager
.
vFieldSzone
[
controler
][
sequence
][
field
][
speed
][
0
].
Pos
.
X
+
matManager
.
vFieldSzone
[
controler
][
sequence
][
field
][
speed
][
1
].
Pos
.
X
)
/
2
;
t
->
Y
=
(
matManager
.
vFieldSzone
[
controler
][
sequence
][
rule
][
speed
][
0
].
Pos
.
Y
+
matManager
.
vFieldSzone
[
controler
][
sequence
][
rule
][
speed
][
2
].
Pos
.
Y
)
/
2
;
t
->
Y
=
(
matManager
.
vFieldSzone
[
controler
][
sequence
][
field
][
speed
][
0
].
Pos
.
Y
+
matManager
.
vFieldSzone
[
controler
][
sequence
][
field
][
speed
][
2
].
Pos
.
Y
)
/
2
;
t
->
Z
=
0.01
f
;
t
->
Z
=
0.01
f
;
if
(
controler
==
0
)
{
if
(
controler
==
0
)
{
r
->
X
=
0.0
f
;
r
->
X
=
0.0
f
;
...
@@ -891,8 +891,8 @@ void ClientField::GetCardLocation(ClientCard* pcard, irr::core::vector3df* t, ir
...
@@ -891,8 +891,8 @@ void ClientField::GetCardLocation(ClientCard* pcard, irr::core::vector3df* t, ir
break
;
break
;
}
}
case
LOCATION_GRAVE
:
{
case
LOCATION_GRAVE
:
{
t
->
X
=
(
matManager
.
vFieldGrave
[
controler
][
rule
][
speed
][
0
].
Pos
.
X
+
matManager
.
vFieldGrave
[
controler
][
rule
][
speed
][
1
].
Pos
.
X
)
/
2
;
t
->
X
=
(
matManager
.
vFieldGrave
[
controler
][
field
][
speed
][
0
].
Pos
.
X
+
matManager
.
vFieldGrave
[
controler
][
field
][
speed
][
1
].
Pos
.
X
)
/
2
;
t
->
Y
=
(
matManager
.
vFieldGrave
[
controler
][
rule
][
speed
][
0
].
Pos
.
Y
+
matManager
.
vFieldGrave
[
controler
][
rule
][
speed
][
2
].
Pos
.
Y
)
/
2
;
t
->
Y
=
(
matManager
.
vFieldGrave
[
controler
][
field
][
speed
][
0
].
Pos
.
Y
+
matManager
.
vFieldGrave
[
controler
][
field
][
speed
][
2
].
Pos
.
Y
)
/
2
;
t
->
Z
=
0.01
f
+
0.01
f
*
sequence
;
t
->
Z
=
0.01
f
+
0.01
f
*
sequence
;
if
(
controler
==
0
)
{
if
(
controler
==
0
)
{
r
->
X
=
0.0
f
;
r
->
X
=
0.0
f
;
...
@@ -906,8 +906,8 @@ void ClientField::GetCardLocation(ClientCard* pcard, irr::core::vector3df* t, ir
...
@@ -906,8 +906,8 @@ void ClientField::GetCardLocation(ClientCard* pcard, irr::core::vector3df* t, ir
break
;
break
;
}
}
case
LOCATION_REMOVED
:
{
case
LOCATION_REMOVED
:
{
t
->
X
=
(
matManager
.
vFieldRemove
[
controler
][
rule
][
speed
][
0
].
Pos
.
X
+
matManager
.
vFieldRemove
[
controler
][
rule
][
speed
][
1
].
Pos
.
X
)
/
2
;
t
->
X
=
(
matManager
.
vFieldRemove
[
controler
][
field
][
speed
][
0
].
Pos
.
X
+
matManager
.
vFieldRemove
[
controler
][
field
][
speed
][
1
].
Pos
.
X
)
/
2
;
t
->
Y
=
(
matManager
.
vFieldRemove
[
controler
][
rule
][
speed
][
0
].
Pos
.
Y
+
matManager
.
vFieldRemove
[
controler
][
rule
][
speed
][
2
].
Pos
.
Y
)
/
2
;
t
->
Y
=
(
matManager
.
vFieldRemove
[
controler
][
field
][
speed
][
0
].
Pos
.
Y
+
matManager
.
vFieldRemove
[
controler
][
field
][
speed
][
2
].
Pos
.
Y
)
/
2
;
t
->
Z
=
0.01
f
+
0.01
f
*
sequence
;
t
->
Z
=
0.01
f
+
0.01
f
*
sequence
;
if
(
controler
==
0
)
{
if
(
controler
==
0
)
{
if
(
pcard
->
position
&
POS_FACEUP
)
{
if
(
pcard
->
position
&
POS_FACEUP
)
{
...
@@ -975,16 +975,16 @@ void ClientField::GetCardLocation(ClientCard* pcard, irr::core::vector3df* t, ir
...
@@ -975,16 +975,16 @@ void ClientField::GetCardLocation(ClientCard* pcard, irr::core::vector3df* t, ir
}
}
}
else
{
}
else
{
if
(
pcard
->
overlayTarget
->
controler
==
0
)
{
if
(
pcard
->
overlayTarget
->
controler
==
0
)
{
t
->
X
=
(
matManager
.
vFieldSzone
[
0
][
oseq
][
rule
][
speed
][
0
].
Pos
.
X
+
matManager
.
vFieldSzone
[
0
][
oseq
][
rule
][
speed
][
1
].
Pos
.
X
)
/
2
-
0.12
f
+
0.06
f
*
sequence
;
t
->
X
=
(
matManager
.
vFieldSzone
[
0
][
oseq
][
field
][
speed
][
0
].
Pos
.
X
+
matManager
.
vFieldSzone
[
0
][
oseq
][
field
][
speed
][
1
].
Pos
.
X
)
/
2
-
0.12
f
+
0.06
f
*
sequence
;
t
->
Y
=
(
matManager
.
vFieldSzone
[
0
][
oseq
][
rule
][
speed
][
0
].
Pos
.
Y
+
matManager
.
vFieldSzone
[
0
][
oseq
][
rule
][
speed
][
2
].
Pos
.
Y
)
/
2
+
0.05
f
;
t
->
Y
=
(
matManager
.
vFieldSzone
[
0
][
oseq
][
field
][
speed
][
0
].
Pos
.
Y
+
matManager
.
vFieldSzone
[
0
][
oseq
][
field
][
speed
][
2
].
Pos
.
Y
)
/
2
+
0.05
f
;
t
->
Z
=
0.005
f
+
pcard
->
sequence
*
0.0001
f
;
t
->
Z
=
0.005
f
+
pcard
->
sequence
*
0.0001
f
;
r
->
X
=
0.0
f
;
r
->
X
=
0.0
f
;
r
->
Y
=
0.0
f
;
r
->
Y
=
0.0
f
;
r
->
Z
=
0.0
f
;
r
->
Z
=
0.0
f
;
}
}
else
{
else
{
t
->
X
=
(
matManager
.
vFieldSzone
[
1
][
oseq
][
rule
][
speed
][
0
].
Pos
.
X
+
matManager
.
vFieldSzone
[
1
][
oseq
][
rule
][
speed
][
1
].
Pos
.
X
)
/
2
+
0.12
f
-
0.06
f
*
sequence
;
t
->
X
=
(
matManager
.
vFieldSzone
[
1
][
oseq
][
field
][
speed
][
0
].
Pos
.
X
+
matManager
.
vFieldSzone
[
1
][
oseq
][
field
][
speed
][
1
].
Pos
.
X
)
/
2
+
0.12
f
-
0.06
f
*
sequence
;
t
->
Y
=
(
matManager
.
vFieldSzone
[
1
][
oseq
][
rule
][
speed
][
0
].
Pos
.
Y
+
matManager
.
vFieldSzone
[
1
][
oseq
][
rule
][
speed
][
2
].
Pos
.
Y
)
/
2
-
0.05
f
;
t
->
Y
=
(
matManager
.
vFieldSzone
[
1
][
oseq
][
field
][
speed
][
0
].
Pos
.
Y
+
matManager
.
vFieldSzone
[
1
][
oseq
][
field
][
speed
][
2
].
Pos
.
Y
)
/
2
-
0.05
f
;
t
->
Z
=
0.005
f
+
pcard
->
sequence
*
0.0001
f
;
t
->
Z
=
0.005
f
+
pcard
->
sequence
*
0.0001
f
;
r
->
X
=
0.0
f
;
r
->
X
=
0.0
f
;
r
->
Y
=
0.0
f
;
r
->
Y
=
0.0
f
;
...
...
gframe/deck_manager.cpp
View file @
ccdbe19c
...
@@ -70,7 +70,7 @@ int DeckManager::TypeCount(std::vector<code_pointer> cards, int type) {
...
@@ -70,7 +70,7 @@ int DeckManager::TypeCount(std::vector<code_pointer> cards, int type) {
}
}
return
count
;
return
count
;
}
}
int
DeckManager
::
CheckLFList
(
Deck
&
deck
,
int
lfhash
,
bool
allow_ocg
,
bool
allow_tcg
,
bool
doubled
)
{
int
DeckManager
::
CheckLFList
(
Deck
&
deck
,
int
lfhash
,
bool
allow_ocg
,
bool
allow_tcg
,
bool
doubled
,
int
forbiddentypes
)
{
std
::
unordered_map
<
int
,
int
>
ccount
;
std
::
unordered_map
<
int
,
int
>
ccount
;
std
::
unordered_map
<
int
,
int
>*
list
=
0
;
std
::
unordered_map
<
int
,
int
>*
list
=
0
;
for
(
size_t
i
=
0
;
i
<
_lfList
.
size
();
++
i
)
{
for
(
size_t
i
=
0
;
i
<
_lfList
.
size
();
++
i
)
{
...
@@ -82,9 +82,11 @@ int DeckManager::CheckLFList(Deck& deck, int lfhash, bool allow_ocg, bool allow_
...
@@ -82,9 +82,11 @@ int DeckManager::CheckLFList(Deck& deck, int lfhash, bool allow_ocg, bool allow_
if
(
!
list
)
if
(
!
list
)
return
0
;
return
0
;
int
dc
=
0
;
int
dc
=
0
;
if
(
mainGame
->
dInfo
.
speed
&&
(
deck
.
main
.
size
()
!=
20
||
deck
.
extra
.
size
()
>
5
))
if
((
mainGame
->
dInfo
.
extraval
&
0x1
)
&&
(
deck
.
main
.
size
()
!=
20
||
deck
.
extra
.
size
()
>
5
))
return
1
;
return
1
;
else
if
(
!
mainGame
->
dInfo
.
speed
&&
deck
.
main
.
size
()
<
40
||
(
!
doubled
&&
(
deck
.
main
.
size
()
>
60
||
deck
.
extra
.
size
()
>
15
||
deck
.
side
.
size
()
>
15
))
if
(
TypeCount
(
deck
.
main
,
forbiddentypes
)
>
0
||
TypeCount
(
deck
.
extra
,
forbiddentypes
)
>
0
||
TypeCount
(
deck
.
side
,
forbiddentypes
)
>
0
)
return
1
;
if
(
!
(
mainGame
->
dInfo
.
extraval
&
0x1
)
&&
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
)))
||
(
doubled
&&
(
deck
.
main
.
size
()
!=
100
||
deck
.
extra
.
size
()
>
30
||
deck
.
side
.
size
()
>
30
)))
return
1
;
return
1
;
for
(
size_t
i
=
0
;
i
<
deck
.
main
.
size
();
++
i
)
{
for
(
size_t
i
=
0
;
i
<
deck
.
main
.
size
();
++
i
)
{
...
...
gframe/drawing.cpp
View file @
ccdbe19c
This diff is collapsed.
Click to expand it.
gframe/duelclient.cpp
View file @
ccdbe19c
...
@@ -127,11 +127,12 @@ void DuelClient::ClientEvent(bufferevent *bev, short events, void *ctx) {
...
@@ -127,11 +127,12 @@ void DuelClient::ClientEvent(bufferevent *bev, short events, void *ctx) {
cscg
.
info
.
draw_count
=
_wtoi
(
mainGame
->
ebDrawCount
->
getText
());
cscg
.
info
.
draw_count
=
_wtoi
(
mainGame
->
ebDrawCount
->
getText
());
cscg
.
info
.
time_limit
=
_wtoi
(
mainGame
->
ebTimeLimit
->
getText
());
cscg
.
info
.
time_limit
=
_wtoi
(
mainGame
->
ebTimeLimit
->
getText
());
cscg
.
info
.
lflist
=
mainGame
->
cbLFlist
->
getItemData
(
mainGame
->
cbLFlist
->
getSelected
());
cscg
.
info
.
lflist
=
mainGame
->
cbLFlist
->
getItemData
(
mainGame
->
cbLFlist
->
getSelected
());
cscg
.
info
.
duel_rule
=
mainGame
->
GetMasterRule
(
mainGame
->
duel_param
);
cscg
.
info
.
duel_rule
=
mainGame
->
GetMasterRule
(
mainGame
->
duel_param
,
mainGame
->
forbiddentypes
);
cscg
.
info
.
duel_flag
=
mainGame
->
duel_param
;
cscg
.
info
.
duel_flag
=
mainGame
->
duel_param
;
cscg
.
info
.
no_check_deck
=
mainGame
->
chkNoCheckDeck
->
isChecked
();
cscg
.
info
.
no_check_deck
=
mainGame
->
chkNoCheckDeck
->
isChecked
();
cscg
.
info
.
no_shuffle_deck
=
mainGame
->
chkNoShuffleDeck
->
isChecked
();
cscg
.
info
.
no_shuffle_deck
=
mainGame
->
chkNoShuffleDeck
->
isChecked
();
cscg
.
info
.
check
=
2
;
cscg
.
info
.
check
=
2
;
cscg
.
info
.
forbiddentypes
=
mainGame
->
forbiddentypes
;
cscg
.
info
.
sealed
=
mainGame
->
chkRules
[
0
]
->
isChecked
();
cscg
.
info
.
sealed
=
mainGame
->
chkRules
[
0
]
->
isChecked
();
cscg
.
info
.
booster
=
mainGame
->
chkRules
[
1
]
->
isChecked
();
cscg
.
info
.
booster
=
mainGame
->
chkRules
[
1
]
->
isChecked
();
cscg
.
info
.
destiny_draw
=
mainGame
->
chkRules
[
2
]
->
isChecked
();
cscg
.
info
.
destiny_draw
=
mainGame
->
chkRules
[
2
]
->
isChecked
();
...
@@ -381,20 +382,20 @@ void DuelClient::HandleSTOCPacketLan(char* data, unsigned int len) {
...
@@ -381,20 +382,20 @@ void DuelClient::HandleSTOCPacketLan(char* data, unsigned int len) {
str
.
append
(
msgbuf
);
str
.
append
(
msgbuf
);
int
rule
;
int
rule
;
if
(
pkt
->
info
.
check
==
2
)
{
if
(
pkt
->
info
.
check
==
2
)
{
mainGame
->
dInfo
.
duel_
rule
=
mainGame
->
GetMasterRule
(
pkt
->
info
.
duel_flag
,
&
rule
);
mainGame
->
dInfo
.
duel_
field
=
mainGame
->
GetMasterRule
(
pkt
->
info
.
duel_flag
,
pkt
->
info
.
forbiddentypes
,
&
rule
);
}
else
{
}
else
{
rule
=
pkt
->
info
.
duel_rule
;
rule
=
pkt
->
info
.
duel_rule
;
if
(
rule
==
0
)
{
if
(
rule
==
0
)
{
mainGame
->
dInfo
.
duel_
rule
=
3
;
mainGame
->
dInfo
.
duel_
field
=
3
;
rule
=
3
;
rule
=
3
;
}
else
}
else
mainGame
->
dInfo
.
duel_
rule
=
rule
;
mainGame
->
dInfo
.
duel_
field
=
rule
;
}
}
if
(
rule
==
5
)
{
if
(
rule
==
5
)
{
uint32
filter
=
0x100
;
uint32
filter
=
0x100
;
for
(
int
i
=
0
;
i
<
5
;
++
i
,
filter
<<=
1
)
for
(
int
i
=
0
;
i
<
6
;
++
i
,
filter
<<=
1
)
if
(
pkt
->
info
.
duel_flag
&
filter
)
{
if
(
pkt
->
info
.
duel_flag
&
filter
)
{
myswprintf
(
msgbuf
,
L"*%ls
\n
"
,
dataManager
.
GetSysString
(
1
265
+
i
));
myswprintf
(
msgbuf
,
L"*%ls
\n
"
,
dataManager
.
GetSysString
(
1
631
+
i
));
str2
.
append
(
msgbuf
);
str2
.
append
(
msgbuf
);
host2
=
true
;
host2
=
true
;
}
}
...
@@ -536,7 +537,7 @@ void DuelClient::HandleSTOCPacketLan(char* data, unsigned int len) {
...
@@ -536,7 +537,7 @@ void DuelClient::HandleSTOCPacketLan(char* data, unsigned int len) {
mainGame
->
ShowElement
(
mainGame
->
wHostPrepare2
);
mainGame
->
ShowElement
(
mainGame
->
wHostPrepare2
);
mainGame
->
wChat
->
setVisible
(
true
);
mainGame
->
wChat
->
setVisible
(
true
);
mainGame
->
gMutex
.
Unlock
();
mainGame
->
gMutex
.
Unlock
();
mainGame
->
dInfo
.
speed
=
(
pkt
->
info
.
check
==
2
&&
pkt
->
info
.
speed
)
?
1
:
0
;
mainGame
->
dInfo
.
extraval
=
(
pkt
->
info
.
check
==
2
&&
pkt
->
info
.
speed
)
?
1
:
0
;
watching
=
0
;
watching
=
0
;
connect_state
|=
0x4
;
connect_state
|=
0x4
;
break
;
break
;
...
@@ -645,8 +646,8 @@ void DuelClient::HandleSTOCPacketLan(char* data, unsigned int len) {
...
@@ -645,8 +646,8 @@ void DuelClient::HandleSTOCPacketLan(char* data, unsigned int len) {
mainGame
->
device
->
setEventReceiver
(
&
mainGame
->
dField
);
mainGame
->
device
->
setEventReceiver
(
&
mainGame
->
dField
);
// reset master rule 4 phase button position
// reset master rule 4 phase button position
mainGame
->
wPhase
->
setRelativePosition
(
mainGame
->
Resize
(
480
,
310
,
855
,
330
));
mainGame
->
wPhase
->
setRelativePosition
(
mainGame
->
Resize
(
480
,
310
,
855
,
330
));
if
(
mainGame
->
dInfo
.
speed
)
{
if
(
mainGame
->
dInfo
.
extraval
&
0x1
)
{
if
(
mainGame
->
dInfo
.
duel_
rule
>=
4
)
{
if
(
mainGame
->
dInfo
.
duel_
field
>=
4
)
{
mainGame
->
wPhase
->
setRelativePosition
(
mainGame
->
Resize
(
480
,
290
,
855
,
350
));
mainGame
->
wPhase
->
setRelativePosition
(
mainGame
->
Resize
(
480
,
290
,
855
,
350
));
mainGame
->
btnShuffle
->
setRelativePosition
(
mainGame
->
Resize
(
0
,
40
,
50
,
60
));
mainGame
->
btnShuffle
->
setRelativePosition
(
mainGame
->
Resize
(
0
,
40
,
50
,
60
));
mainGame
->
btnDP
->
setRelativePosition
(
mainGame
->
Resize
(
0
,
40
,
50
,
60
));
mainGame
->
btnDP
->
setRelativePosition
(
mainGame
->
Resize
(
0
,
40
,
50
,
60
));
...
@@ -666,7 +667,7 @@ void DuelClient::HandleSTOCPacketLan(char* data, unsigned int len) {
...
@@ -666,7 +667,7 @@ void DuelClient::HandleSTOCPacketLan(char* data, unsigned int len) {
}
}
}
else
{
}
else
{
mainGame
->
btnDP
->
setRelativePosition
(
mainGame
->
Resize
(
0
,
0
,
50
,
20
));
mainGame
->
btnDP
->
setRelativePosition
(
mainGame
->
Resize
(
0
,
0
,
50
,
20
));
if
(
mainGame
->
dInfo
.
duel_
rule
>=
4
)
{
if
(
mainGame
->
dInfo
.
duel_
field
>=
4
)
{
mainGame
->
btnSP
->
setRelativePosition
(
mainGame
->
Resize
(
0
,
0
,
50
,
20
));
mainGame
->
btnSP
->
setRelativePosition
(
mainGame
->
Resize
(
0
,
0
,
50
,
20
));
mainGame
->
btnM1
->
setRelativePosition
(
mainGame
->
Resize
(
160
,
0
,
210
,
20
));
mainGame
->
btnM1
->
setRelativePosition
(
mainGame
->
Resize
(
160
,
0
,
210
,
20
));
mainGame
->
btnBP
->
setRelativePosition
(
mainGame
->
Resize
(
160
,
0
,
210
,
20
));
mainGame
->
btnBP
->
setRelativePosition
(
mainGame
->
Resize
(
160
,
0
,
210
,
20
));
...
@@ -3586,9 +3587,9 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) {
...
@@ -3586,9 +3587,9 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) {
case
MSG_RELOAD_FIELD
:
{
case
MSG_RELOAD_FIELD
:
{
mainGame
->
gMutex
.
Lock
();
mainGame
->
gMutex
.
Lock
();
mainGame
->
dField
.
Clear
();
mainGame
->
dField
.
Clear
();
int
rule
=
BufferIO
::
ReadInt8
(
pbuf
);
int
field
=
BufferIO
::
ReadInt8
(
pbuf
);
mainGame
->
dInfo
.
duel_
rule
=
rule
&
0xf
;
mainGame
->
dInfo
.
duel_
field
=
field
&
0xf
;
mainGame
->
dInfo
.
speed
=
(
rule
>>
4
)
?
1
:
0
;
mainGame
->
dInfo
.
extraval
=
field
>>
4
;
int
val
=
0
;
int
val
=
0
;
for
(
int
i
=
0
;
i
<
2
;
++
i
)
{
for
(
int
i
=
0
;
i
<
2
;
++
i
)
{
int
p
=
mainGame
->
LocalPlayer
(
i
);
int
p
=
mainGame
->
LocalPlayer
(
i
);
...
@@ -3877,7 +3878,7 @@ void DuelClient::BroadcastReply(evutil_socket_t fd, short events, void * arg) {
...
@@ -3877,7 +3878,7 @@ void DuelClient::BroadcastReply(evutil_socket_t fd, short events, void * arg) {
hoststr
.
append
(
L"]["
);
hoststr
.
append
(
L"]["
);
int
rule
;
int
rule
;
if
(
pHP
->
host
.
check
==
2
)
{
if
(
pHP
->
host
.
check
==
2
)
{
mainGame
->
GetMasterRule
(
pHP
->
host
.
duel_flag
,
&
rule
);
mainGame
->
GetMasterRule
(
pHP
->
host
.
duel_flag
,
pHP
->
host
.
forbiddentypes
,
&
rule
);
}
else
}
else
rule
=
pHP
->
host
.
duel_rule
;
rule
=
pHP
->
host
.
duel_rule
;
if
(
rule
==
5
)
if
(
rule
==
5
)
...
...
gframe/event_handler.cpp
View file @
ccdbe19c
...
@@ -2134,13 +2134,13 @@ bool ClientField::OnCommonEvent(const irr::SEvent& event) {
...
@@ -2134,13 +2134,13 @@ bool ClientField::OnCommonEvent(const irr::SEvent& event) {
void
ClientField
::
GetHoverField
(
int
x
,
int
y
)
{
void
ClientField
::
GetHoverField
(
int
x
,
int
y
)
{
irr
::
core
::
recti
sfRect
(
430
,
504
,
875
,
600
);
irr
::
core
::
recti
sfRect
(
430
,
504
,
875
,
600
);
irr
::
core
::
recti
ofRect
(
531
,
135
,
800
,
191
);
irr
::
core
::
recti
ofRect
(
531
,
135
,
800
,
191
);
if
(
mainGame
->
dInfo
.
speed
)
{
if
(
mainGame
->
dInfo
.
extraval
&
0x1
)
{
sfRect
=
recti
(
509
,
504
,
796
,
600
);
sfRect
=
recti
(
509
,
504
,
796
,
600
);
ofRect
=
recti
(
531
+
46
,
135
,
800
-
46
,
191
);
ofRect
=
recti
(
531
+
46
,
135
,
800
-
46
,
191
);
}
}
irr
::
core
::
position2di
pos
(
x
,
y
);
irr
::
core
::
position2di
pos
(
x
,
y
);
int
rule
=
(
mainGame
->
dInfo
.
duel_rule
==
3
)
?
0
:
1
;
int
field
=
(
mainGame
->
dInfo
.
duel_field
==
3
||
mainGame
->
dInfo
.
duel_field
==
5
)
?
0
:
1
;
int
speed
=
(
mainGame
->
dInfo
.
speed
)
?
1
:
0
;
int
speed
=
(
mainGame
->
dInfo
.
extraval
&
0x1
)
?
1
:
0
;
if
(
sfRect
.
isPointInside
(
pos
))
{
if
(
sfRect
.
isPointInside
(
pos
))
{
int
hc
=
hand
[
0
].
size
();
int
hc
=
hand
[
0
].
size
();
int
cardSize
=
66
;
int
cardSize
=
66
;
...
@@ -2207,38 +2207,38 @@ void ClientField::GetHoverField(int x, int y) {
...
@@ -2207,38 +2207,38 @@ void ClientField::GetHoverField(int x, int y) {
if
(
boardy
>=
matManager
.
vFieldExtra
[
0
][
speed
][
0
].
Pos
.
Y
&&
boardy
<=
matManager
.
vFieldExtra
[
0
][
speed
][
2
].
Pos
.
Y
)
{
if
(
boardy
>=
matManager
.
vFieldExtra
[
0
][
speed
][
0
].
Pos
.
Y
&&
boardy
<=
matManager
.
vFieldExtra
[
0
][
speed
][
2
].
Pos
.
Y
)
{
hovered_controler
=
0
;
hovered_controler
=
0
;
hovered_location
=
LOCATION_EXTRA
;
hovered_location
=
LOCATION_EXTRA
;
}
else
if
(
boardy
>=
matManager
.
vFieldSzone
[
0
][
5
][
rule
][
speed
][
0
].
Pos
.
Y
&&
boardy
<=
matManager
.
vFieldSzone
[
0
][
5
][
rule
][
speed
][
2
].
Pos
.
Y
)
{
//field
}
else
if
(
boardy
>=
matManager
.
vFieldSzone
[
0
][
5
][
field
][
speed
][
0
].
Pos
.
Y
&&
boardy
<=
matManager
.
vFieldSzone
[
0
][
5
][
field
][
speed
][
2
].
Pos
.
Y
)
{
//field
hovered_controler
=
0
;
hovered_controler
=
0
;
hovered_location
=
LOCATION_SZONE
;
hovered_location
=
LOCATION_SZONE
;
hovered_sequence
=
5
;
hovered_sequence
=
5
;
}
else
if
(
boardy
>=
matManager
.
vFieldSzone
[
0
][
6
][
rule
][
speed
][
0
].
Pos
.
Y
&&
boardy
<=
matManager
.
vFieldSzone
[
0
][
6
][
rule
][
speed
][
2
].
Pos
.
Y
)
{
}
else
if
(
boardy
>=
matManager
.
vFieldSzone
[
0
][
6
][
field
][
speed
][
0
].
Pos
.
Y
&&
boardy
<=
matManager
.
vFieldSzone
[
0
][
6
][
field
][
speed
][
2
].
Pos
.
Y
)
{
hovered_controler
=
0
;
hovered_controler
=
0
;
hovered_location
=
LOCATION_SZONE
;
hovered_location
=
LOCATION_SZONE
;
hovered_sequence
=
6
;
hovered_sequence
=
6
;
}
else
if
(
rule
==
1
&&
boardy
>=
matManager
.
vFieldRemove
[
1
][
rule
][
speed
][
2
].
Pos
.
Y
&&
boardy
<=
matManager
.
vFieldRemove
[
1
][
rule
][
speed
][
0
].
Pos
.
Y
)
{
}
else
if
(
field
==
1
&&
boardy
>=
matManager
.
vFieldRemove
[
1
][
field
][
speed
][
2
].
Pos
.
Y
&&
boardy
<=
matManager
.
vFieldRemove
[
1
][
field
][
speed
][
0
].
Pos
.
Y
)
{
hovered_controler
=
1
;
hovered_controler
=
1
;
hovered_location
=
LOCATION_REMOVED
;
hovered_location
=
LOCATION_REMOVED
;
}
else
if
(
rule
==
0
&&
boardy
>=
matManager
.
vFieldSzone
[
1
][
7
][
rule
][
speed
][
2
].
Pos
.
Y
&&
boardy
<=
matManager
.
vFieldSzone
[
1
][
7
][
rule
][
speed
][
0
].
Pos
.
Y
)
{
}
else
if
(
field
==
0
&&
boardy
>=
matManager
.
vFieldSzone
[
1
][
7
][
field
][
speed
][
2
].
Pos
.
Y
&&
boardy
<=
matManager
.
vFieldSzone
[
1
][
7
][
field
][
speed
][
0
].
Pos
.
Y
)
{
hovered_controler
=
1
;
hovered_controler
=
1
;
hovered_location
=
LOCATION_SZONE
;
hovered_location
=
LOCATION_SZONE
;
hovered_sequence
=
7
;
hovered_sequence
=
7
;
}
else
if
(
boardy
>=
matManager
.
vFieldGrave
[
1
][
rule
][
speed
][
2
].
Pos
.
Y
&&
boardy
<=
matManager
.
vFieldGrave
[
1
][
rule
][
speed
][
0
].
Pos
.
Y
)
{
}
else
if
(
boardy
>=
matManager
.
vFieldGrave
[
1
][
field
][
speed
][
2
].
Pos
.
Y
&&
boardy
<=
matManager
.
vFieldGrave
[
1
][
field
][
speed
][
0
].
Pos
.
Y
)
{
hovered_controler
=
1
;
hovered_controler
=
1
;
hovered_location
=
LOCATION_GRAVE
;
hovered_location
=
LOCATION_GRAVE
;
}
else
if
(
boardy
>=
matManager
.
vFieldDeck
[
1
][
speed
][
2
].
Pos
.
Y
&&
boardy
<=
matManager
.
vFieldDeck
[
1
][
speed
][
0
].
Pos
.
Y
)
{
}
else
if
(
boardy
>=
matManager
.
vFieldDeck
[
1
][
speed
][
2
].
Pos
.
Y
&&
boardy
<=
matManager
.
vFieldDeck
[
1
][
speed
][
0
].
Pos
.
Y
)
{
hovered_controler
=
1
;
hovered_controler
=
1
;
hovered_location
=
LOCATION_DECK
;
hovered_location
=
LOCATION_DECK
;
}
}
}
else
if
(
rule
==
0
&&
boardx
>=
matManager
.
vFieldRemove
[
1
][
rule
][
speed
][
1
].
Pos
.
X
&&
boardx
<=
matManager
.
vFieldRemove
[
1
][
rule
][
speed
][
0
].
Pos
.
X
)
{
}
else
if
(
field
==
0
&&
boardx
>=
matManager
.
vFieldRemove
[
1
][
field
][
speed
][
1
].
Pos
.
X
&&
boardx
<=
matManager
.
vFieldRemove
[
1
][
field
][
speed
][
0
].
Pos
.
X
)
{
if
(
boardy
>=
matManager
.
vFieldRemove
[
1
][
rule
][
speed
][
2
].
Pos
.
Y
&&
boardy
<=
matManager
.
vFieldRemove
[
1
][
rule
][
speed
][
0
].
Pos
.
Y
)
{
if
(
boardy
>=
matManager
.
vFieldRemove
[
1
][
field
][
speed
][
2
].
Pos
.
Y
&&
boardy
<=
matManager
.
vFieldRemove
[
1
][
field
][
speed
][
0
].
Pos
.
Y
)
{
hovered_controler
=
1
;
hovered_controler
=
1
;
hovered_location
=
LOCATION_REMOVED
;
hovered_location
=
LOCATION_REMOVED
;
}
else
if
(
boardy
>=
matManager
.
vFieldContiAct
[
speed
][
0
].
Y
&&
boardy
<=
matManager
.
vFieldContiAct
[
speed
][
2
].
Y
)
{
}
else
if
(
boardy
>=
matManager
.
vFieldContiAct
[
speed
][
0
].
Y
&&
boardy
<=
matManager
.
vFieldContiAct
[
speed
][
2
].
Y
)
{
hovered_controler
=
0
;
hovered_controler
=
0
;
hovered_location
=
POSITION_HINT
;
hovered_location
=
POSITION_HINT
;
}
}
}
else
if
(
rule
==
1
&&
boardx
>=
matManager
.
vFieldSzone
[
1
][
7
][
rule
][
speed
][
1
].
Pos
.
X
&&
boardx
<=
matManager
.
vFieldSzone
[
1
][
7
][
rule
][
speed
][
2
].
Pos
.
X
)
{
}
else
if
(
field
==
1
&&
boardx
>=
matManager
.
vFieldSzone
[
1
][
7
][
field
][
speed
][
1
].
Pos
.
X
&&
boardx
<=
matManager
.
vFieldSzone
[
1
][
7
][
field
][
speed
][
2
].
Pos
.
X
)
{
if
(
boardy
>=
matManager
.
vFieldSzone
[
1
][
7
][
rule
][
speed
][
2
].
Pos
.
Y
&&
boardy
<=
matManager
.
vFieldSzone
[
1
][
7
][
rule
][
speed
][
0
].
Pos
.
Y
)
{
if
(
boardy
>=
matManager
.
vFieldSzone
[
1
][
7
][
field
][
speed
][
2
].
Pos
.
Y
&&
boardy
<=
matManager
.
vFieldSzone
[
1
][
7
][
field
][
speed
][
0
].
Pos
.
Y
)
{
hovered_controler
=
1
;
hovered_controler
=
1
;
hovered_location
=
LOCATION_SZONE
;
hovered_location
=
LOCATION_SZONE
;
hovered_sequence
=
7
;
hovered_sequence
=
7
;
...
@@ -2250,21 +2250,21 @@ void ClientField::GetHoverField(int x, int y) {
...
@@ -2250,21 +2250,21 @@ void ClientField::GetHoverField(int x, int y) {
if
(
boardy
>=
matManager
.
vFieldDeck
[
0
][
speed
][
0
].
Pos
.
Y
&&
boardy
<=
matManager
.
vFieldDeck
[
0
][
speed
][
2
].
Pos
.
Y
)
{
if
(
boardy
>=
matManager
.
vFieldDeck
[
0
][
speed
][
0
].
Pos
.
Y
&&
boardy
<=
matManager
.
vFieldDeck
[
0
][
speed
][
2
].
Pos
.
Y
)
{
hovered_controler
=
0
;
hovered_controler
=
0
;
hovered_location
=
LOCATION_DECK
;
hovered_location
=
LOCATION_DECK
;
}
else
if
(
boardy
>=
matManager
.
vFieldGrave
[
0
][
rule
][
speed
][
0
].
Pos
.
Y
&&
boardy
<=
matManager
.
vFieldGrave
[
0
][
rule
][
speed
][
2
].
Pos
.
Y
)
{
}
else
if
(
boardy
>=
matManager
.
vFieldGrave
[
0
][
field
][
speed
][
0
].
Pos
.
Y
&&
boardy
<=
matManager
.
vFieldGrave
[
0
][
field
][
speed
][
2
].
Pos
.
Y
)
{
hovered_controler
=
0
;
hovered_controler
=
0
;
hovered_location
=
LOCATION_GRAVE
;
hovered_location
=
LOCATION_GRAVE
;
}
else
if
(
boardy
>=
matManager
.
vFieldSzone
[
1
][
6
][
rule
][
speed
][
2
].
Pos
.
Y
&&
boardy
<=
matManager
.
vFieldSzone
[
1
][
6
][
rule
][
speed
][
0
].
Pos
.
Y
)
{
}
else
if
(
boardy
>=
matManager
.
vFieldSzone
[
1
][
6
][
field
][
speed
][
2
].
Pos
.
Y
&&
boardy
<=
matManager
.
vFieldSzone
[
1
][
6
][
field
][
speed
][
0
].
Pos
.
Y
)
{
hovered_controler
=
1
;
hovered_controler
=
1
;
hovered_location
=
LOCATION_SZONE
;
hovered_location
=
LOCATION_SZONE
;
hovered_sequence
=
6
;
hovered_sequence
=
6
;
}
else
if
(
rule
==
0
&&
boardy
>=
matManager
.
vFieldSzone
[
0
][
7
][
rule
][
speed
][
0
].
Pos
.
Y
&&
boardy
<=
matManager
.
vFieldSzone
[
0
][
7
][
rule
][
speed
][
2
].
Pos
.
Y
)
{
}
else
if
(
field
==
0
&&
boardy
>=
matManager
.
vFieldSzone
[
0
][
7
][
field
][
speed
][
0
].
Pos
.
Y
&&
boardy
<=
matManager
.
vFieldSzone
[
0
][
7
][
field
][
speed
][
2
].
Pos
.
Y
)
{
hovered_controler
=
0
;
hovered_controler
=
0
;
hovered_location
=
LOCATION_SZONE
;
hovered_location
=
LOCATION_SZONE
;
hovered_sequence
=
7
;
hovered_sequence
=
7
;
}
else
if
(
rule
==
1
&&
boardy
>=
matManager
.
vFieldRemove
[
0
][
rule
][
speed
][
0
].
Pos
.
Y
&&
boardy
<=
matManager
.
vFieldRemove
[
0
][
rule
][
speed
][
2
].
Pos
.
Y
)
{
}
else
if
(
field
==
1
&&
boardy
>=
matManager
.
vFieldRemove
[
0
][
field
][
speed
][
0
].
Pos
.
Y
&&
boardy
<=
matManager
.
vFieldRemove
[
0
][
field
][
speed
][
2
].
Pos
.
Y
)
{
hovered_controler
=
0
;
hovered_controler
=
0
;
hovered_location
=
LOCATION_REMOVED
;
hovered_location
=
LOCATION_REMOVED
;
}
else
if
(
boardy
>=
matManager
.
vFieldSzone
[
1
][
5
][
rule
][
speed
][
2
].
Pos
.
Y
&&
boardy
<=
matManager
.
vFieldSzone
[
1
][
5
][
rule
][
speed
][
0
].
Pos
.
Y
)
{
}
else
if
(
boardy
>=
matManager
.
vFieldSzone
[
1
][
5
][
field
][
speed
][
2
].
Pos
.
Y
&&
boardy
<=
matManager
.
vFieldSzone
[
1
][
5
][
field
][
speed
][
0
].
Pos
.
Y
)
{
hovered_controler
=
1
;
hovered_controler
=
1
;
hovered_location
=
LOCATION_SZONE
;
hovered_location
=
LOCATION_SZONE
;
hovered_sequence
=
5
;
hovered_sequence
=
5
;
...
@@ -2272,14 +2272,14 @@ void ClientField::GetHoverField(int x, int y) {
...
@@ -2272,14 +2272,14 @@ void ClientField::GetHoverField(int x, int y) {
hovered_controler
=
1
;
hovered_controler
=
1
;
hovered_location
=
LOCATION_EXTRA
;
hovered_location
=
LOCATION_EXTRA
;
}
}
}
else
if
(
rule
==
1
&&
boardx
>=
matManager
.
vFieldSzone
[
0
][
7
][
rule
][
speed
][
0
].
Pos
.
X
&&
boardx
<=
matManager
.
vFieldSzone
[
0
][
7
][
rule
][
speed
][
1
].
Pos
.
X
)
{
}
else
if
(
field
==
1
&&
boardx
>=
matManager
.
vFieldSzone
[
0
][
7
][
field
][
speed
][
0
].
Pos
.
X
&&
boardx
<=
matManager
.
vFieldSzone
[
0
][
7
][
field
][
speed
][
1
].
Pos
.
X
)
{
if
(
boardy
>=
matManager
.
vFieldSzone
[
0
][
7
][
rule
][
speed
][
0
].
Pos
.
Y
&&
boardy
<=
matManager
.
vFieldSzone
[
0
][
7
][
rule
][
speed
][
2
].
Pos
.
Y
)
{
if
(
boardy
>=
matManager
.
vFieldSzone
[
0
][
7
][
field
][
speed
][
0
].
Pos
.
Y
&&
boardy
<=
matManager
.
vFieldSzone
[
0
][
7
][
field
][
speed
][
2
].
Pos
.
Y
)
{
hovered_controler
=
0
;
hovered_controler
=
0
;
hovered_location
=
LOCATION_SZONE
;
hovered_location
=
LOCATION_SZONE
;
hovered_sequence
=
7
;
hovered_sequence
=
7
;
}
}
}
else
if
(
rule
==
0
&&
boardx
>=
matManager
.
vFieldRemove
[
0
][
rule
][
speed
][
0
].
Pos
.
X
&&
boardx
<=
matManager
.
vFieldRemove
[
0
][
rule
][
speed
][
1
].
Pos
.
X
)
{
}
else
if
(
field
==
0
&&
boardx
>=
matManager
.
vFieldRemove
[
0
][
field
][
speed
][
0
].
Pos
.
X
&&
boardx
<=
matManager
.
vFieldRemove
[
0
][
field
][
speed
][
1
].
Pos
.
X
)
{
if
(
boardy
>=
matManager
.
vFieldRemove
[
0
][
rule
][
speed
][
0
].
Pos
.
Y
&&
boardy
<=
matManager
.
vFieldRemove
[
0
][
rule
][
speed
][
2
].
Pos
.
Y
)
{
if
(
boardy
>=
matManager
.
vFieldRemove
[
0
][
field
][
speed
][
0
].
Pos
.
Y
&&
boardy
<=
matManager
.
vFieldRemove
[
0
][
field
][
speed
][
2
].
Pos
.
Y
)
{
hovered_controler
=
0
;
hovered_controler
=
0
;
hovered_location
=
LOCATION_REMOVED
;
hovered_location
=
LOCATION_REMOVED
;
}
}
...
@@ -2287,9 +2287,9 @@ void ClientField::GetHoverField(int x, int y) {
...
@@ -2287,9 +2287,9 @@ void ClientField::GetHoverField(int x, int y) {
int
sequence
=
(
boardx
-
matManager
.
vFieldMzone
[
0
][
0
][
0
].
Pos
.
X
)
/
(
matManager
.
vFieldMzone
[
0
][
0
][
1
].
Pos
.
X
-
matManager
.
vFieldMzone
[
0
][
0
][
0
].
Pos
.
X
);
int
sequence
=
(
boardx
-
matManager
.
vFieldMzone
[
0
][
0
][
0
].
Pos
.
X
)
/
(
matManager
.
vFieldMzone
[
0
][
0
][
1
].
Pos
.
X
-
matManager
.
vFieldMzone
[
0
][
0
][
0
].
Pos
.
X
);
if
(
sequence
>
4
)
if
(
sequence
>
4
)
sequence
=
4
;
sequence
=
4
;
if
(
mainGame
->
dInfo
.
speed
&&
(
sequence
==
0
||
sequence
==
4
))
if
(
(
mainGame
->
dInfo
.
extraval
&
0x1
)
&&
(
sequence
==
0
||
sequence
==
4
))
hovered_location
=
0
;
hovered_location
=
0
;
else
if
(
boardy
>
matManager
.
vFieldSzone
[
0
][
0
][
rule
][
speed
][
0
].
Pos
.
Y
&&
boardy
<=
matManager
.
vFieldSzone
[
0
][
0
][
rule
][
speed
][
2
].
Pos
.
Y
)
{
else
if
(
boardy
>
matManager
.
vFieldSzone
[
0
][
0
][
field
][
speed
][
0
].
Pos
.
Y
&&
boardy
<=
matManager
.
vFieldSzone
[
0
][
0
][
field
][
speed
][
2
].
Pos
.
Y
)
{
hovered_controler
=
0
;
hovered_controler
=
0
;
hovered_location
=
LOCATION_SZONE
;
hovered_location
=
LOCATION_SZONE
;
hovered_sequence
=
sequence
;
hovered_sequence
=
sequence
;
...
@@ -2323,7 +2323,7 @@ void ClientField::GetHoverField(int x, int y) {
...
@@ -2323,7 +2323,7 @@ void ClientField::GetHoverField(int x, int y) {
hovered_controler
=
1
;
hovered_controler
=
1
;
hovered_location
=
LOCATION_MZONE
;
hovered_location
=
LOCATION_MZONE
;
hovered_sequence
=
4
-
sequence
;
hovered_sequence
=
4
-
sequence
;
}
else
if
(
boardy
>=
matManager
.
vFieldSzone
[
1
][
0
][
rule
][
speed
][
2
].
Pos
.
Y
&&
boardy
<
matManager
.
vFieldSzone
[
1
][
0
][
rule
][
speed
][
0
].
Pos
.
Y
)
{
}
else
if
(
boardy
>=
matManager
.
vFieldSzone
[
1
][
0
][
field
][
speed
][
2
].
Pos
.
Y
&&
boardy
<
matManager
.
vFieldSzone
[
1
][
0
][
field
][
speed
][
0
].
Pos
.
Y
)
{
hovered_controler
=
1
;
hovered_controler
=
1
;
hovered_location
=
LOCATION_SZONE
;
hovered_location
=
LOCATION_SZONE
;
hovered_sequence
=
4
-
sequence
;
hovered_sequence
=
4
-
sequence
;
...
...
gframe/game.cpp
View file @
ccdbe19c
...
@@ -177,14 +177,34 @@ bool Game::Initialize() {
...
@@ -177,14 +177,34 @@ bool Game::Initialize() {
cbDuelRule
->
addItem
(
dataManager
.
GetSysString
(
1263
));
cbDuelRule
->
addItem
(
dataManager
.
GetSysString
(
1263
));
cbDuelRule
->
setSelected
(
DEFAULT_DUEL_RULE
-
1
);
cbDuelRule
->
setSelected
(
DEFAULT_DUEL_RULE
-
1
);
btnCustomRule
=
env
->
addButton
(
rect
<
s32
>
(
305
,
175
,
370
,
200
),
wCreateHost
,
BUTTON_CUSTOM_RULE
,
dataManager
.
GetSysString
(
1626
));
btnCustomRule
=
env
->
addButton
(
rect
<
s32
>
(
305
,
175
,
370
,
200
),
wCreateHost
,
BUTTON_CUSTOM_RULE
,
dataManager
.
GetSysString
(
1626
));
wCustomRules
=
env
->
addWindow
(
rect
<
s32
>
(
700
,
100
,
910
,
28
0
),
false
,
dataManager
.
strBuffer
);
wCustomRules
=
env
->
addWindow
(
rect
<
s32
>
(
700
,
100
,
910
,
41
0
),
false
,
dataManager
.
strBuffer
);
wCustomRules
->
getCloseButton
()
->
setVisible
(
false
);
wCustomRules
->
getCloseButton
()
->
setVisible
(
false
);
wCustomRules
->
setDrawTitlebar
(
false
);
wCustomRules
->
setDrawTitlebar
(
false
);
wCustomRules
->
setDraggable
(
true
);
wCustomRules
->
setDraggable
(
true
);
wCustomRules
->
setVisible
(
false
);
wCustomRules
->
setVisible
(
false
);
for
(
int
i
=
0
;
i
<
5
;
++
i
)
int
spacing
=
0
;
chkCustomRules
[
i
]
=
env
->
addCheckBox
(
false
,
recti
(
10
,
10
+
i
*
20
,
200
,
30
+
i
*
20
),
wCustomRules
,
353
+
i
,
dataManager
.
GetSysString
(
1265
+
i
));
env
->
addStaticText
(
dataManager
.
GetSysString
(
1629
),
rect
<
s32
>
(
10
,
10
+
spacing
*
20
,
200
,
30
+
spacing
*
20
),
false
,
false
,
wCustomRules
);
btnCustomRulesOK
=
env
->
addButton
(
rect
<
s32
>
(
55
,
130
,
155
,
155
),
wCustomRules
,
BUTTON_CUSTOM_RULE_OK
,
dataManager
.
GetSysString
(
1211
));
spacing
++
;
for
(
int
i
=
0
;
i
<
6
;
++
i
,
++
spacing
)
chkCustomRules
[
i
]
=
env
->
addCheckBox
(
false
,
recti
(
10
,
10
+
spacing
*
20
,
200
,
30
+
spacing
*
20
),
wCustomRules
,
-
1
,
dataManager
.
GetSysString
(
1631
+
i
));
env
->
addStaticText
(
dataManager
.
GetSysString
(
1628
),
rect
<
s32
>
(
10
,
10
+
spacing
*
20
,
200
,
30
+
spacing
*
20
),
false
,
false
,
wCustomRules
);
myswprintf
(
strbuf
,
dataManager
.
GetSysString
(
1627
),
dataManager
.
GetSysString
(
1056
));
spacing
++
;
chkTypeLimit
[
0
]
=
env
->
addCheckBox
(
false
,
recti
(
10
,
10
+
spacing
*
20
,
200
,
30
+
spacing
*
20
),
wCustomRules
,
-
1
,
strbuf
);
myswprintf
(
strbuf
,
dataManager
.
GetSysString
(
1627
),
dataManager
.
GetSysString
(
1063
));
spacing
++
;
chkTypeLimit
[
1
]
=
env
->
addCheckBox
(
false
,
recti
(
10
,
10
+
spacing
*
20
,
200
,
30
+
spacing
*
20
),
wCustomRules
,
-
1
,
strbuf
);
myswprintf
(
strbuf
,
dataManager
.
GetSysString
(
1627
),
dataManager
.
GetSysString
(
1073
));
spacing
++
;
chkTypeLimit
[
2
]
=
env
->
addCheckBox
(
false
,
recti
(
10
,
10
+
spacing
*
20
,
200
,
30
+
spacing
*
20
),
wCustomRules
,
-
1
,
strbuf
);
myswprintf
(
strbuf
,
dataManager
.
GetSysString
(
1627
),
dataManager
.
GetSysString
(
1074
));
spacing
++
;
chkTypeLimit
[
3
]
=
env
->
addCheckBox
(
false
,
recti
(
10
,
10
+
spacing
*
20
,
200
,
30
+
spacing
*
20
),
wCustomRules
,
-
1
,
strbuf
);
myswprintf
(
strbuf
,
dataManager
.
GetSysString
(
1627
),
dataManager
.
GetSysString
(
1076
));
spacing
++
;
chkTypeLimit
[
4
]
=
env
->
addCheckBox
(
false
,
recti
(
10
,
10
+
spacing
*
20
,
200
,
30
+
spacing
*
20
),
wCustomRules
,
353
+
spacing
,
strbuf
);
btnCustomRulesOK
=
env
->
addButton
(
rect
<
s32
>
(
55
,
270
,
155
,
295
),
wCustomRules
,
BUTTON_CUSTOM_RULE_OK
,
dataManager
.
GetSysString
(
1211
));
forbiddentypes
=
MASTER_RULE_4_FORB
;
duel_param
=
MASTER_RULE_4
;
duel_param
=
MASTER_RULE_4
;
chkNoCheckDeck
=
env
->
addCheckBox
(
false
,
rect
<
s32
>
(
20
,
210
,
170
,
230
),
wCreateHost
,
-
1
,
dataManager
.
GetSysString
(
1229
));
chkNoCheckDeck
=
env
->
addCheckBox
(
false
,
rect
<
s32
>
(
20
,
210
,
170
,
230
),
wCreateHost
,
-
1
,
dataManager
.
GetSysString
(
1229
));
chkNoShuffleDeck
=
env
->
addCheckBox
(
false
,
rect
<
s32
>
(
180
,
210
,
360
,
230
),
wCreateHost
,
-
1
,
dataManager
.
GetSysString
(
1230
));
chkNoShuffleDeck
=
env
->
addCheckBox
(
false
,
rect
<
s32
>
(
180
,
210
,
360
,
230
),
wCreateHost
,
-
1
,
dataManager
.
GetSysString
(
1230
));
...
@@ -1429,10 +1449,16 @@ const wchar_t* Game::LocalName(int local_player) {
...
@@ -1429,10 +1449,16 @@ const wchar_t* Game::LocalName(int local_player) {
}
}
void
Game
::
UpdateDuelParam
()
{
void
Game
::
UpdateDuelParam
()
{
uint32
flag
=
0
,
filter
=
0x100
;
uint32
flag
=
0
,
filter
=
0x100
;
for
(
int
i
=
0
;
i
<
5
;
++
i
,
filter
<<=
1
)
for
(
int
i
=
0
;
i
<
6
;
++
i
,
filter
<<=
1
)
if
(
chkCustomRules
[
i
]
->
isChecked
())
{
if
(
chkCustomRules
[
i
]
->
isChecked
())
{
flag
|=
filter
;
flag
|=
filter
;
}
}
uint32
limits
[]
=
{
TYPE_FUSION
,
TYPE_SYNCHRO
,
TYPE_XYZ
,
TYPE_PENDULUM
,
TYPE_LINK
};
uint32
flag2
=
0
;
for
(
int
i
=
0
;
i
<
5
;
++
i
)
if
(
chkTypeLimit
[
i
]
->
isChecked
())
{
flag2
|=
limits
[
i
];
}
cbDuelRule
->
clear
();
cbDuelRule
->
clear
();
cbDuelRule
->
addItem
(
dataManager
.
GetSysString
(
1260
));
cbDuelRule
->
addItem
(
dataManager
.
GetSysString
(
1260
));
cbDuelRule
->
addItem
(
dataManager
.
GetSysString
(
1261
));
cbDuelRule
->
addItem
(
dataManager
.
GetSysString
(
1261
));
...
@@ -1441,58 +1467,65 @@ void Game::UpdateDuelParam() {
...
@@ -1441,58 +1467,65 @@ void Game::UpdateDuelParam() {
switch
(
flag
)
{
switch
(
flag
)
{
case
MASTER_RULE_1
:
{
case
MASTER_RULE_1
:
{
cbDuelRule
->
setSelected
(
0
);
cbDuelRule
->
setSelected
(
0
);
break
;
if
(
flag2
==
MASTER_RULE_1_FORB
)
break
;
}
}
case
MASTER_RULE_2
:
{
case
MASTER_RULE_2
:
{
cbDuelRule
->
setSelected
(
1
);
cbDuelRule
->
setSelected
(
1
);
break
;
if
(
flag2
==
MASTER_RULE_2_FORB
)
break
;
}
}
case
MASTER_RULE_3
:
{
case
MASTER_RULE_3
:
{
cbDuelRule
->
setSelected
(
2
);
cbDuelRule
->
setSelected
(
2
);
break
;
if
(
flag2
==
MASTER_RULE_3_FORB
)
break
;
}
}
case
MASTER_RULE_4
:
{
case
MASTER_RULE_4
:
{
cbDuelRule
->
setSelected
(
3
);
cbDuelRule
->
setSelected
(
3
);
break
;
if
(
flag2
==
MASTER_RULE_4_FORB
)
break
;
}
}
default:
{
default:
{
cbDuelRule
->
addItem
(
dataManager
.
GetSysString
(
1
264
));
cbDuelRule
->
addItem
(
dataManager
.
GetSysString
(
1
630
));
cbDuelRule
->
setSelected
(
4
);
cbDuelRule
->
setSelected
(
4
);
break
;
break
;
}
}
}
}
duel_param
=
flag
;
duel_param
=
flag
;
forbiddentypes
=
flag2
;
}
}
int
Game
::
GetMasterRule
(
uint32
param
,
int
*
truerule
)
{
int
Game
::
GetMasterRule
(
uint32
param
,
uint32
forbiddentypes
,
int
*
truerule
)
{
switch
(
param
)
{
switch
(
param
)
{
case
MASTER_RULE_1
:
{
case
MASTER_RULE_1
:
{
if
(
truerule
)
if
(
truerule
)
*
truerule
=
1
;
*
truerule
=
1
;
return
1
;
if
(
forbiddentypes
==
MASTER_RULE_1_FORB
)
break
;
return
1
;
}
}
case
MASTER_RULE_2
:
{
case
MASTER_RULE_2
:
{
if
(
truerule
)
if
(
truerule
)
*
truerule
=
2
;
*
truerule
=
2
;
return
2
;
if
(
forbiddentypes
==
MASTER_RULE_2_FORB
)
break
;
return
1
;
}
}
case
MASTER_RULE_3
:
{
case
MASTER_RULE_3
:
{
if
(
truerule
)
if
(
truerule
)
*
truerule
=
3
;
*
truerule
=
3
;
return
3
;
if
(
forbiddentypes
==
MASTER_RULE_3_FORB
)
break
;
return
1
;
}
}
case
MASTER_RULE_4
:
{
case
MASTER_RULE_4
:
{
if
(
truerule
)
if
(
truerule
)
*
truerule
=
4
;
*
truerule
=
4
;
return
4
;
if
(
forbiddentypes
==
MASTER_RULE_4_FORB
)
break
;
return
1
;
}
}
default:
{
default:
{
if
(
truerule
)
if
(
truerule
)
*
truerule
=
5
;
*
truerule
=
5
;
if
(
param
&
DUEL_EMZONE
)
if
((
param
&
DUEL_PZONE
)
&&
(
param
&
DUEL_SEPARATE_PZONE
)
&&
(
param
&
DUEL_EMZONE
))
return
5
;
else
if
(
param
&
DUEL_EMZONE
)
return
4
;
return
4
;
else
if
(
param
&
DUEL_PZONE
)
else
if
(
param
&
DUEL_PZONE
)
return
3
;
return
3
;
...
@@ -1555,7 +1588,7 @@ void Game::OnResize()
...
@@ -1555,7 +1588,7 @@ void Game::OnResize()
wHostPrepare
->
setRelativePosition
(
ResizeWin
(
270
,
120
,
750
,
440
));
wHostPrepare
->
setRelativePosition
(
ResizeWin
(
270
,
120
,
750
,
440
));
wHostPrepare2
->
setRelativePosition
(
ResizeWin
(
750
,
120
,
950
,
440
));
wHostPrepare2
->
setRelativePosition
(
ResizeWin
(
750
,
120
,
950
,
440
));
wRules
->
setRelativePosition
(
ResizeWin
(
630
,
100
,
1000
,
310
));
wRules
->
setRelativePosition
(
ResizeWin
(
630
,
100
,
1000
,
310
));
wCustomRules
->
setRelativePosition
(
ResizeWin
(
700
,
100
,
910
,
28
0
));
wCustomRules
->
setRelativePosition
(
ResizeWin
(
700
,
100
,
910
,
41
0
));
wReplay
->
setRelativePosition
(
ResizeWin
(
220
,
100
,
800
,
520
));
wReplay
->
setRelativePosition
(
ResizeWin
(
220
,
100
,
800
,
520
));
wSinglePlay
->
setRelativePosition
(
ResizeWin
(
220
,
100
,
800
,
520
));
wSinglePlay
->
setRelativePosition
(
ResizeWin
(
220
,
100
,
800
,
520
));
...
@@ -1602,8 +1635,8 @@ void Game::OnResize()
...
@@ -1602,8 +1635,8 @@ void Game::OnResize()
btnReplayExit
->
setRelativePosition
(
Resize
(
5
,
105
,
85
,
125
));
btnReplayExit
->
setRelativePosition
(
Resize
(
5
,
105
,
85
,
125
));
wPhase
->
setRelativePosition
(
Resize
(
480
,
310
,
855
,
330
));
wPhase
->
setRelativePosition
(
Resize
(
480
,
310
,
855
,
330
));
if
(
dInfo
.
speed
)
{
if
(
dInfo
.
extraval
&
0x1
)
{
if
(
dInfo
.
duel_
rule
>=
4
)
{
if
(
dInfo
.
duel_
field
>=
4
)
{
wPhase
->
setRelativePosition
(
Resize
(
480
,
290
,
855
,
350
));
wPhase
->
setRelativePosition
(
Resize
(
480
,
290
,
855
,
350
));
btnShuffle
->
setRelativePosition
(
Resize
(
0
,
40
,
50
,
60
));
btnShuffle
->
setRelativePosition
(
Resize
(
0
,
40
,
50
,
60
));
btnDP
->
setRelativePosition
(
Resize
(
0
,
40
,
50
,
60
));
btnDP
->
setRelativePosition
(
Resize
(
0
,
40
,
50
,
60
));
...
@@ -1623,7 +1656,7 @@ void Game::OnResize()
...
@@ -1623,7 +1656,7 @@ void Game::OnResize()
}
}
}
else
{
}
else
{
btnDP
->
setRelativePosition
(
Resize
(
0
,
0
,
50
,
20
));
btnDP
->
setRelativePosition
(
Resize
(
0
,
0
,
50
,
20
));
if
(
dInfo
.
duel_
rule
>=
4
)
{
if
(
dInfo
.
duel_
field
>=
4
)
{
btnSP
->
setRelativePosition
(
Resize
(
0
,
0
,
50
,
20
));
btnSP
->
setRelativePosition
(
Resize
(
0
,
0
,
50
,
20
));
btnM1
->
setRelativePosition
(
Resize
(
160
,
0
,
210
,
20
));
btnM1
->
setRelativePosition
(
Resize
(
160
,
0
,
210
,
20
));
btnBP
->
setRelativePosition
(
Resize
(
160
,
0
,
210
,
20
));
btnBP
->
setRelativePosition
(
Resize
(
160
,
0
,
210
,
20
));
...
...
gframe/game.h
View file @
ccdbe19c
...
@@ -56,9 +56,9 @@ struct DuelInfo {
...
@@ -56,9 +56,9 @@ struct DuelInfo {
bool
tag_player
[
2
];
bool
tag_player
[
2
];
int
lp
[
2
];
int
lp
[
2
];
int
startlp
;
int
startlp
;
int
duel_rule
;
int
duel_field
;
int
speed
=
false
;
int
lua64
;
int
lua64
;
int
extraval
;
int
turn
;
int
turn
;
short
curMsg
;
short
curMsg
;
wchar_t
hostname
[
20
];
wchar_t
hostname
[
20
];
...
@@ -130,7 +130,7 @@ public:
...
@@ -130,7 +130,7 @@ public:
int
LocalPlayer
(
int
player
);
int
LocalPlayer
(
int
player
);
const
wchar_t
*
LocalName
(
int
local_player
);
const
wchar_t
*
LocalName
(
int
local_player
);
void
UpdateDuelParam
();
void
UpdateDuelParam
();
int
GetMasterRule
(
uint32
param
,
int
*
truerule
=
0
);
int
GetMasterRule
(
uint32
param
,
uint32
forbidden
,
int
*
truerule
=
0
);
bool
HasFocus
(
EGUI_ELEMENT_TYPE
type
)
const
{
bool
HasFocus
(
EGUI_ELEMENT_TYPE
type
)
const
{
irr
::
gui
::
IGUIElement
*
focus
=
env
->
getFocus
();
irr
::
gui
::
IGUIElement
*
focus
=
env
->
getFocus
();
...
@@ -189,6 +189,7 @@ public:
...
@@ -189,6 +189,7 @@ public:
bool
is_building
;
bool
is_building
;
bool
is_siding
;
bool
is_siding
;
int
forbiddentypes
;
uint32
duel_param
;
uint32
duel_param
;
int
texty
;
int
texty
;
...
@@ -275,7 +276,8 @@ public:
...
@@ -275,7 +276,8 @@ public:
irr
::
gui
::
IGUIButton
*
btnRulesOK
;
irr
::
gui
::
IGUIButton
*
btnRulesOK
;
irr
::
gui
::
IGUIComboBox
*
cbDuelRule
;
irr
::
gui
::
IGUIComboBox
*
cbDuelRule
;
irr
::
gui
::
IGUIButton
*
btnCustomRule
;
irr
::
gui
::
IGUIButton
*
btnCustomRule
;
irr
::
gui
::
IGUICheckBox
*
chkCustomRules
[
5
];
irr
::
gui
::
IGUICheckBox
*
chkCustomRules
[
6
];
irr
::
gui
::
IGUICheckBox
*
chkTypeLimit
[
5
];
irr
::
gui
::
IGUIWindow
*
wCustomRules
;
irr
::
gui
::
IGUIWindow
*
wCustomRules
;
irr
::
gui
::
IGUIButton
*
btnCustomRulesOK
;
irr
::
gui
::
IGUIButton
*
btnCustomRulesOK
;
irr
::
gui
::
IGUICheckBox
*
chkNoCheckDeck
;
irr
::
gui
::
IGUICheckBox
*
chkNoCheckDeck
;
...
...
gframe/image_manager.cpp
View file @
ccdbe19c
...
@@ -39,12 +39,16 @@ bool ImageManager::Initial() {
...
@@ -39,12 +39,16 @@ bool ImageManager::Initial() {
tFieldTransparent
[
0
][
1
]
=
driver
->
getTexture
(
"textures/field-transparent3.png"
);
tFieldTransparent
[
0
][
1
]
=
driver
->
getTexture
(
"textures/field-transparent3.png"
);
tField
[
0
][
2
]
=
driver
->
getTexture
(
"textures/field.png"
);
tField
[
0
][
2
]
=
driver
->
getTexture
(
"textures/field.png"
);
tFieldTransparent
[
0
][
2
]
=
driver
->
getTexture
(
"textures/field-transparent.png"
);
tFieldTransparent
[
0
][
2
]
=
driver
->
getTexture
(
"textures/field-transparent.png"
);
tField
[
0
][
3
]
=
driver
->
getTexture
(
"textures/field4.png"
);
tFieldTransparent
[
0
][
3
]
=
driver
->
getTexture
(
"textures/field-transparent4.png"
);
tField
[
1
][
0
]
=
driver
->
getTexture
(
"textures/fieldSP2.png"
);
tField
[
1
][
0
]
=
driver
->
getTexture
(
"textures/fieldSP2.png"
);
tFieldTransparent
[
1
][
0
]
=
driver
->
getTexture
(
"textures/field-transparentSP2.png"
);
tFieldTransparent
[
1
][
0
]
=
driver
->
getTexture
(
"textures/field-transparentSP2.png"
);
tField
[
1
][
1
]
=
driver
->
getTexture
(
"textures/fieldSP3.png"
);
tField
[
1
][
1
]
=
driver
->
getTexture
(
"textures/fieldSP3.png"
);
tFieldTransparent
[
1
][
1
]
=
driver
->
getTexture
(
"textures/field-transparentSP3.png"
);
tFieldTransparent
[
1
][
1
]
=
driver
->
getTexture
(
"textures/field-transparentSP3.png"
);
tField
[
1
][
2
]
=
driver
->
getTexture
(
"textures/fieldSP.png"
);
tField
[
1
][
2
]
=
driver
->
getTexture
(
"textures/fieldSP.png"
);
tFieldTransparent
[
1
][
2
]
=
driver
->
getTexture
(
"textures/field-transparentSP.png"
);
tFieldTransparent
[
1
][
2
]
=
driver
->
getTexture
(
"textures/field-transparentSP.png"
);
tField
[
1
][
3
]
=
driver
->
getTexture
(
"textures/fieldSP4.png"
);
tFieldTransparent
[
1
][
3
]
=
driver
->
getTexture
(
"textures/field-transparentSP4.png"
);
return
true
;
return
true
;
}
}
void
ImageManager
::
SetDevice
(
irr
::
IrrlichtDevice
*
dev
)
{
void
ImageManager
::
SetDevice
(
irr
::
IrrlichtDevice
*
dev
)
{
...
...
gframe/image_manager.h
View file @
ccdbe19c
...
@@ -41,8 +41,8 @@ public:
...
@@ -41,8 +41,8 @@ public:
irr
::
video
::
ITexture
*
tBackGround
;
irr
::
video
::
ITexture
*
tBackGround
;
irr
::
video
::
ITexture
*
tBackGround_menu
;
irr
::
video
::
ITexture
*
tBackGround_menu
;
irr
::
video
::
ITexture
*
tBackGround_deck
;
irr
::
video
::
ITexture
*
tBackGround_deck
;
irr
::
video
::
ITexture
*
tField
[
3
][
3
];
irr
::
video
::
ITexture
*
tField
[
2
][
4
];
irr
::
video
::
ITexture
*
tFieldTransparent
[
3
][
3
];
irr
::
video
::
ITexture
*
tFieldTransparent
[
2
][
4
];
};
};
extern
ImageManager
imageManager
;
extern
ImageManager
imageManager
;
...
...
gframe/menu_handler.cpp
View file @
ccdbe19c
...
@@ -136,27 +136,37 @@ bool MenuHandler::OnEvent(const irr::SEvent& event) {
...
@@ -136,27 +136,37 @@ bool MenuHandler::OnEvent(const irr::SEvent& event) {
switch
(
mainGame
->
cbDuelRule
->
getSelected
())
{
switch
(
mainGame
->
cbDuelRule
->
getSelected
())
{
case
0
:
{
case
0
:
{
mainGame
->
duel_param
=
MASTER_RULE_1
;
mainGame
->
duel_param
=
MASTER_RULE_1
;
mainGame
->
forbiddentypes
=
MASTER_RULE_1_FORB
;
break
;
break
;
}
}
case
1
:
{
case
1
:
{
mainGame
->
duel_param
=
MASTER_RULE_2
;
mainGame
->
duel_param
=
MASTER_RULE_2
;
mainGame
->
forbiddentypes
=
MASTER_RULE_2_FORB
;
break
;
break
;
}
}
case
2
:
{
case
2
:
{
mainGame
->
duel_param
=
MASTER_RULE_3
;
mainGame
->
duel_param
=
MASTER_RULE_3
;
mainGame
->
forbiddentypes
=
MASTER_RULE_3_FORB
;
break
;
break
;
}
}
case
3
:
{
case
3
:
{
mainGame
->
duel_param
=
MASTER_RULE_4
;
mainGame
->
duel_param
=
MASTER_RULE_4
;
mainGame
->
forbiddentypes
=
MASTER_RULE_4_FORB
;
break
;
break
;
}
}
}
}
uint32
filter
=
0x100
;
uint32
filter
=
0x100
;
for
(
int
i
=
0
;
i
<
5
;
++
i
,
filter
<<=
1
)
for
(
int
i
=
0
;
i
<
6
;
++
i
,
filter
<<=
1
)
if
(
mainGame
->
duel_param
&
filter
)
if
(
mainGame
->
duel_param
&
filter
)
mainGame
->
chkCustomRules
[
i
]
->
setChecked
(
true
);
mainGame
->
chkCustomRules
[
i
]
->
setChecked
(
true
);
else
else
mainGame
->
chkCustomRules
[
i
]
->
setChecked
(
false
);
mainGame
->
chkCustomRules
[
i
]
->
setChecked
(
false
);
uint32
limits
[]
=
{
TYPE_FUSION
,
TYPE_SYNCHRO
,
TYPE_XYZ
,
TYPE_PENDULUM
,
TYPE_LINK
};
for
(
int
i
=
0
;
i
<
5
;
++
i
,
filter
<<=
1
)
if
(
mainGame
->
forbiddentypes
&
limits
[
i
])
mainGame
->
chkTypeLimit
[
i
]
->
setChecked
(
true
);
else
mainGame
->
chkTypeLimit
[
i
]
->
setChecked
(
false
);
mainGame
->
PopupElement
(
mainGame
->
wCustomRules
);
mainGame
->
PopupElement
(
mainGame
->
wCustomRules
);
break
;
break
;
}
}
...
@@ -557,7 +567,7 @@ bool MenuHandler::OnEvent(const irr::SEvent& event) {
...
@@ -557,7 +567,7 @@ bool MenuHandler::OnEvent(const irr::SEvent& event) {
}
}
}
}
uint32
filter
=
0x100
;
uint32
filter
=
0x100
;
for
(
int
i
=
0
;
i
<
5
;
++
i
,
filter
<<=
1
)
for
(
int
i
=
0
;
i
<
6
;
++
i
,
filter
<<=
1
)
if
(
mainGame
->
duel_param
&
filter
)
if
(
mainGame
->
duel_param
&
filter
)
mainGame
->
chkCustomRules
[
i
]
->
setChecked
(
true
);
mainGame
->
chkCustomRules
[
i
]
->
setChecked
(
true
);
else
else
...
...
gframe/replay_mode.cpp
View file @
ccdbe19c
...
@@ -106,12 +106,14 @@ int ReplayMode::ReplayThread(void* param) {
...
@@ -106,12 +106,14 @@ int ReplayMode::ReplayThread(void* param) {
opt
|=
MASTER_RULE_1
;
opt
|=
MASTER_RULE_1
;
}
else
if
(
!
(
opt
&
0xff80
))
}
else
if
(
!
(
opt
&
0xff80
))
opt
|=
MASTER_RULE_3
;
opt
|=
MASTER_RULE_3
;
mainGame
->
dInfo
.
duel_rule
=
2
;
mainGame
->
dInfo
.
duel_field
=
2
;
if
(
opt
&
DUEL_EMZONE
)
if
((
opt
&
DUEL_PZONE
)
&&
(
opt
&
DUEL_SEPARATE_PZONE
)
&&
(
opt
&
DUEL_EMZONE
))
mainGame
->
dInfo
.
duel_rule
=
4
;
mainGame
->
dInfo
.
duel_field
=
5
;
else
if
(
opt
&
DUEL_EMZONE
)
mainGame
->
dInfo
.
duel_field
=
4
;
else
if
(
opt
&
DUEL_PZONE
)
else
if
(
opt
&
DUEL_PZONE
)
mainGame
->
dInfo
.
duel_
rule
=
3
;
mainGame
->
dInfo
.
duel_
field
=
3
;
mainGame
->
dInfo
.
speed
=
(
opt
&
SPEED_DUEL
)
?
1
:
0
;
mainGame
->
dInfo
.
extraval
=
(
opt
&
SPEED_DUEL
)
?
1
:
0
;
set_player_info
(
pduel
,
0
,
start_lp
,
start_hand
,
draw_count
);
set_player_info
(
pduel
,
0
,
start_lp
,
start_hand
,
draw_count
);
set_player_info
(
pduel
,
1
,
start_lp
,
start_hand
,
draw_count
);
set_player_info
(
pduel
,
1
,
start_lp
,
start_hand
,
draw_count
);
mainGame
->
dInfo
.
lp
[
0
]
=
start_lp
;
mainGame
->
dInfo
.
lp
[
0
]
=
start_lp
;
...
@@ -122,8 +124,8 @@ int ReplayMode::ReplayThread(void* param) {
...
@@ -122,8 +124,8 @@ int ReplayMode::ReplayThread(void* param) {
mainGame
->
dInfo
.
turn
=
0
;
mainGame
->
dInfo
.
turn
=
0
;
// reset master rule 4 phase button position
// reset master rule 4 phase button position
mainGame
->
wPhase
->
setRelativePosition
(
mainGame
->
Resize
(
480
,
310
,
855
,
330
));
mainGame
->
wPhase
->
setRelativePosition
(
mainGame
->
Resize
(
480
,
310
,
855
,
330
));
if
(
mainGame
->
dInfo
.
speed
)
{
if
(
mainGame
->
dInfo
.
extraval
)
{
if
(
mainGame
->
dInfo
.
duel_
rule
>=
4
)
{
if
(
mainGame
->
dInfo
.
duel_
field
>=
4
)
{
mainGame
->
wPhase
->
setRelativePosition
(
mainGame
->
Resize
(
480
,
290
,
855
,
350
));
mainGame
->
wPhase
->
setRelativePosition
(
mainGame
->
Resize
(
480
,
290
,
855
,
350
));
mainGame
->
btnShuffle
->
setRelativePosition
(
mainGame
->
Resize
(
0
,
40
,
50
,
60
));
mainGame
->
btnShuffle
->
setRelativePosition
(
mainGame
->
Resize
(
0
,
40
,
50
,
60
));
mainGame
->
btnDP
->
setRelativePosition
(
mainGame
->
Resize
(
0
,
40
,
50
,
60
));
mainGame
->
btnDP
->
setRelativePosition
(
mainGame
->
Resize
(
0
,
40
,
50
,
60
));
...
@@ -143,7 +145,7 @@ int ReplayMode::ReplayThread(void* param) {
...
@@ -143,7 +145,7 @@ int ReplayMode::ReplayThread(void* param) {
}
}
}
else
{
}
else
{
mainGame
->
btnDP
->
setRelativePosition
(
mainGame
->
Resize
(
0
,
0
,
50
,
20
));
mainGame
->
btnDP
->
setRelativePosition
(
mainGame
->
Resize
(
0
,
0
,
50
,
20
));
if
(
mainGame
->
dInfo
.
duel_
rule
>=
4
)
{
if
(
mainGame
->
dInfo
.
duel_
field
>=
4
)
{
mainGame
->
btnSP
->
setRelativePosition
(
mainGame
->
Resize
(
0
,
0
,
50
,
20
));
mainGame
->
btnSP
->
setRelativePosition
(
mainGame
->
Resize
(
0
,
0
,
50
,
20
));
mainGame
->
btnM1
->
setRelativePosition
(
mainGame
->
Resize
(
160
,
0
,
210
,
20
));
mainGame
->
btnM1
->
setRelativePosition
(
mainGame
->
Resize
(
160
,
0
,
210
,
20
));
mainGame
->
btnBP
->
setRelativePosition
(
mainGame
->
Resize
(
160
,
0
,
210
,
20
));
mainGame
->
btnBP
->
setRelativePosition
(
mainGame
->
Resize
(
160
,
0
,
210
,
20
));
...
...
gframe/single_duel.cpp
View file @
ccdbe19c
...
@@ -254,7 +254,7 @@ void SingleDuel::PlayerReady(DuelPlayer* dp, bool is_ready) {
...
@@ -254,7 +254,7 @@ void SingleDuel::PlayerReady(DuelPlayer* dp, bool is_ready) {
if
(
is_ready
)
{
if
(
is_ready
)
{
bool
allow_ocg
=
host_info
.
rule
==
0
||
host_info
.
rule
==
2
;
bool
allow_ocg
=
host_info
.
rule
==
0
||
host_info
.
rule
==
2
;
bool
allow_tcg
=
host_info
.
rule
==
1
||
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
,
host_info
.
doubled
);
int
res
=
host_info
.
no_check_deck
?
false
:
deckManager
.
CheckLFList
(
pdeck
[
dp
->
type
],
host_info
.
lflist
,
allow_ocg
,
allow_tcg
,
host_info
.
doubled
,
host_info
.
forbiddentypes
);
if
(
res
)
{
if
(
res
)
{
STOC_HS_PlayerChange
scpc
;
STOC_HS_PlayerChange
scpc
;
scpc
.
status
=
(
dp
->
type
<<
4
)
|
PLAYERCHANGE_NOTREADY
;
scpc
.
status
=
(
dp
->
type
<<
4
)
|
PLAYERCHANGE_NOTREADY
;
...
...
gframe/single_mode.cpp
View file @
ccdbe19c
...
@@ -665,12 +665,12 @@ bool SingleMode::SinglePlayAnalyze(char* msg, unsigned int len) {
...
@@ -665,12 +665,12 @@ bool SingleMode::SinglePlayAnalyze(char* msg, unsigned int len) {
mainGame
->
gMutex
.
Lock
();
mainGame
->
gMutex
.
Lock
();
mainGame
->
dField
.
Clear
();
mainGame
->
dField
.
Clear
();
int
rule
=
BufferIO
::
ReadInt8
(
pbuf
);
int
rule
=
BufferIO
::
ReadInt8
(
pbuf
);
mainGame
->
dInfo
.
duel_
rule
=
rule
&
0xf
;
mainGame
->
dInfo
.
duel_
field
=
rule
&
0xf
;
mainGame
->
dInfo
.
speed
=
(
rule
>>
4
)
?
1
:
0
;
mainGame
->
dInfo
.
extraval
=
rule
>>
4
;
// reset master rule 4 phase button position
// reset master rule 4 phase button position
mainGame
->
wPhase
->
setRelativePosition
(
mainGame
->
Resize
(
480
,
310
,
855
,
330
));
mainGame
->
wPhase
->
setRelativePosition
(
mainGame
->
Resize
(
480
,
310
,
855
,
330
));
if
(
mainGame
->
dInfo
.
speed
)
{
if
(
mainGame
->
dInfo
.
extraval
)
{
if
(
mainGame
->
dInfo
.
duel_
rule
>=
4
)
{
if
(
mainGame
->
dInfo
.
duel_
field
>=
4
)
{
mainGame
->
wPhase
->
setRelativePosition
(
mainGame
->
Resize
(
480
,
290
,
855
,
350
));
mainGame
->
wPhase
->
setRelativePosition
(
mainGame
->
Resize
(
480
,
290
,
855
,
350
));
mainGame
->
btnShuffle
->
setRelativePosition
(
mainGame
->
Resize
(
0
,
40
,
50
,
60
));
mainGame
->
btnShuffle
->
setRelativePosition
(
mainGame
->
Resize
(
0
,
40
,
50
,
60
));
mainGame
->
btnDP
->
setRelativePosition
(
mainGame
->
Resize
(
0
,
40
,
50
,
60
));
mainGame
->
btnDP
->
setRelativePosition
(
mainGame
->
Resize
(
0
,
40
,
50
,
60
));
...
@@ -690,7 +690,7 @@ bool SingleMode::SinglePlayAnalyze(char* msg, unsigned int len) {
...
@@ -690,7 +690,7 @@ bool SingleMode::SinglePlayAnalyze(char* msg, unsigned int len) {
}
}
}
else
{
}
else
{
mainGame
->
btnDP
->
setRelativePosition
(
mainGame
->
Resize
(
0
,
0
,
50
,
20
));
mainGame
->
btnDP
->
setRelativePosition
(
mainGame
->
Resize
(
0
,
0
,
50
,
20
));
if
(
mainGame
->
dInfo
.
duel_
rule
>=
4
)
{
if
(
mainGame
->
dInfo
.
duel_
field
>=
4
)
{
mainGame
->
btnSP
->
setRelativePosition
(
mainGame
->
Resize
(
0
,
0
,
50
,
20
));
mainGame
->
btnSP
->
setRelativePosition
(
mainGame
->
Resize
(
0
,
0
,
50
,
20
));
mainGame
->
btnM1
->
setRelativePosition
(
mainGame
->
Resize
(
160
,
0
,
210
,
20
));
mainGame
->
btnM1
->
setRelativePosition
(
mainGame
->
Resize
(
160
,
0
,
210
,
20
));
mainGame
->
btnBP
->
setRelativePosition
(
mainGame
->
Resize
(
160
,
0
,
210
,
20
));
mainGame
->
btnBP
->
setRelativePosition
(
mainGame
->
Resize
(
160
,
0
,
210
,
20
));
...
...
gframe/tag_duel.cpp
View file @
ccdbe19c
...
@@ -224,7 +224,7 @@ void TagDuel::PlayerReady(DuelPlayer* dp, bool is_ready) {
...
@@ -224,7 +224,7 @@ void TagDuel::PlayerReady(DuelPlayer* dp, bool is_ready) {
if
(
is_ready
)
{
if
(
is_ready
)
{
bool
allow_ocg
=
host_info
.
rule
==
0
||
host_info
.
rule
==
2
;
bool
allow_ocg
=
host_info
.
rule
==
0
||
host_info
.
rule
==
2
;
bool
allow_tcg
=
host_info
.
rule
==
1
||
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
,
host_info
.
doubled
);
int
res
=
host_info
.
no_check_deck
?
false
:
deckManager
.
CheckLFList
(
pdeck
[
dp
->
type
],
host_info
.
lflist
,
allow_ocg
,
allow_tcg
,
host_info
.
doubled
,
host_info
.
forbiddentypes
);
if
(
res
)
{
if
(
res
)
{
STOC_HS_PlayerChange
scpc
;
STOC_HS_PlayerChange
scpc
;
scpc
.
status
=
(
dp
->
type
<<
4
)
|
PLAYERCHANGE_NOTREADY
;
scpc
.
status
=
(
dp
->
type
<<
4
)
|
PLAYERCHANGE_NOTREADY
;
...
...
strings.conf
View file @
ccdbe19c
...
@@ -302,12 +302,6 @@
...
@@ -302,12 +302,6 @@
!
system
1261
Master
Rule
2
!
system
1261
Master
Rule
2
!
system
1262
Master
Rule
3
!
system
1262
Master
Rule
3
!
system
1263
Master
Rule
4
!
system
1263
Master
Rule
4
!
system
1264
Custom
Rule
!
system
1265
Obsolete
Ignition
!
system
1266
1
st
Turn
Draw
!
system
1267
1
Field
!
system
1268
Pendulum
Zones
!
system
1269
Extra
Monster
Zones
!
system
1270
Card
info
!
system
1270
Card
info
!
system
1271
Log
!
system
1271
Log
!
system
1272
Clear
Log
!
system
1272
Clear
Log
...
@@ -433,6 +427,16 @@
...
@@ -433,6 +427,16 @@
!
system
1624
Die
landed
on
:
!
system
1624
Die
landed
on
:
!
system
1625
Extra
Rules
!
system
1625
Extra
Rules
!
system
1626
Custom
!
system
1626
Custom
!
system
1627
No
%
s
!
system
1628
==
Card
Type
filter
==
!
system
1629
==
Game
rules
==
!
system
1630
Custom
Rule
!
system
1631
Obsolete
Ignition
!
system
1632
1
st
Turn
Draw
!
system
1633
1
Field
!
system
1634
Pendulum
Zones
!
system
1635
Separate
Pendulum
Zones
!
system
1636
Extra
Monster
Zones
!
system
1999
Show
anime
cards
!
system
1999
Show
anime
cards
!
system
2046
Enable
sound
effects
!
system
2046
Enable
sound
effects
!
system
2047
Enable
music
!
system
2047
Enable
music
...
...
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