Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Y
YGOMobile-Cn-Ko-En
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Locked Files
Issues
0
Issues
0
List
Boards
Labels
Service Desk
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Security & Compliance
Security & Compliance
Dependency List
License Compliance
Packages
Packages
List
Container Registry
Analytics
Analytics
CI / CD
Code Review
Insights
Issues
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
fallenstardust
YGOMobile-Cn-Ko-En
Commits
88f331ad
Commit
88f331ad
authored
Feb 10, 2025
by
Dark Zane
Committed by
GitHub
Feb 10, 2025
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'fallenstardust:master' into master
parents
588a75d7
8b8c2f08
Changes
7
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
109 additions
and
92 deletions
+109
-92
Classes/gframe/client_field.cpp
Classes/gframe/client_field.cpp
+75
-67
Classes/gframe/client_field.h
Classes/gframe/client_field.h
+6
-3
Classes/gframe/deck_con.cpp
Classes/gframe/deck_con.cpp
+3
-4
Classes/gframe/deck_con.h
Classes/gframe/deck_con.h
+1
-1
Classes/gframe/duelclient.cpp
Classes/gframe/duelclient.cpp
+1
-9
Classes/gframe/event_handler.cpp
Classes/gframe/event_handler.cpp
+22
-7
Classes/gframe/menu_handler.h
Classes/gframe/menu_handler.h
+1
-1
No files found.
Classes/gframe/client_field.cpp
View file @
88f331ad
...
...
@@ -473,7 +473,7 @@ void ClientField::ShowSelectCard(bool buttonok, bool chain) {
mainGame
->
stCardPos
[
i
]
->
setText
(
formatBuffer
);
// color
if
(
selectable_cards
[
i
]
->
is_selected
)
mainGame
->
stCardPos
[
i
]
->
setBackgroundColor
(
0x
ffa2d8f4
);
mainGame
->
stCardPos
[
i
]
->
setBackgroundColor
(
0x
6011113d
);
else
{
if
(
conti_selecting
)
mainGame
->
stCardPos
[
i
]
->
setBackgroundColor
(
0xff56649f
);
...
...
@@ -1130,50 +1130,43 @@ void ClientField::FadeCard(ClientCard * pcard, int alpha, int frame) {
pcard
->
aniFrame
=
frame
;
}
bool
ClientField
::
ShowSelectSum
(
bool
panelmode
)
{
select_ready
=
CheckSelectSum
();
if
(
select_ready
&&
(
selectsum_cards
.
size
()
==
0
||
selectable_cards
.
size
()
==
0
))
{
SetResponseSelectedCards
();
ShowCancelOrFinishButton
(
0
);
if
(
mainGame
->
wCardSelect
->
isVisible
())
mainGame
->
HideElement
(
mainGame
->
wCardSelect
,
true
);
else
DuelClient
::
SendResponse
();
return
true
;
}
auto
display_hint
=
select_hint
?
dataManager
.
GetDesc
(
select_hint
)
:
dataManager
.
GetSysString
(
560
);
wchar_t
cur_hint
[
20
];
if
(
select_curval_l
==
select_curval_h
)
{
myswprintf
(
cur_hint
,
L"%d"
,
select_curval_l
);
}
else
{
myswprintf
(
cur_hint
,
L"%d-%d"
,
select_curval_l
,
select_curval_h
);
}
wchar_t
target_hint
[
20
];
if
(
select_mode
==
0
)
{
// sum equal
myswprintf
(
target_hint
,
L"%d"
,
select_sumval
);
}
else
{
// sum greater
myswprintf
(
target_hint
,
L"%d+"
,
select_sumval
);
}
wchar_t
textBuffer
[
256
];
myswprintf
(
textBuffer
,
L"%ls(%ls/%ls)"
,
display_hint
,
cur_hint
,
target_hint
);
if
(
panelmode
)
{
if
(
CheckSelectSum
())
{
if
(
selectsum_cards
.
size
()
==
0
||
selectable_cards
.
size
()
==
0
)
{
SetResponseSelectedCards
();
ShowCancelOrFinishButton
(
0
);
if
(
mainGame
->
wCardSelect
->
isVisible
())
mainGame
->
HideElement
(
mainGame
->
wCardSelect
,
true
);
else
{
DuelClient
::
SendResponse
();
return
true
;
}
}
else
{
select_ready
=
true
;
mainGame
->
wCardSelect
->
setVisible
(
false
);
wchar_t
wbuf
[
256
],
*
pwbuf
=
wbuf
;
BufferIO
::
CopyWStrRef
(
dataManager
.
GetSysString
(
209
),
pwbuf
,
256
);
*
pwbuf
++
=
L'\n'
;
BufferIO
::
CopyWStrRef
(
dataManager
.
GetSysString
(
210
),
pwbuf
,
256
);
mainGame
->
stQMessage
->
setText
(
wbuf
);
mainGame
->
PopupElement
(
mainGame
->
wQuery
);
}
}
else
{
select_ready
=
false
;
mainGame
->
wCardSelect
->
setVisible
(
false
);
mainGame
->
dField
.
ShowSelectCard
();
}
mainGame
->
wCardSelect
->
setText
(
textBuffer
);
mainGame
->
wCardSelect
->
setVisible
(
false
);
mainGame
->
dField
.
ShowSelectCard
();
}
else
{
if
(
CheckSelectSum
())
{
if
(
selectsum_cards
.
size
()
==
0
||
selectable_cards
.
size
()
==
0
)
{
SetResponseSelectedCards
();
ShowCancelOrFinishButton
(
0
);
DuelClient
::
SendResponse
();
return
true
;
}
else
{
select_ready
=
true
;
wchar_t
wbuf
[
256
],
*
pwbuf
=
wbuf
;
BufferIO
::
CopyWStrRef
(
dataManager
.
GetSysString
(
209
),
pwbuf
,
256
);
*
pwbuf
++
=
L'\n'
;
BufferIO
::
CopyWStrRef
(
dataManager
.
GetSysString
(
210
),
pwbuf
,
256
);
mainGame
->
stQMessage
->
setText
(
wbuf
);
mainGame
->
PopupElement
(
mainGame
->
wQuery
);
}
}
else
select_ready
=
false
;
mainGame
->
stHintMsg
->
setText
(
textBuffer
);
mainGame
->
stHintMsg
->
setVisible
(
true
);
}
if
(
select_ready
)
{
ShowCancelOrFinishButton
(
2
);
...
...
@@ -1184,11 +1177,13 @@ bool ClientField::ShowSelectSum(bool panelmode) {
}
bool
ClientField
::
CheckSelectSum
()
{
std
::
set
<
ClientCard
*>
selable
;
for
(
auto
s
it
=
selectsum_all
.
begin
();
sit
!=
selectsum_all
.
end
();
++
sit
)
{
(
*
sit
)
->
is_selectable
=
false
;
(
*
sit
)
->
is_selected
=
false
;
selable
.
insert
(
*
sit
);
for
(
auto
s
c
:
selectsum_all
)
{
sc
->
is_selectable
=
false
;
sc
->
is_selected
=
false
;
selable
.
insert
(
sc
);
}
select_curval_l
=
0
;
select_curval_h
=
0
;
for
(
int
i
=
0
;
i
<
(
int
)
selected_cards
.
size
();
++
i
)
{
if
(
i
<
must_select_count
)
selected_cards
[
i
]
->
is_selectable
=
false
;
...
...
@@ -1196,22 +1191,32 @@ bool ClientField::CheckSelectSum() {
selected_cards
[
i
]
->
is_selectable
=
true
;
selected_cards
[
i
]
->
is_selected
=
true
;
selable
.
erase
(
selected_cards
[
i
]);
int
op1
=
selected_cards
[
i
]
->
opParam
&
0xffff
;
int
op2
=
selected_cards
[
i
]
->
opParam
>>
16
;
int
opmin
=
(
op2
>
0
&&
op1
>
op2
)
?
op2
:
op1
;
int
opmax
=
op2
>
op1
?
op2
:
op1
;
select_curval_l
+=
opmin
;
select_curval_h
+=
opmax
;
}
selectsum_cards
.
clear
();
if
(
select_mode
==
0
)
{
if
(
select_mode
==
0
)
{
// sum equal
bool
ret
=
check_sel_sum_s
(
selable
,
0
,
select_sumval
);
selectable_cards
.
clear
();
for
(
auto
sit
=
selectsum_cards
.
begin
();
sit
!=
selectsum_cards
.
end
();
++
sit
)
{
(
*
sit
)
->
is_selectable
=
true
;
selectable_cards
.
push_back
(
*
sit
);
for
(
auto
sc
:
selectsum_cards
)
{
sc
->
is_selectable
=
true
;
selectable_cards
.
push_back
(
sc
);
}
for
(
auto
sc
:
selected_cards
)
{
selectable_cards
.
push_back
(
sc
);
}
return
ret
;
}
else
{
}
else
{
// sum greater
int
mm
=
-
1
,
mx
=
-
1
,
max
=
0
,
sumc
=
0
;
bool
ret
=
false
;
for
(
auto
s
it
=
selected_cards
.
begin
();
sit
!=
selected_cards
.
end
();
++
sit
)
{
int
op1
=
(
*
sit
)
->
opParam
&
0xffff
;
int
op2
=
(
*
sit
)
->
opParam
>>
16
;
for
(
auto
s
c
:
selected_cards
)
{
int
op1
=
sc
->
opParam
&
0xffff
;
int
op2
=
sc
->
opParam
>>
16
;
int
opmin
=
(
op2
>
0
&&
op1
>
op2
)
?
op2
:
op1
;
int
opmax
=
op2
>
op1
?
op2
:
op1
;
if
(
mm
==
-
1
||
opmin
<
mm
)
...
...
@@ -1225,9 +1230,9 @@ bool ClientField::CheckSelectSum() {
return
true
;
if
(
select_sumval
<=
max
&&
select_sumval
>
max
-
mx
)
ret
=
true
;
for
(
auto
s
it
=
selable
.
begin
();
sit
!=
selable
.
end
();
++
sit
)
{
int
op1
=
(
*
sit
)
->
opParam
&
0xffff
;
int
op2
=
(
*
sit
)
->
opParam
>>
16
;
for
(
auto
s
c
:
selable
)
{
int
op1
=
sc
->
opParam
&
0xffff
;
int
op2
=
sc
->
opParam
>>
16
;
int
m
=
op1
;
int
sums
=
sumc
;
sums
+=
m
;
...
...
@@ -1236,12 +1241,12 @@ bool ClientField::CheckSelectSum() {
ms
=
m
;
if
(
sums
>=
select_sumval
)
{
if
(
sums
-
ms
<
select_sumval
)
selectsum_cards
.
insert
(
*
sit
);
selectsum_cards
.
insert
(
sc
);
}
else
{
std
::
set
<
ClientCard
*>
left
(
selable
);
left
.
erase
(
*
sit
);
left
.
erase
(
sc
);
if
(
check_min
(
left
,
left
.
begin
(),
select_sumval
-
sums
,
select_sumval
-
sums
+
ms
-
1
))
selectsum_cards
.
insert
(
*
sit
);
selectsum_cards
.
insert
(
sc
);
}
if
(
op2
==
0
)
continue
;
...
...
@@ -1253,18 +1258,21 @@ bool ClientField::CheckSelectSum() {
ms
=
m
;
if
(
sums
>=
select_sumval
)
{
if
(
sums
-
ms
<
select_sumval
)
selectsum_cards
.
insert
(
*
sit
);
selectsum_cards
.
insert
(
sc
);
}
else
{
std
::
set
<
ClientCard
*>
left
(
selable
);
left
.
erase
(
*
sit
);
left
.
erase
(
sc
);
if
(
check_min
(
left
,
left
.
begin
(),
select_sumval
-
sums
,
select_sumval
-
sums
+
ms
-
1
))
selectsum_cards
.
insert
(
*
sit
);
selectsum_cards
.
insert
(
sc
);
}
}
selectable_cards
.
clear
();
for
(
auto
sit
=
selectsum_cards
.
begin
();
sit
!=
selectsum_cards
.
end
();
++
sit
)
{
(
*
sit
)
->
is_selectable
=
true
;
selectable_cards
.
push_back
(
*
sit
);
for
(
auto
sc
:
selectsum_cards
)
{
sc
->
is_selectable
=
true
;
selectable_cards
.
push_back
(
sc
);
}
for
(
auto
sc
:
selected_cards
)
{
selectable_cards
.
push_back
(
sc
);
}
return
ret
;
}
...
...
Classes/gframe/client_field.h
View file @
88f331ad
...
...
@@ -61,9 +61,12 @@ public:
int
select_min
{
0
};
int
select_max
{
0
};
int
must_select_count
{
0
};
int
select_curval_l
{
0
};
int
select_curval_h
{
0
};
int
select_sumval
{
0
};
int
select_mode
{
0
};
bool
select_cancelable
{
false
};
int
select_hint
{
0
};
bool
select_cancelable
{
false
};
bool
select_panalmode
{
false
};
bool
select_ready
{
false
};
int
announce_count
{
0
};
...
...
@@ -156,8 +159,8 @@ public:
ClientCard
*
menu_card
{
nullptr
};
int
list_command
{
0
};
virtual
bool
OnEvent
(
const
irr
::
SEvent
&
event
)
;
virtual
bool
OnCommonEvent
(
const
irr
::
SEvent
&
event
);
bool
OnEvent
(
const
irr
::
SEvent
&
event
)
override
;
bool
OnCommonEvent
(
const
irr
::
SEvent
&
event
);
void
GetHoverField
(
int
x
,
int
y
);
void
ShowMenu
(
int
flag
,
int
x
,
int
y
);
void
HideMenu
();
...
...
Classes/gframe/deck_con.cpp
View file @
88f331ad
...
...
@@ -1403,13 +1403,12 @@ void DeckBuilder::FilterCards() {
all
,
name
,
setcode
}
type
;
bool
exclude
;
element_t
()
:
type
(
type_t
::
all
),
exclude
(
false
)
{}
}
type
{
type_t
::
all
};
bool
exclude
{
false
};
};
const
wchar_t
*
pstr
=
mainGame
->
ebCardName
->
getText
();
int
trycode
=
BufferIO
::
GetVal
(
pstr
);
std
::
wstring
str
=
std
::
wstring
(
pstr
)
;
std
::
wstring
str
{
pstr
}
;
std
::
vector
<
element_t
>
query_elements
;
if
(
mainGame
->
gameConf
.
search_multiple_keywords
)
{
const
wchar_t
separator
=
mainGame
->
gameConf
.
search_multiple_keywords
==
1
?
L' '
:
L'+'
;
...
...
Classes/gframe/deck_con.h
View file @
88f331ad
...
...
@@ -15,7 +15,7 @@ namespace ygo {
class
DeckBuilder
:
public
irr
::
IEventReceiver
{
public:
virtual
bool
OnEvent
(
const
irr
::
SEvent
&
event
)
;
bool
OnEvent
(
const
irr
::
SEvent
&
event
)
override
;
void
Initialize
();
void
Terminate
();
void
GetHoveredCard
();
...
...
Classes/gframe/duelclient.cpp
View file @
88f331ad
...
...
@@ -2073,16 +2073,8 @@ bool DuelClient::ClientAnalyze(unsigned char* msg, int len) {
mainGame
->
dField
.
select_panalmode
=
true
;
}
std
::
sort
(
mainGame
->
dField
.
selectsum_all
.
begin
(),
mainGame
->
dField
.
selectsum_all
.
end
(),
ClientCard
::
client_card_sort
);
if
(
select_hint
)
myswprintf
(
textBuffer
,
L"%ls(%d)"
,
dataManager
.
GetDesc
(
select_hint
),
mainGame
->
dField
.
select_sumval
);
else
myswprintf
(
textBuffer
,
L"%ls(%d)"
,
dataManager
.
GetSysString
(
560
),
mainGame
->
dField
.
select_sumval
);
mainGame
->
dField
.
select_hint
=
select_hint
;
select_hint
=
0
;
if
(
mainGame
->
dField
.
select_panalmode
)
{
mainGame
->
stCardSelect
->
setText
(
textBuffer
);
}
else
{
mainGame
->
stHintMsg
->
setText
(
textBuffer
);
mainGame
->
stHintMsg
->
setVisible
(
true
);
}
return
mainGame
->
dField
.
ShowSelectSum
(
mainGame
->
dField
.
select_panalmode
);
}
case
MSG_SORT_CARD
:
{
...
...
Classes/gframe/event_handler.cpp
View file @
88f331ad
...
...
@@ -808,11 +808,11 @@ bool ClientField::OnEvent(const irr::SEvent& event) {
if
(
command_card
->
is_selected
)
{
command_card
->
is_selected
=
false
;
if
(
command_card
->
controler
)
mainGame
->
stCardPos
[
id
-
BUTTON_CARD_0
]
->
setBackgroundColor
(
0xff
d0d0d0
);
else
mainGame
->
stCardPos
[
id
-
BUTTON_CARD_0
]
->
setBackgroundColor
(
0xff
fffff
f
);
mainGame
->
stCardPos
[
id
-
BUTTON_CARD_0
]
->
setBackgroundColor
(
0xff
5a5a5a
);
else
mainGame
->
stCardPos
[
id
-
BUTTON_CARD_0
]
->
setBackgroundColor
(
0xff
56649
f
);
}
else
{
command_card
->
is_selected
=
true
;
mainGame
->
stCardPos
[
id
-
BUTTON_CARD_0
]
->
setBackgroundColor
(
0x
ffffff00
);
mainGame
->
stCardPos
[
id
-
BUTTON_CARD_0
]
->
setBackgroundColor
(
0x
6011113d
);
}
selected_cards
.
push_back
(
command_card
);
if
(
selected_cards
.
size
()
>
0
)
{
...
...
@@ -824,7 +824,19 @@ bool ClientField::OnEvent(const irr::SEvent& event) {
}
case
MSG_SELECT_SUM
:
{
command_card
=
selectable_cards
[
id
-
BUTTON_CARD_0
+
mainGame
->
scrCardList
->
getPos
()
/
10
];
selected_cards
.
push_back
(
command_card
);
if
(
command_card
->
is_selected
)
{
command_card
->
is_selected
=
false
;
int
i
=
0
;
while
(
selected_cards
[
i
]
!=
command_card
)
i
++
;
selected_cards
.
erase
(
selected_cards
.
begin
()
+
i
);
if
(
command_card
->
controler
)
mainGame
->
stCardPos
[
id
-
BUTTON_CARD_0
]
->
setBackgroundColor
(
0xff5a5a5a
);
else
mainGame
->
stCardPos
[
id
-
BUTTON_CARD_0
]
->
setBackgroundColor
(
0xff56649f
);
}
else
{
command_card
->
is_selected
=
true
;
mainGame
->
stCardPos
[
id
-
BUTTON_CARD_0
]
->
setBackgroundColor
(
0x6011113d
);
selected_cards
.
push_back
(
command_card
);
}
ShowSelectSum
(
true
);
break
;
}
...
...
@@ -2937,11 +2949,14 @@ void ClientField::CancelOrFinish() {
break
;
}
case
MSG_SELECT_SUM
:
{
if
(
mainGame
->
wQuery
->
isVisible
()
)
{
if
(
select_ready
)
{
SetResponseSelectedCards
();
ShowCancelOrFinishButton
(
0
);
mainGame
->
HideElement
(
mainGame
->
wQuery
,
true
);
break
;
if
(
mainGame
->
wCardSelect
->
isVisible
())
mainGame
->
HideElement
(
mainGame
->
wCardSelect
,
true
);
else
DuelClient
::
SendResponse
();
}
break
;
}
...
...
Classes/gframe/menu_handler.h
View file @
88f331ad
...
...
@@ -10,7 +10,7 @@ namespace ygo {
class
MenuHandler
:
public
irr
::
IEventReceiver
{
public:
virtual
bool
OnEvent
(
const
irr
::
SEvent
&
event
)
;
bool
OnEvent
(
const
irr
::
SEvent
&
event
)
override
;
s32
prev_operation
;
int
prev_sel
;
...
...
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