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
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
MyCard
ygopro
Commits
dd2e0163
Commit
dd2e0163
authored
Feb 08, 2025
by
mercury233
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'master' of
https://github.com/Fluorohydride/ygopro
into server
parents
f1ce2613
377824c5
Changes
12
Show whitespace changes
Inline
Side-by-side
Showing
12 changed files
with
154 additions
and
162 deletions
+154
-162
gframe/client_card.cpp
gframe/client_card.cpp
+25
-23
gframe/client_card.h
gframe/client_card.h
+1
-1
gframe/client_field.cpp
gframe/client_field.cpp
+38
-55
gframe/data_manager.h
gframe/data_manager.h
+1
-0
gframe/deck_con.cpp
gframe/deck_con.cpp
+1
-1
gframe/deck_manager.cpp
gframe/deck_manager.cpp
+36
-32
gframe/deck_manager.h
gframe/deck_manager.h
+1
-1
gframe/drawing.cpp
gframe/drawing.cpp
+1
-1
gframe/duelclient.cpp
gframe/duelclient.cpp
+8
-8
gframe/event_handler.cpp
gframe/event_handler.cpp
+32
-30
gframe/network.h
gframe/network.h
+9
-9
gframe/single_duel.cpp
gframe/single_duel.cpp
+1
-1
No files found.
gframe/client_card.cpp
View file @
dd2e0163
...
@@ -31,8 +31,8 @@ ClientCard::~ClientCard() {
...
@@ -31,8 +31,8 @@ ClientCard::~ClientCard() {
}
}
overlayed
.
clear
();
overlayed
.
clear
();
}
}
void
ClientCard
::
SetCode
(
int
x
)
{
void
ClientCard
::
SetCode
(
unsigned
int
x
)
{
if
((
location
==
LOCATION_HAND
)
&&
(
code
!=
(
unsigned
int
)
x
))
{
if
((
location
==
LOCATION_HAND
)
&&
(
code
!=
x
))
{
code
=
x
;
code
=
x
;
mainGame
->
dField
.
MoveCard
(
this
,
5
);
mainGame
->
dField
.
MoveCard
(
this
,
5
);
}
else
}
else
...
@@ -175,13 +175,13 @@ void ClientCard::UpdateInfo(unsigned char* buf) {
...
@@ -175,13 +175,13 @@ void ClientCard::UpdateInfo(unsigned char* buf) {
}
}
}
}
void
ClientCard
::
ClearTarget
()
{
void
ClientCard
::
ClearTarget
()
{
for
(
auto
cit
=
cardTarget
.
begin
();
cit
!=
cardTarget
.
end
();
++
ci
t
)
{
for
(
auto
&
pcard
:
cardTarge
t
)
{
(
*
cit
)
->
is_showtarget
=
false
;
pcard
->
is_showtarget
=
false
;
(
*
cit
)
->
ownerTarget
.
erase
(
this
);
pcard
->
ownerTarget
.
erase
(
this
);
}
}
for
(
auto
cit
=
ownerTarget
.
begin
();
cit
!=
ownerTarget
.
end
();
++
ci
t
)
{
for
(
auto
&
pcard
:
ownerTarge
t
)
{
(
*
cit
)
->
is_showtarget
=
false
;
pcard
->
is_showtarget
=
false
;
(
*
cit
)
->
cardTarget
.
erase
(
this
);
pcard
->
cardTarget
.
erase
(
this
);
}
}
cardTarget
.
clear
();
cardTarget
.
clear
();
ownerTarget
.
clear
();
ownerTarget
.
clear
();
...
@@ -220,26 +220,28 @@ bool ClientCard::client_card_sort(ClientCard* c1, ClientCard* c2) {
...
@@ -220,26 +220,28 @@ bool ClientCard::client_card_sort(ClientCard* c1, ClientCard* c2) {
return
cp1
<
cp2
;
return
cp1
<
cp2
;
if
(
c1
->
location
!=
c2
->
location
)
if
(
c1
->
location
!=
c2
->
location
)
return
c1
->
location
<
c2
->
location
;
return
c1
->
location
<
c2
->
location
;
if
(
c1
->
location
&
LOCATION_OVERLAY
)
{
if
(
c1
->
location
==
LOCATION_OVERLAY
)
{
if
(
c1
->
overlayTarget
!=
c2
->
overlayTarget
)
if
(
c1
->
overlayTarget
!=
c2
->
overlayTarget
)
return
c1
->
overlayTarget
->
sequence
<
c2
->
overlayTarget
->
sequence
;
return
c1
->
overlayTarget
->
sequence
<
c2
->
overlayTarget
->
sequence
;
else
else
return
c1
->
sequence
<
c2
->
sequence
;
return
c1
->
sequence
<
c2
->
sequence
;
}
}
else
{
else
if
(
c1
->
location
==
LOCATION_DECK
)
{
if
(
c1
->
location
&
(
LOCATION_DECK
|
LOCATION_GRAVE
|
LOCATION_REMOVED
|
LOCATION_EXTRA
))
{
return
c1
->
sequence
>
c2
->
sequence
;
}
else
if
(
c1
->
location
&
(
LOCATION_GRAVE
|
LOCATION_REMOVED
|
LOCATION_EXTRA
))
{
auto
it1
=
std
::
find_if
(
mainGame
->
dField
.
chains
.
rbegin
(),
mainGame
->
dField
.
chains
.
rend
(),
[
c1
](
const
ChainInfo
&
ch
)
{
auto
it1
=
std
::
find_if
(
mainGame
->
dField
.
chains
.
rbegin
(),
mainGame
->
dField
.
chains
.
rend
(),
[
c1
](
const
ChainInfo
&
ch
)
{
return
c1
==
ch
.
chain_card
||
ch
.
target
.
find
(
c1
)
!=
ch
.
target
.
end
();
return
c1
==
ch
.
chain_card
||
ch
.
target
.
find
(
c1
)
!=
ch
.
target
.
end
();
});
});
auto
it2
=
std
::
find_if
(
mainGame
->
dField
.
chains
.
rbegin
(),
mainGame
->
dField
.
chains
.
rend
(),
[
c2
](
const
ChainInfo
&
ch
)
{
auto
it2
=
std
::
find_if
(
mainGame
->
dField
.
chains
.
rbegin
(),
mainGame
->
dField
.
chains
.
rend
(),
[
c2
](
const
ChainInfo
&
ch
)
{
return
c2
==
ch
.
chain_card
||
ch
.
target
.
find
(
c2
)
!=
ch
.
target
.
end
();
return
c2
==
ch
.
chain_card
||
ch
.
target
.
find
(
c2
)
!=
ch
.
target
.
end
();
});
});
if
(
it1
!=
mainGame
->
dField
.
chains
.
rend
()
||
it2
!=
mainGame
->
dField
.
chains
.
rend
())
{
if
(
it1
!=
mainGame
->
dField
.
chains
.
rend
()
||
it2
!=
mainGame
->
dField
.
chains
.
rend
())
{
return
it1
<
it2
;
return
it1
<
it2
;
}
}
return
c1
->
sequence
>
c2
->
sequence
;
return
c1
->
sequence
>
c2
->
sequence
;
}
}
else
else
{
return
c1
->
sequence
<
c2
->
sequence
;
return
c1
->
sequence
<
c2
->
sequence
;
}
}
}
}
...
...
gframe/client_card.h
View file @
dd2e0163
...
@@ -76,7 +76,7 @@ public:
...
@@ -76,7 +76,7 @@ public:
ClientCard
()
=
default
;
ClientCard
()
=
default
;
~
ClientCard
();
~
ClientCard
();
void
SetCode
(
int
x
);
void
SetCode
(
unsigned
int
x
);
void
UpdateInfo
(
unsigned
char
*
buf
);
void
UpdateInfo
(
unsigned
char
*
buf
);
void
ClearTarget
();
void
ClearTarget
();
void
ClearData
();
void
ClearData
();
...
...
gframe/client_field.cpp
View file @
dd2e0163
...
@@ -127,7 +127,7 @@ void ClientField::Initial(int player, int deckc, int extrac) {
...
@@ -127,7 +127,7 @@ void ClientField::Initial(int player, int deckc, int extrac) {
deck
[
player
].
push_back
(
pcard
);
deck
[
player
].
push_back
(
pcard
);
pcard
->
owner
=
player
;
pcard
->
owner
=
player
;
pcard
->
controler
=
player
;
pcard
->
controler
=
player
;
pcard
->
location
=
0x1
;
pcard
->
location
=
LOCATION_DECK
;
pcard
->
sequence
=
i
;
pcard
->
sequence
=
i
;
pcard
->
position
=
POS_FACEDOWN_DEFENSE
;
pcard
->
position
=
POS_FACEDOWN_DEFENSE
;
GetCardLocation
(
pcard
,
&
pcard
->
curPos
,
&
pcard
->
curRot
,
true
);
GetCardLocation
(
pcard
,
&
pcard
->
curPos
,
&
pcard
->
curRot
,
true
);
...
@@ -137,7 +137,7 @@ void ClientField::Initial(int player, int deckc, int extrac) {
...
@@ -137,7 +137,7 @@ void ClientField::Initial(int player, int deckc, int extrac) {
extra
[
player
].
push_back
(
pcard
);
extra
[
player
].
push_back
(
pcard
);
pcard
->
owner
=
player
;
pcard
->
owner
=
player
;
pcard
->
controler
=
player
;
pcard
->
controler
=
player
;
pcard
->
location
=
0x40
;
pcard
->
location
=
LOCATION_EXTRA
;
pcard
->
sequence
=
i
;
pcard
->
sequence
=
i
;
pcard
->
position
=
POS_FACEDOWN_DEFENSE
;
pcard
->
position
=
POS_FACEDOWN_DEFENSE
;
GetCardLocation
(
pcard
,
&
pcard
->
curPos
,
&
pcard
->
curRot
,
true
);
GetCardLocation
(
pcard
,
&
pcard
->
curPos
,
&
pcard
->
curRot
,
true
);
...
@@ -196,15 +196,15 @@ void ClientField::AddCard(ClientCard* pcard, int controler, int location, int se
...
@@ -196,15 +196,15 @@ void ClientField::AddCard(ClientCard* pcard, int controler, int location, int se
deck
[
controler
].
push_back
(
pcard
);
deck
[
controler
].
push_back
(
pcard
);
pcard
->
sequence
=
(
unsigned
char
)(
deck
[
controler
].
size
()
-
1
);
pcard
->
sequence
=
(
unsigned
char
)(
deck
[
controler
].
size
()
-
1
);
}
else
{
}
else
{
deck
[
controler
].
push_back
(
0
);
for
(
auto
&
pcard
:
deck
[
controler
])
for
(
int
i
=
deck
[
controler
].
size
()
-
1
;
i
>
0
;
--
i
)
{
pcard
->
sequence
++
;
deck
[
controler
][
i
]
=
deck
[
controler
][
i
-
1
];
deck
[
controler
].
insert
(
deck
[
controler
].
begin
(),
pcard
);
deck
[
controler
][
i
]
->
sequence
++
;
}
deck
[
controler
][
0
]
=
pcard
;
pcard
->
sequence
=
0
;
pcard
->
sequence
=
0
;
}
}
pcard
->
is_reversed
=
false
;
pcard
->
is_reversed
=
false
;
pcard
->
ClearData
();
pcard
->
ClearTarget
();
SetShowMark
(
pcard
,
false
);
break
;
break
;
}
}
case
LOCATION_HAND
:
{
case
LOCATION_HAND
:
{
...
@@ -235,15 +235,13 @@ void ClientField::AddCard(ClientCard* pcard, int controler, int location, int se
...
@@ -235,15 +235,13 @@ void ClientField::AddCard(ClientCard* pcard, int controler, int location, int se
extra
[
controler
].
push_back
(
pcard
);
extra
[
controler
].
push_back
(
pcard
);
pcard
->
sequence
=
(
unsigned
char
)(
extra
[
controler
].
size
()
-
1
);
pcard
->
sequence
=
(
unsigned
char
)(
extra
[
controler
].
size
()
-
1
);
}
else
{
}
else
{
extra
[
controler
].
push_back
(
0
);
int
p
=
extra
[
controler
].
size
()
-
extra_p_count
[
controler
]
-
1
;
int
p
=
extra
[
controler
].
size
()
-
extra_p_count
[
controler
]
-
1
;
for
(
int
i
=
extra
[
controler
].
size
()
-
1
;
i
>
p
;
--
i
)
{
for
(
int
i
=
extra
[
controler
].
size
()
-
1
;
i
>
p
;
--
i
)
{
extra
[
controler
][
i
]
=
extra
[
controler
][
i
-
1
];
extra
[
controler
][
i
]
->
sequence
++
;
extra
[
controler
][
i
]
->
sequence
++
;
extra
[
controler
][
i
]
->
curPos
+=
irr
::
core
::
vector3df
(
0
,
0
,
0.01
f
);
extra
[
controler
][
i
]
->
curPos
+=
irr
::
core
::
vector3df
(
0
,
0
,
0.01
f
);
extra
[
controler
][
i
]
->
mTransform
.
setTranslation
(
extra
[
controler
][
i
]
->
curPos
);
extra
[
controler
][
i
]
->
mTransform
.
setTranslation
(
extra
[
controler
][
i
]
->
curPos
);
}
}
extra
[
controler
]
[
p
]
=
pcard
;
extra
[
controler
]
.
insert
(
extra
[
controler
].
begin
()
+
p
,
pcard
)
;
pcard
->
sequence
=
p
;
pcard
->
sequence
=
p
;
}
}
if
(
pcard
->
position
&
POS_FACEUP
)
if
(
pcard
->
position
&
POS_FACEUP
)
...
@@ -253,69 +251,54 @@ void ClientField::AddCard(ClientCard* pcard, int controler, int location, int se
...
@@ -253,69 +251,54 @@ void ClientField::AddCard(ClientCard* pcard, int controler, int location, int se
}
}
}
}
ClientCard
*
ClientField
::
RemoveCard
(
int
controler
,
int
location
,
int
sequence
)
{
ClientCard
*
ClientField
::
RemoveCard
(
int
controler
,
int
location
,
int
sequence
)
{
ClientCard
*
pcard
=
0
;
ClientCard
*
pcard
=
nullptr
;
auto
erase_card
=
[](
std
::
vector
<
ClientCard
*>&
lst
,
int
seq
)
{
for
(
int
i
=
seq
;
i
<
(
int
)
lst
.
size
()
-
1
;
++
i
)
{
lst
[
i
]
=
lst
[
i
+
1
];
lst
[
i
]
->
sequence
--
;
lst
[
i
]
->
curPos
-=
irr
::
core
::
vector3df
(
0
,
0
,
0.01
f
);
lst
[
i
]
->
mTransform
.
setTranslation
(
lst
[
i
]
->
curPos
);
}
lst
.
pop_back
();
};
switch
(
location
)
{
switch
(
location
)
{
case
LOCATION_DECK
:
{
case
LOCATION_DECK
:
{
pcard
=
deck
[
controler
][
sequence
];
pcard
=
deck
[
controler
][
sequence
];
for
(
size_t
i
=
sequence
;
i
<
deck
[
controler
].
size
()
-
1
;
++
i
)
{
erase_card
(
deck
[
controler
],
sequence
);
deck
[
controler
][
i
]
=
deck
[
controler
][
i
+
1
];
deck
[
controler
][
i
]
->
sequence
--
;
deck
[
controler
][
i
]
->
curPos
-=
irr
::
core
::
vector3df
(
0
,
0
,
0.01
f
);
deck
[
controler
][
i
]
->
mTransform
.
setTranslation
(
deck
[
controler
][
i
]
->
curPos
);
}
deck
[
controler
].
erase
(
deck
[
controler
].
end
()
-
1
);
break
;
break
;
}
}
case
LOCATION_HAND
:
{
case
LOCATION_HAND
:
{
pcard
=
hand
[
controler
][
sequence
];
pcard
=
hand
[
controler
][
sequence
];
for
(
size_t
i
=
sequence
;
i
<
hand
[
controler
].
size
()
-
1
;
++
i
)
{
for
(
int
i
=
sequence
;
i
<
(
int
)
hand
[
controler
].
size
()
-
1
;
++
i
)
{
hand
[
controler
][
i
]
=
hand
[
controler
][
i
+
1
];
hand
[
controler
][
i
]
=
hand
[
controler
][
i
+
1
];
hand
[
controler
][
i
]
->
sequence
--
;
hand
[
controler
][
i
]
->
sequence
--
;
}
}
hand
[
controler
].
erase
(
hand
[
controler
].
end
()
-
1
);
hand
[
controler
].
pop_back
(
);
break
;
break
;
}
}
case
LOCATION_MZONE
:
{
case
LOCATION_MZONE
:
{
pcard
=
mzone
[
controler
][
sequence
];
pcard
=
mzone
[
controler
][
sequence
];
mzone
[
controler
][
sequence
]
=
0
;
mzone
[
controler
][
sequence
]
=
nullptr
;
break
;
break
;
}
}
case
LOCATION_SZONE
:
{
case
LOCATION_SZONE
:
{
pcard
=
szone
[
controler
][
sequence
];
pcard
=
szone
[
controler
][
sequence
];
szone
[
controler
][
sequence
]
=
0
;
szone
[
controler
][
sequence
]
=
nullptr
;
break
;
break
;
}
}
case
LOCATION_GRAVE
:
{
case
LOCATION_GRAVE
:
{
pcard
=
grave
[
controler
][
sequence
];
pcard
=
grave
[
controler
][
sequence
];
for
(
size_t
i
=
sequence
;
i
<
grave
[
controler
].
size
()
-
1
;
++
i
)
{
erase_card
(
grave
[
controler
],
sequence
);
grave
[
controler
][
i
]
=
grave
[
controler
][
i
+
1
];
grave
[
controler
][
i
]
->
sequence
--
;
grave
[
controler
][
i
]
->
curPos
-=
irr
::
core
::
vector3df
(
0
,
0
,
0.01
f
);
grave
[
controler
][
i
]
->
mTransform
.
setTranslation
(
grave
[
controler
][
i
]
->
curPos
);
}
grave
[
controler
].
erase
(
grave
[
controler
].
end
()
-
1
);
break
;
break
;
}
}
case
LOCATION_REMOVED
:
{
case
LOCATION_REMOVED
:
{
pcard
=
remove
[
controler
][
sequence
];
pcard
=
remove
[
controler
][
sequence
];
for
(
size_t
i
=
sequence
;
i
<
remove
[
controler
].
size
()
-
1
;
++
i
)
{
erase_card
(
remove
[
controler
],
sequence
);
remove
[
controler
][
i
]
=
remove
[
controler
][
i
+
1
];
remove
[
controler
][
i
]
->
sequence
--
;
remove
[
controler
][
i
]
->
curPos
-=
irr
::
core
::
vector3df
(
0
,
0
,
0.01
f
);
remove
[
controler
][
i
]
->
mTransform
.
setTranslation
(
remove
[
controler
][
i
]
->
curPos
);
}
remove
[
controler
].
erase
(
remove
[
controler
].
end
()
-
1
);
break
;
break
;
}
}
case
LOCATION_EXTRA
:
{
case
LOCATION_EXTRA
:
{
pcard
=
extra
[
controler
][
sequence
];
pcard
=
extra
[
controler
][
sequence
];
for
(
size_t
i
=
sequence
;
i
<
extra
[
controler
].
size
()
-
1
;
++
i
)
{
erase_card
(
extra
[
controler
],
sequence
);
extra
[
controler
][
i
]
=
extra
[
controler
][
i
+
1
];
extra
[
controler
][
i
]
->
sequence
--
;
extra
[
controler
][
i
]
->
curPos
-=
irr
::
core
::
vector3df
(
0
,
0
,
0.01
f
);
extra
[
controler
][
i
]
->
mTransform
.
setTranslation
(
extra
[
controler
][
i
]
->
curPos
);
}
extra
[
controler
].
erase
(
extra
[
controler
].
end
()
-
1
);
if
(
pcard
->
position
&
POS_FACEUP
)
if
(
pcard
->
position
&
POS_FACEUP
)
extra_p_count
[
controler
]
--
;
extra_p_count
[
controler
]
--
;
break
;
break
;
...
@@ -425,8 +408,8 @@ void ClientField::ClearChainSelect() {
...
@@ -425,8 +408,8 @@ void ClientField::ClearChainSelect() {
void
ClientField
::
ShowSelectCard
(
bool
buttonok
,
bool
chain
)
{
void
ClientField
::
ShowSelectCard
(
bool
buttonok
,
bool
chain
)
{
if
(
cant_check_grave
)
{
if
(
cant_check_grave
)
{
bool
has_card_in_grave
=
false
;
bool
has_card_in_grave
=
false
;
for
(
size_t
i
=
0
;
i
<
selectable_cards
.
size
();
++
i
)
{
for
(
auto
&
pcard
:
selectable_cards
)
{
if
(
selectable_cards
[
i
]
->
location
==
LOCATION_GRAVE
)
{
if
(
pcard
->
location
==
LOCATION_GRAVE
)
{
has_card_in_grave
=
true
;
has_card_in_grave
=
true
;
break
;
break
;
}
}
...
@@ -436,7 +419,7 @@ void ClientField::ShowSelectCard(bool buttonok, bool chain) {
...
@@ -436,7 +419,7 @@ void ClientField::ShowSelectCard(bool buttonok, bool chain) {
}
}
}
}
int
startpos
;
int
startpos
;
size_
t
ct
;
in
t
ct
;
if
(
selectable_cards
.
size
()
<=
5
)
{
if
(
selectable_cards
.
size
()
<=
5
)
{
startpos
=
30
+
125
*
(
5
-
selectable_cards
.
size
())
/
2
;
startpos
=
30
+
125
*
(
5
-
selectable_cards
.
size
())
/
2
;
ct
=
selectable_cards
.
size
();
ct
=
selectable_cards
.
size
();
...
@@ -444,7 +427,7 @@ void ClientField::ShowSelectCard(bool buttonok, bool chain) {
...
@@ -444,7 +427,7 @@ void ClientField::ShowSelectCard(bool buttonok, bool chain) {
startpos
=
30
;
startpos
=
30
;
ct
=
5
;
ct
=
5
;
}
}
for
(
size_
t
i
=
0
;
i
<
ct
;
++
i
)
{
for
(
in
t
i
=
0
;
i
<
ct
;
++
i
)
{
mainGame
->
stCardPos
[
i
]
->
enableOverrideColor
(
false
);
mainGame
->
stCardPos
[
i
]
->
enableOverrideColor
(
false
);
// image
// image
if
(
selectable_cards
[
i
]
->
code
)
if
(
selectable_cards
[
i
]
->
code
)
...
@@ -528,7 +511,7 @@ void ClientField::ShowSelectCard(bool buttonok, bool chain) {
...
@@ -528,7 +511,7 @@ void ClientField::ShowSelectCard(bool buttonok, bool chain) {
}
}
void
ClientField
::
ShowChainCard
()
{
void
ClientField
::
ShowChainCard
()
{
int
startpos
;
int
startpos
;
size_
t
ct
;
in
t
ct
;
if
(
selectable_cards
.
size
()
<=
5
)
{
if
(
selectable_cards
.
size
()
<=
5
)
{
startpos
=
30
+
125
*
(
5
-
selectable_cards
.
size
())
/
2
;
startpos
=
30
+
125
*
(
5
-
selectable_cards
.
size
())
/
2
;
ct
=
selectable_cards
.
size
();
ct
=
selectable_cards
.
size
();
...
@@ -536,7 +519,7 @@ void ClientField::ShowChainCard() {
...
@@ -536,7 +519,7 @@ void ClientField::ShowChainCard() {
startpos
=
30
;
startpos
=
30
;
ct
=
5
;
ct
=
5
;
}
}
for
(
size_
t
i
=
0
;
i
<
ct
;
++
i
)
{
for
(
in
t
i
=
0
;
i
<
ct
;
++
i
)
{
if
(
selectable_cards
[
i
]
->
code
)
if
(
selectable_cards
[
i
]
->
code
)
mainGame
->
imageLoading
.
insert
(
std
::
make_pair
(
mainGame
->
btnCardSelect
[
i
],
selectable_cards
[
i
]
->
code
));
mainGame
->
imageLoading
.
insert
(
std
::
make_pair
(
mainGame
->
btnCardSelect
[
i
],
selectable_cards
[
i
]
->
code
));
else
else
...
@@ -582,7 +565,7 @@ void ClientField::ShowChainCard() {
...
@@ -582,7 +565,7 @@ void ClientField::ShowChainCard() {
}
}
void
ClientField
::
ShowLocationCard
()
{
void
ClientField
::
ShowLocationCard
()
{
int
startpos
;
int
startpos
;
size_
t
ct
;
in
t
ct
;
if
(
display_cards
.
size
()
<=
5
)
{
if
(
display_cards
.
size
()
<=
5
)
{
startpos
=
30
+
125
*
(
5
-
display_cards
.
size
())
/
2
;
startpos
=
30
+
125
*
(
5
-
display_cards
.
size
())
/
2
;
ct
=
display_cards
.
size
();
ct
=
display_cards
.
size
();
...
@@ -590,7 +573,7 @@ void ClientField::ShowLocationCard() {
...
@@ -590,7 +573,7 @@ void ClientField::ShowLocationCard() {
startpos
=
30
;
startpos
=
30
;
ct
=
5
;
ct
=
5
;
}
}
for
(
size_
t
i
=
0
;
i
<
ct
;
++
i
)
{
for
(
in
t
i
=
0
;
i
<
ct
;
++
i
)
{
mainGame
->
stDisplayPos
[
i
]
->
enableOverrideColor
(
false
);
mainGame
->
stDisplayPos
[
i
]
->
enableOverrideColor
(
false
);
if
(
display_cards
[
i
]
->
code
)
if
(
display_cards
[
i
]
->
code
)
mainGame
->
imageLoading
.
insert
(
std
::
make_pair
(
mainGame
->
btnCardDisplay
[
i
],
display_cards
[
i
]
->
code
));
mainGame
->
imageLoading
.
insert
(
std
::
make_pair
(
mainGame
->
btnCardDisplay
[
i
],
display_cards
[
i
]
->
code
));
...
@@ -1187,8 +1170,8 @@ bool ClientField::CheckSelectSum() {
...
@@ -1187,8 +1170,8 @@ bool ClientField::CheckSelectSum() {
(
*
sit
)
->
is_selected
=
false
;
(
*
sit
)
->
is_selected
=
false
;
selable
.
insert
(
*
sit
);
selable
.
insert
(
*
sit
);
}
}
for
(
size_t
i
=
0
;
i
<
selected_cards
.
size
();
++
i
)
{
for
(
int
i
=
0
;
i
<
(
int
)
selected_cards
.
size
();
++
i
)
{
if
(
(
int
)
i
<
must_select_count
)
if
(
i
<
must_select_count
)
selected_cards
[
i
]
->
is_selectable
=
false
;
selected_cards
[
i
]
->
is_selectable
=
false
;
else
else
selected_cards
[
i
]
->
is_selectable
=
true
;
selected_cards
[
i
]
->
is_selectable
=
true
;
...
@@ -1274,7 +1257,7 @@ bool ClientField::CheckSelectTribute() {
...
@@ -1274,7 +1257,7 @@ bool ClientField::CheckSelectTribute() {
(
*
sit
)
->
is_selected
=
false
;
(
*
sit
)
->
is_selected
=
false
;
selable
.
insert
(
*
sit
);
selable
.
insert
(
*
sit
);
}
}
for
(
size_t
i
=
0
;
i
<
selected_cards
.
size
();
++
i
)
{
for
(
int
i
=
0
;
i
<
(
int
)
selected_cards
.
size
();
++
i
)
{
selected_cards
[
i
]
->
is_selectable
=
true
;
selected_cards
[
i
]
->
is_selectable
=
true
;
selected_cards
[
i
]
->
is_selected
=
true
;
selected_cards
[
i
]
->
is_selected
=
true
;
selable
.
erase
(
selected_cards
[
i
]);
selable
.
erase
(
selected_cards
[
i
]);
...
...
gframe/data_manager.h
View file @
dd2e0163
...
@@ -17,6 +17,7 @@ namespace irr {
...
@@ -17,6 +17,7 @@ namespace irr {
namespace
ygo
{
namespace
ygo
{
constexpr
int
MAX_STRING_ID
=
0x7ff
;
constexpr
int
MAX_STRING_ID
=
0x7ff
;
constexpr
unsigned
int
MIN_CARD_ID
=
(
unsigned
int
)(
MAX_STRING_ID
+
1
)
>>
4
;
constexpr
unsigned
int
MIN_CARD_ID
=
(
unsigned
int
)(
MAX_STRING_ID
+
1
)
>>
4
;
constexpr
unsigned
int
MAX_CARD_ID
=
0x0fffffffU
;
using
CardData
=
card_data
;
using
CardData
=
card_data
;
struct
CardDataC
:
card_data
{
struct
CardDataC
:
card_data
{
...
...
gframe/deck_con.cpp
View file @
dd2e0163
...
@@ -177,7 +177,7 @@ bool DeckBuilder::OnEvent(const irr::SEvent& event) {
...
@@ -177,7 +177,7 @@ bool DeckBuilder::OnEvent(const irr::SEvent& event) {
if
(
*
dname
==
0
)
if
(
*
dname
==
0
)
break
;
break
;
int
sel
=
-
1
;
int
sel
=
-
1
;
for
(
size_t
i
=
0
;
i
<
mainGame
->
cbDBDecks
->
getItemCount
();
++
i
)
{
for
(
int
i
=
0
;
i
<
(
int
)
mainGame
->
cbDBDecks
->
getItemCount
();
++
i
)
{
if
(
!
std
::
wcscmp
(
dname
,
mainGame
->
cbDBDecks
->
getItem
(
i
)))
{
if
(
!
std
::
wcscmp
(
dname
,
mainGame
->
cbDBDecks
->
getItem
(
i
)))
{
sel
=
i
;
sel
=
i
;
break
;
break
;
...
...
gframe/deck_manager.cpp
View file @
dd2e0163
...
@@ -37,7 +37,7 @@ void DeckManager::LoadLFListSingle(const char* path) {
...
@@ -37,7 +37,7 @@ void DeckManager::LoadLFListSingle(const char* path) {
int
count
=
-
1
;
int
count
=
-
1
;
if
(
sscanf
(
linebuf
,
"%d %d"
,
&
code
,
&
count
)
!=
2
)
if
(
sscanf
(
linebuf
,
"%d %d"
,
&
code
,
&
count
)
!=
2
)
continue
;
continue
;
if
(
code
<=
0
||
code
>
0xfffffff
)
if
(
code
<=
0
||
code
>
MAX_CARD_ID
)
continue
;
continue
;
if
(
count
<
0
||
count
>
2
)
if
(
count
<
0
||
count
>
2
)
continue
;
continue
;
...
@@ -77,71 +77,75 @@ const std::unordered_map<int, int>* DeckManager::GetLFListContent(int lfhash) {
...
@@ -77,71 +77,75 @@ const std::unordered_map<int, int>* DeckManager::GetLFListContent(int lfhash) {
return
&
lit
->
content
;
return
&
lit
->
content
;
return
nullptr
;
return
nullptr
;
}
}
static
int
checkAvail
(
unsigned
int
ot
,
unsigned
int
avail
)
{
static
unsigned
int
checkAvail
(
unsigned
int
ot
,
unsigned
int
avail
)
{
if
((
ot
&
avail
)
==
avail
)
if
((
ot
&
avail
)
==
avail
)
return
0
;
return
0
;
if
((
ot
&
AVAIL_OCG
)
&&
!
(
avail
=
=
AVAIL_OCG
))
if
((
ot
&
AVAIL_OCG
)
&&
(
avail
!
=
AVAIL_OCG
))
return
DECKERROR_OCGONLY
;
return
DECKERROR_OCGONLY
;
if
((
ot
&
AVAIL_TCG
)
&&
!
(
avail
=
=
AVAIL_TCG
))
if
((
ot
&
AVAIL_TCG
)
&&
(
avail
!
=
AVAIL_TCG
))
return
DECKERROR_TCGONLY
;
return
DECKERROR_TCGONLY
;
return
DECKERROR_NOTAVAIL
;
return
DECKERROR_NOTAVAIL
;
}
}
int
DeckManager
::
CheckDeck
(
Deck
&
deck
,
int
lfhash
,
int
rule
)
{
unsigned
int
DeckManager
::
CheckDeck
(
Deck
&
deck
,
int
lfhash
,
int
rule
)
{
std
::
unordered_map
<
int
,
int
>
ccount
;
std
::
unordered_map
<
int
,
int
>
ccount
;
auto
list
=
GetLFListContent
(
lfhash
);
// rule
if
(
!
list
)
return
0
;
int
dc
=
0
;
if
(
deck
.
main
.
size
()
<
DECK_MIN_SIZE
||
deck
.
main
.
size
()
>
DECK_MAX_SIZE
)
if
(
deck
.
main
.
size
()
<
DECK_MIN_SIZE
||
deck
.
main
.
size
()
>
DECK_MAX_SIZE
)
return
(
(
unsigned
)
DECKERROR_MAINCOUNT
<<
28
)
+
deck
.
main
.
size
();
return
(
DECKERROR_MAINCOUNT
<<
28
)
|
(
unsigned
)
deck
.
main
.
size
();
if
(
deck
.
extra
.
size
()
>
EXTRA_MAX_SIZE
)
if
(
deck
.
extra
.
size
()
>
EXTRA_MAX_SIZE
)
return
(
(
unsigned
)
DECKERROR_EXTRACOUNT
<<
28
)
+
deck
.
extra
.
size
();
return
(
DECKERROR_EXTRACOUNT
<<
28
)
|
(
unsigned
)
deck
.
extra
.
size
();
if
(
deck
.
side
.
size
()
>
SIDE_MAX_SIZE
)
if
(
deck
.
side
.
size
()
>
SIDE_MAX_SIZE
)
return
((
unsigned
)
DECKERROR_SIDECOUNT
<<
28
)
+
deck
.
side
.
size
();
return
(
DECKERROR_SIDECOUNT
<<
28
)
|
(
unsigned
)
deck
.
side
.
size
();
if
(
rule
<
0
||
rule
>=
6
)
auto
list
=
GetLFListContent
(
lfhash
);
if
(
!
list
)
return
0
;
return
0
;
const
unsigned
int
rule_map
[
6
]
=
{
AVAIL_OCG
,
AVAIL_TCG
,
AVAIL_SC
,
AVAIL_CUSTOM
,
AVAIL_OCGTCG
,
0
};
const
unsigned
int
rule_map
[
6
]
=
{
AVAIL_OCG
,
AVAIL_TCG
,
AVAIL_SC
,
AVAIL_CUSTOM
,
AVAIL_OCGTCG
,
0
};
auto
avail
=
rule_map
[
rule
];
unsigned
int
avail
=
0
;
if
(
rule
>=
0
&&
rule
<
(
int
)(
sizeof
rule_map
/
sizeof
rule_map
[
0
]))
avail
=
rule_map
[
rule
];
for
(
auto
&
cit
:
deck
.
main
)
{
for
(
auto
&
cit
:
deck
.
main
)
{
int
gameruleDeckError
=
checkAvail
(
cit
->
second
.
ot
,
avail
);
auto
gameruleDeckError
=
checkAvail
(
cit
->
second
.
ot
,
avail
);
if
(
gameruleDeckError
)
if
(
gameruleDeckError
)
return
(
gameruleDeckError
<<
28
)
+
cit
->
first
;
return
(
gameruleDeckError
<<
28
)
|
cit
->
first
;
if
(
cit
->
second
.
type
&
(
TYPES_EXTRA_DECK
|
TYPE_TOKEN
))
if
(
cit
->
second
.
type
&
(
TYPES_EXTRA_DECK
|
TYPE_TOKEN
))
return
(
DECKERROR_
EXTRA
COUNT
<<
28
);
return
(
DECKERROR_
MAIN
COUNT
<<
28
);
int
code
=
cit
->
second
.
alias
?
cit
->
second
.
alias
:
cit
->
first
;
int
code
=
cit
->
second
.
alias
?
cit
->
second
.
alias
:
cit
->
first
;
ccount
[
code
]
++
;
ccount
[
code
]
++
;
dc
=
ccount
[
code
];
int
dc
=
ccount
[
code
];
if
(
dc
>
3
)
if
(
dc
>
3
)
return
(
DECKERROR_CARDCOUNT
<<
28
)
+
cit
->
first
;
return
(
DECKERROR_CARDCOUNT
<<
28
)
|
cit
->
first
;
auto
it
=
list
->
find
(
code
);
auto
it
=
list
->
find
(
code
);
if
(
it
!=
list
->
end
()
&&
dc
>
it
->
second
)
if
(
it
!=
list
->
end
()
&&
dc
>
it
->
second
)
return
(
DECKERROR_LFLIST
<<
28
)
+
cit
->
first
;
return
(
DECKERROR_LFLIST
<<
28
)
|
cit
->
first
;
}
}
for
(
auto
&
cit
:
deck
.
extra
)
{
for
(
auto
&
cit
:
deck
.
extra
)
{
int
gameruleDeckError
=
checkAvail
(
cit
->
second
.
ot
,
avail
);
auto
gameruleDeckError
=
checkAvail
(
cit
->
second
.
ot
,
avail
);
if
(
gameruleDeckError
)
if
(
gameruleDeckError
)
return
(
gameruleDeckError
<<
28
)
+
cit
->
first
;
return
(
gameruleDeckError
<<
28
)
|
cit
->
first
;
if
(
!
(
cit
->
second
.
type
&
TYPES_EXTRA_DECK
)
||
cit
->
second
.
type
&
TYPE_TOKEN
)
return
(
DECKERROR_EXTRACOUNT
<<
28
);
int
code
=
cit
->
second
.
alias
?
cit
->
second
.
alias
:
cit
->
first
;
int
code
=
cit
->
second
.
alias
?
cit
->
second
.
alias
:
cit
->
first
;
ccount
[
code
]
++
;
ccount
[
code
]
++
;
dc
=
ccount
[
code
];
int
dc
=
ccount
[
code
];
if
(
dc
>
3
)
if
(
dc
>
3
)
return
(
DECKERROR_CARDCOUNT
<<
28
)
+
cit
->
first
;
return
(
DECKERROR_CARDCOUNT
<<
28
)
|
cit
->
first
;
auto
it
=
list
->
find
(
code
);
auto
it
=
list
->
find
(
code
);
if
(
it
!=
list
->
end
()
&&
dc
>
it
->
second
)
if
(
it
!=
list
->
end
()
&&
dc
>
it
->
second
)
return
(
DECKERROR_LFLIST
<<
28
)
+
cit
->
first
;
return
(
DECKERROR_LFLIST
<<
28
)
|
cit
->
first
;
}
}
for
(
auto
&
cit
:
deck
.
side
)
{
for
(
auto
&
cit
:
deck
.
side
)
{
int
gameruleDeckError
=
checkAvail
(
cit
->
second
.
ot
,
avail
);
auto
gameruleDeckError
=
checkAvail
(
cit
->
second
.
ot
,
avail
);
if
(
gameruleDeckError
)
if
(
gameruleDeckError
)
return
(
gameruleDeckError
<<
28
)
+
cit
->
first
;
return
(
gameruleDeckError
<<
28
)
|
cit
->
first
;
if
(
cit
->
second
.
type
&
TYPE_TOKEN
)
return
(
DECKERROR_SIDECOUNT
<<
28
);
int
code
=
cit
->
second
.
alias
?
cit
->
second
.
alias
:
cit
->
first
;
int
code
=
cit
->
second
.
alias
?
cit
->
second
.
alias
:
cit
->
first
;
ccount
[
code
]
++
;
ccount
[
code
]
++
;
dc
=
ccount
[
code
];
int
dc
=
ccount
[
code
];
if
(
dc
>
3
)
if
(
dc
>
3
)
return
(
DECKERROR_CARDCOUNT
<<
28
)
+
cit
->
first
;
return
(
DECKERROR_CARDCOUNT
<<
28
)
|
cit
->
first
;
auto
it
=
list
->
find
(
code
);
auto
it
=
list
->
find
(
code
);
if
(
it
!=
list
->
end
()
&&
dc
>
it
->
second
)
if
(
it
!=
list
->
end
()
&&
dc
>
it
->
second
)
return
(
DECKERROR_LFLIST
<<
28
)
+
cit
->
first
;
return
(
DECKERROR_LFLIST
<<
28
)
|
cit
->
first
;
}
}
return
0
;
return
0
;
}
}
...
@@ -165,11 +169,11 @@ int DeckManager::LoadDeck(Deck& deck, int* dbuf, int mainc, int sidec, bool is_p
...
@@ -165,11 +169,11 @@ int DeckManager::LoadDeck(Deck& deck, int* dbuf, int mainc, int sidec, bool is_p
continue
;
continue
;
}
}
if
(
cd
.
type
&
TYPES_EXTRA_DECK
)
{
if
(
cd
.
type
&
TYPES_EXTRA_DECK
)
{
if
(
(
int
)
deck
.
extra
.
size
()
<
EXTRA_MAX_SIZE
)
if
(
deck
.
extra
.
size
()
<
EXTRA_MAX_SIZE
)
deck
.
extra
.
push_back
(
dataManager
.
GetCodePointer
(
code
));
deck
.
extra
.
push_back
(
dataManager
.
GetCodePointer
(
code
));
}
}
else
{
else
{
if
(
(
int
)
deck
.
main
.
size
()
<
DECK_MAX_SIZE
)
if
(
deck
.
main
.
size
()
<
DECK_MAX_SIZE
)
deck
.
main
.
push_back
(
dataManager
.
GetCodePointer
(
code
));
deck
.
main
.
push_back
(
dataManager
.
GetCodePointer
(
code
));
}
}
}
}
...
...
gframe/deck_manager.h
View file @
dd2e0163
...
@@ -65,7 +65,7 @@ public:
...
@@ -65,7 +65,7 @@ public:
void
LoadLFList
();
void
LoadLFList
();
const
wchar_t
*
GetLFListName
(
int
lfhash
);
const
wchar_t
*
GetLFListName
(
int
lfhash
);
const
std
::
unordered_map
<
int
,
int
>*
GetLFListContent
(
int
lfhash
);
const
std
::
unordered_map
<
int
,
int
>*
GetLFListContent
(
int
lfhash
);
int
CheckDeck
(
Deck
&
deck
,
int
lfhash
,
int
rule
);
unsigned
int
CheckDeck
(
Deck
&
deck
,
int
lfhash
,
int
rule
);
int
LoadDeck
(
Deck
&
deck
,
int
*
dbuf
,
int
mainc
,
int
sidec
,
bool
is_packlist
=
false
);
int
LoadDeck
(
Deck
&
deck
,
int
*
dbuf
,
int
mainc
,
int
sidec
,
bool
is_packlist
=
false
);
int
LoadDeck
(
Deck
&
deck
,
std
::
istringstream
&
deckStream
,
bool
is_packlist
=
false
);
int
LoadDeck
(
Deck
&
deck
,
std
::
istringstream
&
deckStream
,
bool
is_packlist
=
false
);
bool
LoadSide
(
Deck
&
deck
,
int
*
dbuf
,
int
mainc
,
int
sidec
);
bool
LoadSide
(
Deck
&
deck
,
int
*
dbuf
,
int
mainc
,
int
sidec
);
...
...
gframe/drawing.cpp
View file @
dd2e0163
...
@@ -1266,7 +1266,7 @@ void Game::DrawDeckBd() {
...
@@ -1266,7 +1266,7 @@ void Game::DrawDeckBd() {
driver
->
draw2DRectangle
(
Resize
(
805
,
160
,
1020
,
630
),
0x400000ff
,
0x400000ff
,
0x40000000
,
0x40000000
);
driver
->
draw2DRectangle
(
Resize
(
805
,
160
,
1020
,
630
),
0x400000ff
,
0x400000ff
,
0x40000000
,
0x40000000
);
driver
->
draw2DRectangleOutline
(
Resize
(
804
,
159
,
1020
,
630
));
driver
->
draw2DRectangleOutline
(
Resize
(
804
,
159
,
1020
,
630
));
}
}
for
(
size_t
i
=
0
;
i
<
9
&&
i
+
scrFilter
->
getPos
()
<
deckBuilder
.
results
.
size
();
++
i
)
{
for
(
int
i
=
0
;
i
<
9
&&
i
+
scrFilter
->
getPos
()
<
(
int
)
deckBuilder
.
results
.
size
();
++
i
)
{
code_pointer
ptr
=
deckBuilder
.
results
[
i
+
scrFilter
->
getPos
()];
code_pointer
ptr
=
deckBuilder
.
results
[
i
+
scrFilter
->
getPos
()];
if
(
i
>=
7
)
if
(
i
>=
7
)
{
{
...
...
gframe/duelclient.cpp
View file @
dd2e0163
...
@@ -274,8 +274,8 @@ void DuelClient::HandleSTOCPacketLan(unsigned char* data, int len) {
...
@@ -274,8 +274,8 @@ void DuelClient::HandleSTOCPacketLan(unsigned char* data, int len) {
}
}
case
ERRMSG_DECKERROR
:
{
case
ERRMSG_DECKERROR
:
{
mainGame
->
gMutex
.
lock
();
mainGame
->
gMutex
.
lock
();
unsigned
int
code
=
pkt
->
code
&
0xFFFFFFF
;
unsigned
int
code
=
pkt
->
code
&
MAX_CARD_ID
;
int
flag
=
pkt
->
code
>>
28
;
unsigned
int
flag
=
pkt
->
code
>>
28
;
wchar_t
msgbuf
[
256
];
wchar_t
msgbuf
[
256
];
switch
(
flag
)
switch
(
flag
)
{
{
...
@@ -1565,7 +1565,7 @@ bool DuelClient::ClientAnalyze(unsigned char* msg, int len) {
...
@@ -1565,7 +1565,7 @@ bool DuelClient::ClientAnalyze(unsigned char* msg, int len) {
l
=
BufferIO
::
ReadUInt8
(
pbuf
);
l
=
BufferIO
::
ReadUInt8
(
pbuf
);
s
=
BufferIO
::
ReadUInt8
(
pbuf
);
s
=
BufferIO
::
ReadUInt8
(
pbuf
);
ss
=
BufferIO
::
ReadUInt8
(
pbuf
);
ss
=
BufferIO
::
ReadUInt8
(
pbuf
);
if
(
(
l
&
LOCATION_OVERLAY
)
>
0
)
if
(
l
&
LOCATION_OVERLAY
)
pcard
=
mainGame
->
dField
.
GetCard
(
c
,
l
&
0x7f
,
s
)
->
overlayed
[
ss
];
pcard
=
mainGame
->
dField
.
GetCard
(
c
,
l
&
0x7f
,
s
)
->
overlayed
[
ss
];
else
else
pcard
=
mainGame
->
dField
.
GetCard
(
c
,
l
,
s
);
pcard
=
mainGame
->
dField
.
GetCard
(
c
,
l
,
s
);
...
@@ -1630,7 +1630,7 @@ bool DuelClient::ClientAnalyze(unsigned char* msg, int len) {
...
@@ -1630,7 +1630,7 @@ bool DuelClient::ClientAnalyze(unsigned char* msg, int len) {
l
=
BufferIO
::
ReadUInt8
(
pbuf
);
l
=
BufferIO
::
ReadUInt8
(
pbuf
);
s
=
BufferIO
::
ReadUInt8
(
pbuf
);
s
=
BufferIO
::
ReadUInt8
(
pbuf
);
ss
=
BufferIO
::
ReadUInt8
(
pbuf
);
ss
=
BufferIO
::
ReadUInt8
(
pbuf
);
if
(
(
l
&
LOCATION_OVERLAY
)
>
0
)
if
(
l
&
LOCATION_OVERLAY
)
pcard
=
mainGame
->
dField
.
GetCard
(
c
,
l
&
0x7f
,
s
)
->
overlayed
[
ss
];
pcard
=
mainGame
->
dField
.
GetCard
(
c
,
l
&
0x7f
,
s
)
->
overlayed
[
ss
];
else
else
pcard
=
mainGame
->
dField
.
GetCard
(
c
,
l
,
s
);
pcard
=
mainGame
->
dField
.
GetCard
(
c
,
l
,
s
);
...
@@ -1654,7 +1654,7 @@ bool DuelClient::ClientAnalyze(unsigned char* msg, int len) {
...
@@ -1654,7 +1654,7 @@ bool DuelClient::ClientAnalyze(unsigned char* msg, int len) {
l
=
BufferIO
::
ReadUInt8
(
pbuf
);
l
=
BufferIO
::
ReadUInt8
(
pbuf
);
s
=
BufferIO
::
ReadUInt8
(
pbuf
);
s
=
BufferIO
::
ReadUInt8
(
pbuf
);
ss
=
BufferIO
::
ReadUInt8
(
pbuf
);
ss
=
BufferIO
::
ReadUInt8
(
pbuf
);
if
(
(
l
&
LOCATION_OVERLAY
)
>
0
)
if
(
l
&
LOCATION_OVERLAY
)
pcard
=
mainGame
->
dField
.
GetCard
(
c
,
l
&
0x7f
,
s
)
->
overlayed
[
ss
];
pcard
=
mainGame
->
dField
.
GetCard
(
c
,
l
&
0x7f
,
s
)
->
overlayed
[
ss
];
else
else
pcard
=
mainGame
->
dField
.
GetCard
(
c
,
l
,
s
);
pcard
=
mainGame
->
dField
.
GetCard
(
c
,
l
,
s
);
...
@@ -2201,7 +2201,7 @@ bool DuelClient::ClientAnalyze(unsigned char* msg, int len) {
...
@@ -2201,7 +2201,7 @@ bool DuelClient::ClientAnalyze(unsigned char* msg, int len) {
}
}
if
(
field_confirm
.
size
()
>
0
)
{
if
(
field_confirm
.
size
()
>
0
)
{
mainGame
->
WaitFrameSignal
(
5
);
mainGame
->
WaitFrameSignal
(
5
);
for
(
size_t
i
=
0
;
i
<
field_confirm
.
size
();
++
i
)
{
for
(
int
i
=
0
;
i
<
(
int
)
field_confirm
.
size
();
++
i
)
{
pcard
=
field_confirm
[
i
];
pcard
=
field_confirm
[
i
];
c
=
pcard
->
controler
;
c
=
pcard
->
controler
;
l
=
pcard
->
location
;
l
=
pcard
->
location
;
...
@@ -2231,7 +2231,7 @@ bool DuelClient::ClientAnalyze(unsigned char* msg, int len) {
...
@@ -2231,7 +2231,7 @@ bool DuelClient::ClientAnalyze(unsigned char* msg, int len) {
mainGame
->
WaitFrameSignal
(
30
);
mainGame
->
WaitFrameSignal
(
30
);
else
else
mainGame
->
WaitFrameSignal
(
90
);
mainGame
->
WaitFrameSignal
(
90
);
for
(
size_t
i
=
0
;
i
<
field_confirm
.
size
();
++
i
)
{
for
(
int
i
=
0
;
i
<
(
int
)
field_confirm
.
size
();
++
i
)
{
pcard
=
field_confirm
[
i
];
pcard
=
field_confirm
[
i
];
mainGame
->
dField
.
MoveCard
(
pcard
,
5
);
mainGame
->
dField
.
MoveCard
(
pcard
,
5
);
pcard
->
is_highlighting
=
false
;
pcard
->
is_highlighting
=
false
;
...
@@ -3072,7 +3072,7 @@ bool DuelClient::ClientAnalyze(unsigned char* msg, int len) {
...
@@ -3072,7 +3072,7 @@ bool DuelClient::ClientAnalyze(unsigned char* msg, int len) {
unsigned
int
l
=
BufferIO
::
ReadUInt8
(
pbuf
);
unsigned
int
l
=
BufferIO
::
ReadUInt8
(
pbuf
);
int
s
=
BufferIO
::
ReadUInt8
(
pbuf
);
int
s
=
BufferIO
::
ReadUInt8
(
pbuf
);
int
ss
=
BufferIO
::
ReadUInt8
(
pbuf
);
int
ss
=
BufferIO
::
ReadUInt8
(
pbuf
);
if
(
(
l
&
LOCATION_OVERLAY
)
>
0
)
if
(
l
&
LOCATION_OVERLAY
)
pcards
[
i
]
=
mainGame
->
dField
.
GetCard
(
c
,
l
&
0x7f
,
s
)
->
overlayed
[
ss
];
pcards
[
i
]
=
mainGame
->
dField
.
GetCard
(
c
,
l
&
0x7f
,
s
)
->
overlayed
[
ss
];
else
else
pcards
[
i
]
=
mainGame
->
dField
.
GetCard
(
c
,
l
,
s
);
pcards
[
i
]
=
mainGame
->
dField
.
GetCard
(
c
,
l
,
s
);
...
...
gframe/event_handler.cpp
View file @
dd2e0163
...
@@ -2407,19 +2407,19 @@ void ClientField::ShowCancelOrFinishButton(int buttonOp) {
...
@@ -2407,19 +2407,19 @@ void ClientField::ShowCancelOrFinishButton(int buttonOp) {
void
ClientField
::
SetShowMark
(
ClientCard
*
pcard
,
bool
enable
)
{
void
ClientField
::
SetShowMark
(
ClientCard
*
pcard
,
bool
enable
)
{
if
(
pcard
->
equipTarget
)
if
(
pcard
->
equipTarget
)
pcard
->
equipTarget
->
is_showequip
=
enable
;
pcard
->
equipTarget
->
is_showequip
=
enable
;
for
(
auto
cit
=
pcard
->
equipped
.
begin
();
cit
!=
pcard
->
equipped
.
end
();
++
cit
)
for
(
auto
&
card
:
pcard
->
equipped
)
(
*
cit
)
->
is_showequip
=
enable
;
card
->
is_showequip
=
enable
;
for
(
auto
cit
=
pcard
->
cardTarget
.
begin
();
cit
!=
pcard
->
cardTarget
.
end
();
++
ci
t
)
for
(
auto
&
card
:
pcard
->
cardTarge
t
)
(
*
cit
)
->
is_showtarget
=
enable
;
card
->
is_showtarget
=
enable
;
for
(
auto
cit
=
pcard
->
ownerTarget
.
begin
();
cit
!=
pcard
->
ownerTarget
.
end
();
++
ci
t
)
for
(
auto
&
card
:
pcard
->
ownerTarge
t
)
(
*
cit
)
->
is_showtarget
=
enable
;
card
->
is_showtarget
=
enable
;
for
(
auto
chit
=
chains
.
begin
();
chit
!=
chains
.
end
();
++
chit
)
{
for
(
auto
&
ch
:
chains
)
{
if
(
pcard
==
chit
->
chain_card
)
{
if
(
pcard
==
ch
.
chain_card
)
{
for
(
auto
tgit
=
chit
->
target
.
begin
();
tgit
!=
chit
->
target
.
end
();
++
tgi
t
)
for
(
auto
&
tg
:
ch
.
targe
t
)
(
*
tgit
)
->
is_showchaintarget
=
enable
;
tg
->
is_showchaintarget
=
enable
;
}
}
if
(
chit
->
target
.
find
(
pcard
)
!=
chit
->
target
.
end
())
if
(
ch
.
target
.
find
(
pcard
)
!=
ch
.
target
.
end
())
ch
it
->
chain_card
->
is_showchaintarget
=
enable
;
ch
.
chain_card
->
is_showchaintarget
=
enable
;
}
}
}
}
void
ClientField
::
ShowCardInfoInList
(
ClientCard
*
pcard
,
irr
::
gui
::
IGUIElement
*
element
,
irr
::
gui
::
IGUIElement
*
parent
)
{
void
ClientField
::
ShowCardInfoInList
(
ClientCard
*
pcard
,
irr
::
gui
::
IGUIElement
*
element
,
irr
::
gui
::
IGUIElement
*
parent
)
{
...
@@ -2428,28 +2428,30 @@ void ClientField::ShowCardInfoInList(ClientCard* pcard, irr::gui::IGUIElement* e
...
@@ -2428,28 +2428,30 @@ void ClientField::ShowCardInfoInList(ClientCard* pcard, irr::gui::IGUIElement* e
if
(
pcard
->
code
)
{
if
(
pcard
->
code
)
{
str
.
append
(
dataManager
.
GetName
(
pcard
->
code
));
str
.
append
(
dataManager
.
GetName
(
pcard
->
code
));
}
}
if
(
pcard
->
overlayTarget
)
{
if
(
pcard
->
location
!=
LOCATION_DECK
)
{
if
(
pcard
->
overlayTarget
)
{
myswprintf
(
formatBuffer
,
dataManager
.
GetSysString
(
225
),
dataManager
.
GetName
(
pcard
->
overlayTarget
->
code
),
pcard
->
overlayTarget
->
sequence
+
1
);
myswprintf
(
formatBuffer
,
dataManager
.
GetSysString
(
225
),
dataManager
.
GetName
(
pcard
->
overlayTarget
->
code
),
pcard
->
overlayTarget
->
sequence
+
1
);
str
.
append
(
L"
\n
"
).
append
(
formatBuffer
);
str
.
append
(
L"
\n
"
).
append
(
formatBuffer
);
}
}
if
((
pcard
->
status
&
STATUS_PROC_COMPLETE
)
if
((
pcard
->
status
&
STATUS_PROC_COMPLETE
)
&&
(
pcard
->
type
&
(
TYPE_RITUAL
|
TYPE_FUSION
|
TYPE_SYNCHRO
|
TYPE_XYZ
|
TYPE_LINK
|
TYPE_SPSUMMON
)))
&&
(
pcard
->
type
&
(
TYPE_RITUAL
|
TYPE_FUSION
|
TYPE_SYNCHRO
|
TYPE_XYZ
|
TYPE_LINK
|
TYPE_SPSUMMON
)))
str
.
append
(
L"
\n
"
).
append
(
dataManager
.
GetSysString
(
224
));
str
.
append
(
L"
\n
"
).
append
(
dataManager
.
GetSysString
(
224
));
for
(
auto
iter
=
pcard
->
desc_hints
.
begin
();
iter
!=
pcard
->
desc_hints
.
end
();
++
iter
)
{
for
(
auto
iter
=
pcard
->
desc_hints
.
begin
();
iter
!=
pcard
->
desc_hints
.
end
();
++
iter
)
{
myswprintf
(
formatBuffer
,
L"
\n
*%ls"
,
dataManager
.
GetDesc
(
iter
->
first
));
myswprintf
(
formatBuffer
,
L"
\n
*%ls"
,
dataManager
.
GetDesc
(
iter
->
first
));
str
.
append
(
formatBuffer
);
str
.
append
(
formatBuffer
);
}
}
for
(
size_t
i
=
0
;
i
<
chains
.
size
();
++
i
)
{
for
(
size_t
i
=
0
;
i
<
chains
.
size
();
++
i
)
{
auto
chit
=
chains
[
i
];
const
auto
&
chit
=
chains
[
i
];
if
(
pcard
==
chit
.
chain_card
)
{
if
(
pcard
==
chit
.
chain_card
)
{
myswprintf
(
formatBuffer
,
dataManager
.
GetSysString
(
216
),
i
+
1
);
myswprintf
(
formatBuffer
,
dataManager
.
GetSysString
(
216
),
i
+
1
);
str
.
append
(
L"
\n
"
).
append
(
formatBuffer
);
str
.
append
(
L"
\n
"
).
append
(
formatBuffer
);
}
}
if
(
chit
.
target
.
find
(
pcard
)
!=
chit
.
target
.
end
())
{
if
(
chit
.
target
.
find
(
pcard
)
!=
chit
.
target
.
end
())
{
myswprintf
(
formatBuffer
,
dataManager
.
GetSysString
(
217
),
i
+
1
,
dataManager
.
GetName
(
chit
.
chain_card
->
code
));
myswprintf
(
formatBuffer
,
dataManager
.
GetSysString
(
217
),
i
+
1
,
dataManager
.
GetName
(
chit
.
chain_card
->
code
));
str
.
append
(
L"
\n
"
).
append
(
formatBuffer
);
str
.
append
(
L"
\n
"
).
append
(
formatBuffer
);
}
}
}
}
}
if
(
str
.
length
()
>
0
)
{
if
(
str
.
length
()
>
0
)
{
parent
->
addChild
(
mainGame
->
stCardListTip
);
parent
->
addChild
(
mainGame
->
stCardListTip
);
irr
::
core
::
rect
<
s32
>
ePos
=
element
->
getRelativePosition
();
irr
::
core
::
rect
<
s32
>
ePos
=
element
->
getRelativePosition
();
...
...
gframe/network.h
View file @
dd2e0163
...
@@ -327,15 +327,15 @@ public:
...
@@ -327,15 +327,15 @@ public:
#define ERRMSG_SIDEERROR 0x3
#define ERRMSG_SIDEERROR 0x3
#define ERRMSG_VERERROR 0x4
#define ERRMSG_VERERROR 0x4
#define DECKERROR_LFLIST 0x1
#define DECKERROR_LFLIST 0x1
U
#define DECKERROR_OCGONLY 0x2
#define DECKERROR_OCGONLY 0x2
U
#define DECKERROR_TCGONLY 0x3
#define DECKERROR_TCGONLY 0x3
U
#define DECKERROR_UNKNOWNCARD 0x4
#define DECKERROR_UNKNOWNCARD 0x4
U
#define DECKERROR_CARDCOUNT 0x5
#define DECKERROR_CARDCOUNT 0x5
U
#define DECKERROR_MAINCOUNT 0x6
#define DECKERROR_MAINCOUNT 0x6
U
#define DECKERROR_EXTRACOUNT 0x7
#define DECKERROR_EXTRACOUNT 0x7
U
#define DECKERROR_SIDECOUNT 0x8
#define DECKERROR_SIDECOUNT 0x8
U
#define DECKERROR_NOTAVAIL 0x9
#define DECKERROR_NOTAVAIL 0x9
U
#define MODE_SINGLE 0x0
#define MODE_SINGLE 0x0
#define MODE_MATCH 0x1
#define MODE_MATCH 0x1
...
...
gframe/single_duel.cpp
View file @
dd2e0163
...
@@ -353,7 +353,7 @@ void SingleDuel::PlayerReady(DuelPlayer* dp, bool is_ready) {
...
@@ -353,7 +353,7 @@ void SingleDuel::PlayerReady(DuelPlayer* dp, bool is_ready) {
unsigned
int
deckerror
=
0
;
unsigned
int
deckerror
=
0
;
if
(
!
host_info
.
no_check_deck
)
{
if
(
!
host_info
.
no_check_deck
)
{
if
(
deck_error
[
dp
->
type
])
{
if
(
deck_error
[
dp
->
type
])
{
deckerror
=
(
DECKERROR_UNKNOWNCARD
<<
28
)
+
deck_error
[
dp
->
type
];
deckerror
=
(
DECKERROR_UNKNOWNCARD
<<
28
)
|
deck_error
[
dp
->
type
];
}
else
{
}
else
{
deckerror
=
deckManager
.
CheckDeck
(
pdeck
[
dp
->
type
],
host_info
.
lflist
,
host_info
.
rule
);
deckerror
=
deckManager
.
CheckDeck
(
pdeck
[
dp
->
type
],
host_info
.
lflist
,
host_info
.
rule
);
}
}
...
...
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