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
86805bc8
Commit
86805bc8
authored
Apr 23, 2020
by
fallenstardust
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
test bool is_selectable
parent
0e2adde6
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
163 additions
and
144 deletions
+163
-144
Classes/gframe/client_field.cpp
Classes/gframe/client_field.cpp
+1
-0
Classes/gframe/client_field.h
Classes/gframe/client_field.h
+1
-0
Classes/gframe/event_handler.cpp
Classes/gframe/event_handler.cpp
+161
-144
No files found.
Classes/gframe/client_field.cpp
View file @
86805bc8
...
...
@@ -24,6 +24,7 @@ ClientField::ClientField() {
is_dragging_CardDisplay
=
false
;
is_dragging_tabHelper
=
false
;
is_dragging_tabSystem
=
false
;
is_selectable
=
true
;
dragging_tab_start_pos
=
0
;
dragging_tab_start_x
=
0
;
dragging_tab_start_y
=
0
;
...
...
Classes/gframe/client_field.h
View file @
86805bc8
...
...
@@ -129,6 +129,7 @@ public:
bool
is_dragging_CardDisplay
;
bool
is_dragging_tabHelper
;
bool
is_dragging_tabSystem
;
bool
is_selectable
;
int
dragging_tab_start_pos
;
int
dragging_tab_start_x
;
int
dragging_tab_start_y
;
...
...
Classes/gframe/event_handler.cpp
View file @
86805bc8
...
...
@@ -641,150 +641,152 @@ bool ClientField::OnEvent(const irr::SEvent& event) {
case
BUTTON_CARD_2
:
case
BUTTON_CARD_3
:
case
BUTTON_CARD_4
:
{
if
(
mainGame
->
dInfo
.
isReplay
)
break
;
switch
(
mainGame
->
dInfo
.
curMsg
)
{
case
MSG_SELECT_IDLECMD
:
case
MSG_SELECT_BATTLECMD
:
case
MSG_SELECT_CHAIN
:
{
if
(
list_command
==
COMMAND_LIST
)
break
;
if
(
list_command
==
COMMAND_SPSUMMON
)
{
command_card
=
selectable_cards
[
id
-
BUTTON_CARD_0
+
mainGame
->
scrCardList
->
getPos
()
/
10
];
int
index
=
0
;
while
(
spsummonable_cards
[
index
]
!=
command_card
)
index
++
;
DuelClient
::
SetResponseI
((
index
<<
16
)
+
1
);
mainGame
->
HideElement
(
mainGame
->
wCardSelect
,
true
);
ShowCancelOrFinishButton
(
0
);
break
;
}
if
(
list_command
==
COMMAND_ACTIVATE
||
list_command
==
COMMAND_OPERATION
)
{
int
index
=
-
1
;
command_card
=
selectable_cards
[
id
-
BUTTON_CARD_0
+
mainGame
->
scrCardList
->
getPos
()
/
10
];
select_options
.
clear
();
for
(
size_t
i
=
0
;
i
<
activatable_cards
.
size
();
++
i
)
{
if
(
activatable_cards
[
i
]
==
command_card
)
{
if
(
activatable_descs
[
i
].
second
==
EDESC_OPERATION
)
{
if
(
list_command
==
COMMAND_ACTIVATE
)
continue
;
}
else
{
if
(
list_command
==
COMMAND_OPERATION
)
continue
;
}
select_options
.
push_back
(
activatable_descs
[
i
].
first
);
if
(
index
==
-
1
)
index
=
i
;
}
}
if
(
select_options
.
size
()
==
1
)
{
if
(
mainGame
->
dInfo
.
curMsg
==
MSG_SELECT_IDLECMD
)
{
DuelClient
::
SetResponseI
((
index
<<
16
)
+
5
);
}
else
if
(
mainGame
->
dInfo
.
curMsg
==
MSG_SELECT_BATTLECMD
)
{
DuelClient
::
SetResponseI
(
index
<<
16
);
}
else
{
DuelClient
::
SetResponseI
(
index
);
}
mainGame
->
HideElement
(
mainGame
->
wCardSelect
,
true
);
}
else
{
mainGame
->
wCardSelect
->
setVisible
(
false
);
ShowSelectOption
();
}
break
;
}
break
;
}
case
MSG_SELECT_CARD
:
{
command_card
=
selectable_cards
[
id
-
BUTTON_CARD_0
+
mainGame
->
scrCardList
->
getPos
()
/
10
];
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
);
}
int
sel
=
selected_cards
.
size
();
if
(
sel
>=
select_max
)
{
SetResponseSelectedCards
();
ShowCancelOrFinishButton
(
0
);
mainGame
->
HideElement
(
mainGame
->
wCardSelect
,
true
);
}
else
if
(
sel
>=
select_min
)
{
select_ready
=
true
;
mainGame
->
btnSelectOK
->
setVisible
(
true
);
ShowCancelOrFinishButton
(
2
);
}
else
{
select_ready
=
false
;
mainGame
->
btnSelectOK
->
setVisible
(
false
);
if
(
select_cancelable
&&
sel
==
0
)
ShowCancelOrFinishButton
(
1
);
else
ShowCancelOrFinishButton
(
0
);
}
break
;
}
case
MSG_SELECT_UNSELECT_CARD
:
{
command_card
=
selectable_cards
[
id
-
BUTTON_CARD_0
+
mainGame
->
scrCardList
->
getPos
()
/
10
];
if
(
command_card
->
is_selected
)
{
command_card
->
is_selected
=
false
;
if
(
command_card
->
controler
)
mainGame
->
stCardPos
[
id
-
BUTTON_CARD_0
]
->
setBackgroundColor
(
0xffd0d0d0
);
else
mainGame
->
stCardPos
[
id
-
BUTTON_CARD_0
]
->
setBackgroundColor
(
0xffffffff
);
}
else
{
command_card
->
is_selected
=
true
;
mainGame
->
stCardPos
[
id
-
BUTTON_CARD_0
]
->
setBackgroundColor
(
0xffffff00
);
}
selected_cards
.
push_back
(
command_card
);
if
(
selected_cards
.
size
()
>
0
)
{
SetResponseSelectedCards
();
ShowCancelOrFinishButton
(
0
);
mainGame
->
HideElement
(
mainGame
->
wCardSelect
,
true
);
}
break
;
}
case
MSG_SELECT_SUM
:
{
command_card
=
selectable_cards
[
id
-
BUTTON_CARD_0
+
mainGame
->
scrCardList
->
getPos
()
/
10
];
selected_cards
.
push_back
(
command_card
);
ShowSelectSum
(
true
);
break
;
}
case
MSG_SORT_CARD
:
{
int
offset
=
mainGame
->
scrCardList
->
getPos
()
/
10
;
int
sel_seq
=
id
-
BUTTON_CARD_0
+
offset
;
wchar_t
formatBuffer
[
2048
];
if
(
sort_list
[
sel_seq
])
{
select_min
--
;
int
sel
=
sort_list
[
sel_seq
];
sort_list
[
sel_seq
]
=
0
;
for
(
int
i
=
0
;
i
<
select_max
;
++
i
)
if
(
sort_list
[
i
]
>
sel
)
sort_list
[
i
]
--
;
for
(
int
i
=
0
;
i
<
5
;
++
i
)
{
if
(
offset
+
i
>=
select_max
)
break
;
if
(
sort_list
[
offset
+
i
])
{
myswprintf
(
formatBuffer
,
L"%d"
,
sort_list
[
offset
+
i
]);
mainGame
->
stCardPos
[
i
]
->
setText
(
formatBuffer
);
}
else
mainGame
->
stCardPos
[
i
]
->
setText
(
L""
);
}
}
else
{
select_min
++
;
sort_list
[
sel_seq
]
=
select_min
;
myswprintf
(
formatBuffer
,
L"%d"
,
select_min
);
mainGame
->
stCardPos
[
id
-
BUTTON_CARD_0
]
->
setText
(
formatBuffer
);
if
(
select_min
==
select_max
)
{
unsigned
char
respbuf
[
64
];
for
(
int
i
=
0
;
i
<
select_max
;
++
i
)
respbuf
[
i
]
=
sort_list
[
i
]
-
1
;
DuelClient
::
SetResponseB
(
respbuf
,
select_max
);
mainGame
->
HideElement
(
mainGame
->
wCardSelect
,
true
);
sort_list
.
clear
();
}
}
break
;
}
}
if
(
is_selectable
)
{
if
(
mainGame
->
dInfo
.
isReplay
)
break
;
switch
(
mainGame
->
dInfo
.
curMsg
)
{
case
MSG_SELECT_IDLECMD
:
case
MSG_SELECT_BATTLECMD
:
case
MSG_SELECT_CHAIN
:
{
if
(
list_command
==
COMMAND_LIST
)
break
;
if
(
list_command
==
COMMAND_SPSUMMON
)
{
command_card
=
selectable_cards
[
id
-
BUTTON_CARD_0
+
mainGame
->
scrCardList
->
getPos
()
/
10
];
int
index
=
0
;
while
(
spsummonable_cards
[
index
]
!=
command_card
)
index
++
;
DuelClient
::
SetResponseI
((
index
<<
16
)
+
1
);
mainGame
->
HideElement
(
mainGame
->
wCardSelect
,
true
);
ShowCancelOrFinishButton
(
0
);
break
;
}
if
(
list_command
==
COMMAND_ACTIVATE
||
list_command
==
COMMAND_OPERATION
)
{
int
index
=
-
1
;
command_card
=
selectable_cards
[
id
-
BUTTON_CARD_0
+
mainGame
->
scrCardList
->
getPos
()
/
10
];
select_options
.
clear
();
for
(
size_t
i
=
0
;
i
<
activatable_cards
.
size
();
++
i
)
{
if
(
activatable_cards
[
i
]
==
command_card
)
{
if
(
activatable_descs
[
i
].
second
==
EDESC_OPERATION
)
{
if
(
list_command
==
COMMAND_ACTIVATE
)
continue
;
}
else
{
if
(
list_command
==
COMMAND_OPERATION
)
continue
;
}
select_options
.
push_back
(
activatable_descs
[
i
].
first
);
if
(
index
==
-
1
)
index
=
i
;
}
}
if
(
select_options
.
size
()
==
1
)
{
if
(
mainGame
->
dInfo
.
curMsg
==
MSG_SELECT_IDLECMD
)
{
DuelClient
::
SetResponseI
((
index
<<
16
)
+
5
);
}
else
if
(
mainGame
->
dInfo
.
curMsg
==
MSG_SELECT_BATTLECMD
)
{
DuelClient
::
SetResponseI
(
index
<<
16
);
}
else
{
DuelClient
::
SetResponseI
(
index
);
}
mainGame
->
HideElement
(
mainGame
->
wCardSelect
,
true
);
}
else
{
mainGame
->
wCardSelect
->
setVisible
(
false
);
ShowSelectOption
();
}
break
;
}
break
;
}
case
MSG_SELECT_CARD
:
{
command_card
=
selectable_cards
[
id
-
BUTTON_CARD_0
+
mainGame
->
scrCardList
->
getPos
()
/
10
];
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
);
}
int
sel
=
selected_cards
.
size
();
if
(
sel
>=
select_max
)
{
SetResponseSelectedCards
();
ShowCancelOrFinishButton
(
0
);
mainGame
->
HideElement
(
mainGame
->
wCardSelect
,
true
);
}
else
if
(
sel
>=
select_min
)
{
select_ready
=
true
;
mainGame
->
btnSelectOK
->
setVisible
(
true
);
ShowCancelOrFinishButton
(
2
);
}
else
{
select_ready
=
false
;
mainGame
->
btnSelectOK
->
setVisible
(
false
);
if
(
select_cancelable
&&
sel
==
0
)
ShowCancelOrFinishButton
(
1
);
else
ShowCancelOrFinishButton
(
0
);
}
break
;
}
case
MSG_SELECT_UNSELECT_CARD
:
{
command_card
=
selectable_cards
[
id
-
BUTTON_CARD_0
+
mainGame
->
scrCardList
->
getPos
()
/
10
];
if
(
command_card
->
is_selected
)
{
command_card
->
is_selected
=
false
;
if
(
command_card
->
controler
)
mainGame
->
stCardPos
[
id
-
BUTTON_CARD_0
]
->
setBackgroundColor
(
0xffd0d0d0
);
else
mainGame
->
stCardPos
[
id
-
BUTTON_CARD_0
]
->
setBackgroundColor
(
0xffffffff
);
}
else
{
command_card
->
is_selected
=
true
;
mainGame
->
stCardPos
[
id
-
BUTTON_CARD_0
]
->
setBackgroundColor
(
0xffffff00
);
}
selected_cards
.
push_back
(
command_card
);
if
(
selected_cards
.
size
()
>
0
)
{
SetResponseSelectedCards
();
ShowCancelOrFinishButton
(
0
);
mainGame
->
HideElement
(
mainGame
->
wCardSelect
,
true
);
}
break
;
}
case
MSG_SELECT_SUM
:
{
command_card
=
selectable_cards
[
id
-
BUTTON_CARD_0
+
mainGame
->
scrCardList
->
getPos
()
/
10
];
selected_cards
.
push_back
(
command_card
);
ShowSelectSum
(
true
);
break
;
}
case
MSG_SORT_CARD
:
{
int
offset
=
mainGame
->
scrCardList
->
getPos
()
/
10
;
int
sel_seq
=
id
-
BUTTON_CARD_0
+
offset
;
wchar_t
formatBuffer
[
2048
];
if
(
sort_list
[
sel_seq
])
{
select_min
--
;
int
sel
=
sort_list
[
sel_seq
];
sort_list
[
sel_seq
]
=
0
;
for
(
int
i
=
0
;
i
<
select_max
;
++
i
)
if
(
sort_list
[
i
]
>
sel
)
sort_list
[
i
]
--
;
for
(
int
i
=
0
;
i
<
5
;
++
i
)
{
if
(
offset
+
i
>=
select_max
)
break
;
if
(
sort_list
[
offset
+
i
])
{
myswprintf
(
formatBuffer
,
L"%d"
,
sort_list
[
offset
+
i
]);
mainGame
->
stCardPos
[
i
]
->
setText
(
formatBuffer
);
}
else
mainGame
->
stCardPos
[
i
]
->
setText
(
L""
);
}
}
else
{
select_min
++
;
sort_list
[
sel_seq
]
=
select_min
;
myswprintf
(
formatBuffer
,
L"%d"
,
select_min
);
mainGame
->
stCardPos
[
id
-
BUTTON_CARD_0
]
->
setText
(
formatBuffer
);
if
(
select_min
==
select_max
)
{
unsigned
char
respbuf
[
64
];
for
(
int
i
=
0
;
i
<
select_max
;
++
i
)
respbuf
[
i
]
=
sort_list
[
i
]
-
1
;
DuelClient
::
SetResponseB
(
respbuf
,
select_max
);
mainGame
->
HideElement
(
mainGame
->
wCardSelect
,
true
);
sort_list
.
clear
();
}
}
break
;
}
}
}
break
;
}
case
BUTTON_CARD_SEL_OK
:
{
...
...
@@ -1976,8 +1978,13 @@ bool ClientField::OnCommonEvent(const irr::SEvent& event) {
case
irr
:
:
EET_MOUSE_INPUT_EVENT
:
{
IGUIElement
*
root
=
mainGame
->
env
->
getRootGUIElement
();
position2di
mousepos
=
position2di
(
event
.
MouseInput
.
X
,
event
.
MouseInput
.
Y
);
int
presstime
,
leftuptime
;
switch
(
event
.
MouseInput
.
Event
)
{
case
irr
:
:
EMIE_LMOUSE_PRESSED_DOWN
:
{
presstime
=
os
::
Timer
::
getTime
();
char
logPresstime
[
256
];
sprintf
(
logPresstime
,
"按下time=%d"
,
presstime
);
os
::
Printer
::
log
(
logPresstime
);
//vertical scrollbar
if
(
root
->
getElementFromPoint
(
mousepos
)
==
mainGame
->
stText
)
{
if
(
!
mainGame
->
scrCardText
->
isVisible
())
{
...
...
@@ -2086,6 +2093,10 @@ bool ClientField::OnCommonEvent(const irr::SEvent& event) {
break
;
}
case
irr
:
:
EMIE_LMOUSE_LEFT_UP
:
{
leftuptime
=
os
::
Timer
::
getTime
();
char
logleftuptime
[
256
];
sprintf
(
logleftuptime
,
"放开time=%d"
,
leftuptime
);
os
::
Printer
::
log
(
logleftuptime
);
if
(
root
->
getElementFromPoint
(
mousepos
)
==
mainGame
->
stText
||
root
->
getElementFromPoint
(
mousepos
)
==
mainGame
->
wHostPrepare
)
{
mainGame
->
gMutex
.
lock
();
...
...
@@ -2094,6 +2105,12 @@ bool ClientField::OnCommonEvent(const irr::SEvent& event) {
mainGame
->
gMutex
.
unlock
();
break
;
}
//touch the target place to refresh textfonts
if
(
leftuptime
-
presstime
>
200
)
{
is_selectable
=
false
;
}
else
{
is_selectable
=
true
;
}
is_dragging_cardtext
=
false
;
is_dragging_lstLog
=
false
;
is_dragging_lstReplayList
=
false
;
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment