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
d6f034c0
Commit
d6f034c0
authored
Jun 29, 2017
by
edo9300
Browse files
Options
Browse Files
Download
Plain Diff
Merge remote-tracking branch 'refs/remotes/Fluorohydride/master'
removed separate_clear_button
parents
c1a7b452
de985735
Changes
8
Show whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
390 additions
and
437 deletions
+390
-437
gframe/client_field.h
gframe/client_field.h
+1
-0
gframe/deck_con.cpp
gframe/deck_con.cpp
+282
-342
gframe/deck_con.h
gframe/deck_con.h
+15
-3
gframe/drawing.cpp
gframe/drawing.cpp
+6
-2
gframe/event_handler.cpp
gframe/event_handler.cpp
+82
-40
gframe/game.cpp
gframe/game.cpp
+3
-9
gframe/game.h
gframe/game.h
+0
-1
gframe/menu_handler.cpp
gframe/menu_handler.cpp
+1
-40
No files found.
gframe/client_field.h
View file @
d6f034c0
...
...
@@ -130,6 +130,7 @@ public:
int
list_command
;
virtual
bool
OnEvent
(
const
irr
::
SEvent
&
event
);
virtual
bool
OnCommonEvent
(
const
irr
::
SEvent
&
event
);
void
GetHoverField
(
int
x
,
int
y
);
void
ShowMenu
(
int
flag
,
int
x
,
int
y
);
void
UpdateChainButtons
();
...
...
gframe/deck_con.cpp
View file @
d6f034c0
...
...
@@ -58,7 +58,48 @@ static bool check_set_code(const CardDataC& data, int set_code) {
return
res
;
}
void
DeckBuilder
::
Initialize
()
{
mainGame
->
is_building
=
true
;
mainGame
->
is_siding
=
false
;
mainGame
->
wInfos
->
setVisible
(
true
);
mainGame
->
wCardImg
->
setVisible
(
true
);
mainGame
->
wDeckEdit
->
setVisible
(
true
);
mainGame
->
wFilter
->
setVisible
(
true
);
mainGame
->
wSort
->
setVisible
(
true
);
mainGame
->
btnLeaveGame
->
setVisible
(
true
);
mainGame
->
btnLeaveGame
->
setText
(
dataManager
.
GetSysString
(
1306
));
mainGame
->
btnSideOK
->
setVisible
(
false
);
filterList
=
deckManager
.
_lfList
[
0
].
content
;
mainGame
->
cbDBLFList
->
setSelected
(
0
);
ClearSearch
();
is_draging
=
false
;
prev_deck
=
mainGame
->
cbDBDecks
->
getSelected
();
prev_operation
=
0
;
mainGame
->
device
->
setEventReceiver
(
&
mainGame
->
deckBuilder
);
}
void
DeckBuilder
::
Terminate
()
{
mainGame
->
is_building
=
false
;
mainGame
->
wDeckEdit
->
setVisible
(
false
);
mainGame
->
wCategories
->
setVisible
(
false
);
mainGame
->
wFilter
->
setVisible
(
false
);
mainGame
->
wSort
->
setVisible
(
false
);
mainGame
->
wCardImg
->
setVisible
(
false
);
mainGame
->
wInfos
->
setVisible
(
false
);
mainGame
->
btnLeaveGame
->
setVisible
(
false
);
mainGame
->
PopupElement
(
mainGame
->
wMainMenu
);
mainGame
->
device
->
setEventReceiver
(
&
mainGame
->
menuHandler
);
mainGame
->
wACMessage
->
setVisible
(
false
);
imageManager
.
ClearTexture
();
mainGame
->
scrFilter
->
setVisible
(
false
);
int
sel
=
mainGame
->
cbDBDecks
->
getSelected
();
if
(
sel
>=
0
)
BufferIO
::
CopyWStr
(
mainGame
->
cbDBDecks
->
getItem
(
sel
),
mainGame
->
gameConf
.
lastdeck
,
64
);
if
(
exit_on_return
)
mainGame
->
device
->
closeDevice
();
}
bool
DeckBuilder
::
OnEvent
(
const
irr
::
SEvent
&
event
)
{
if
(
mainGame
->
dField
.
OnCommonEvent
(
event
))
return
false
;
switch
(
event
.
EventType
)
{
case
irr
:
:
EET_GUI_EVENT
:
{
s32
id
=
event
.
GUIEvent
.
Caller
->
getID
();
...
...
@@ -76,7 +117,7 @@ bool DeckBuilder::OnEvent(const irr::SEvent& event) {
mainGame
->
SetStaticText
(
mainGame
->
stQMessage
,
310
,
mainGame
->
textFont
,
(
wchar_t
*
)
dataManager
.
GetSysString
(
1339
));
mainGame
->
PopupElement
(
mainGame
->
wQuery
);
mainGame
->
gMutex
.
Unlock
();
is_clearing
=
true
;
prev_operation
=
id
;
break
;
}
case
BUTTON_SORT_DECK
:
{
...
...
@@ -91,7 +132,7 @@ bool DeckBuilder::OnEvent(const irr::SEvent& event) {
}
case
BUTTON_SAVE_DECK
:
{
int
sel
=
mainGame
->
cbDBDecks
->
getSelected
();
if
(
sel
>-
1
&&
deckManager
.
SaveDeck
(
deckManager
.
current_deck
,
mainGame
->
cbDBDecks
->
getItem
(
sel
)))
{
if
(
sel
>=
0
&&
deckManager
.
SaveDeck
(
deckManager
.
current_deck
,
mainGame
->
cbDBDecks
->
getItem
(
sel
)))
{
mainGame
->
stACMessage
->
setText
(
dataManager
.
GetSysString
(
1335
));
mainGame
->
PopupElement
(
mainGame
->
wACMessage
,
20
);
}
...
...
@@ -130,28 +171,11 @@ bool DeckBuilder::OnEvent(const irr::SEvent& event) {
mainGame
->
SetStaticText
(
mainGame
->
stQMessage
,
310
,
mainGame
->
textFont
,
(
wchar_t
*
)
textBuffer
);
mainGame
->
PopupElement
(
mainGame
->
wQuery
);
mainGame
->
gMutex
.
Unlock
();
is_deleting
=
true
;
prev_operation
=
id
;
break
;
}
case
BUTTON_LEAVE_GAME
:
{
mainGame
->
is_building
=
false
;
mainGame
->
wDeckEdit
->
setVisible
(
false
);
mainGame
->
wCategories
->
setVisible
(
false
);
mainGame
->
wFilter
->
setVisible
(
false
);
mainGame
->
wSort
->
setVisible
(
false
);
mainGame
->
wCardImg
->
setVisible
(
false
);
mainGame
->
wInfos
->
setVisible
(
false
);
mainGame
->
btnLeaveGame
->
setVisible
(
false
);
mainGame
->
PopupElement
(
mainGame
->
wMainMenu
);
mainGame
->
device
->
setEventReceiver
(
&
mainGame
->
menuHandler
);
mainGame
->
wACMessage
->
setVisible
(
false
);
imageManager
.
ClearTexture
();
mainGame
->
scrFilter
->
setVisible
(
false
);
if
(
mainGame
->
cbDBDecks
->
getSelected
()
!=
-
1
)
{
BufferIO
::
CopyWStr
(
mainGame
->
cbDBDecks
->
getItem
(
mainGame
->
cbDBDecks
->
getSelected
()),
mainGame
->
gameConf
.
lastdeck
,
64
);
}
if
(
exit_on_return
)
mainGame
->
device
->
closeDevice
();
Terminate
();
break
;
}
case
BUTTON_EFFECT_FILTER
:
{
...
...
@@ -171,8 +195,6 @@ bool DeckBuilder::OnEvent(const irr::SEvent& event) {
filter_scl
=
parse_filter
(
mainGame
->
ebScale
->
getText
(),
&
filter_scltype
);
}
FilterCards
();
if
(
!
mainGame
->
gameConf
.
separate_clear_button
)
ClearFilter
();
break
;
}
case
BUTTON_CLEAR_FILTER
:
{
...
...
@@ -216,32 +238,40 @@ bool DeckBuilder::OnEvent(const irr::SEvent& event) {
mainGame
->
HideElement
(
mainGame
->
wQuery
);
if
(
!
mainGame
->
is_building
||
mainGame
->
is_siding
)
break
;
if
(
is_clearing
)
{
if
(
prev_operation
==
BUTTON_CLEAR_DECK
)
{
deckManager
.
current_deck
.
main
.
clear
();
deckManager
.
current_deck
.
extra
.
clear
();
deckManager
.
current_deck
.
side
.
clear
();
}
else
if
(
is_deleting
)
{
}
else
if
(
prev_operation
==
BUTTON_DELETE_DECK
)
{
int
sel
=
mainGame
->
cbDBDecks
->
getSelected
();
if
(
deckManager
.
DeleteDeck
(
deckManager
.
current_deck
,
mainGame
->
cbDBDecks
->
getItem
(
sel
)))
{
if
(
deckManager
.
DeleteDeck
(
deckManager
.
current_deck
,
mainGame
->
cbDBDecks
->
getItem
(
sel
)))
{
mainGame
->
cbDBDecks
->
removeItem
(
sel
);
int
count
=
mainGame
->
cbDBDecks
->
getItemCount
();
if
(
sel
>=
count
)
if
(
sel
>=
count
)
sel
=
count
-
1
;
mainGame
->
cbDBDecks
->
setSelected
(
sel
);
if
(
sel
!=
-
1
)
if
(
sel
!=
-
1
)
deckManager
.
LoadDeck
(
mainGame
->
cbDBDecks
->
getItem
(
sel
));
mainGame
->
stACMessage
->
setText
(
dataManager
.
GetSysString
(
1338
));
mainGame
->
PopupElement
(
mainGame
->
wACMessage
,
20
);
prev_deck
=
sel
;
}
}
else
if
(
prev_operation
==
BUTTON_LEAVE_GAME
)
{
Terminate
();
}
else
if
(
prev_operation
==
COMBOBOX_DBDECKS
)
{
int
sel
=
mainGame
->
cbDBDecks
->
getSelected
();
deckManager
.
LoadDeck
(
mainGame
->
cbDBDecks
->
getItem
(
sel
));
prev_deck
=
sel
;
}
is_clearing
=
false
;
is_deleting
=
false
;
prev_operation
=
0
;
break
;
}
case
BUTTON_NO
:
{
mainGame
->
HideElement
(
mainGame
->
wQuery
);
is_deleting
=
false
;
is_clearing
=
false
;
if
(
prev_operation
==
COMBOBOX_DBDECKS
)
{
mainGame
->
cbDBDecks
->
setSelected
(
prev_deck
);
}
prev_operation
=
0
;
break
;
}
case
BUTTON_MARKS_FILTER
:
{
...
...
@@ -272,22 +302,6 @@ bool DeckBuilder::OnEvent(const irr::SEvent& event) {
}
break
;
}
case
irr
:
:
gui
::
EGET_SCROLL_BAR_CHANGED
:
{
switch
(
id
)
{
case
SCROLL_CARDTEXT
:
{
u32
pos
=
mainGame
->
scrCardText
->
getPos
();
mainGame
->
SetStaticText
(
mainGame
->
stText
,
mainGame
->
stText
->
getRelativePosition
().
getWidth
()
-
25
,
mainGame
->
textFont
,
mainGame
->
showingtext
,
pos
);
break
;
}
break
;
}
case
SCROLL_VOLUME
:
{
mainGame
->
gameConf
.
volume
=
(
double
)
mainGame
->
srcVolume
->
getPos
()
/
100
;
mainGame
->
engineSound
->
setSoundVolume
(
mainGame
->
gameConf
.
volume
);
mainGame
->
engineMusic
->
setSoundVolume
(
mainGame
->
gameConf
.
volume
);
break
;
}
}
case
irr
:
:
gui
::
EGET_EDITBOX_ENTER
:
{
switch
(
id
)
{
case
EDITBOX_KEYWORD
:
{
...
...
@@ -319,8 +333,6 @@ bool DeckBuilder::OnEvent(const irr::SEvent& event) {
filter_scl
=
parse_filter
(
mainGame
->
ebScale
->
getText
(),
&
filter_scltype
);
}
FilterCards
();
if
(
!
mainGame
->
gameConf
.
separate_clear_button
)
ClearFilter
();
}
break
;
}
...
...
@@ -334,7 +346,9 @@ bool DeckBuilder::OnEvent(const irr::SEvent& event) {
break
;
}
case
COMBOBOX_DBDECKS
:
{
deckManager
.
LoadDeck
(
mainGame
->
cbDBDecks
->
getItem
(
mainGame
->
cbDBDecks
->
getSelected
()));
int
sel
=
mainGame
->
cbDBDecks
->
getSelected
();
deckManager
.
LoadDeck
(
mainGame
->
cbDBDecks
->
getItem
(
sel
));
prev_deck
=
sel
;
break
;
}
case
COMBOBOX_MAINTYPE
:
{
...
...
@@ -439,8 +453,6 @@ bool DeckBuilder::OnEvent(const irr::SEvent& event) {
filter_scl
=
parse_filter
(
mainGame
->
ebScale
->
getText
(),
&
filter_scltype
);
}
FilterCards
();
if
(
!
mainGame
->
gameConf
.
separate_clear_button
)
ClearFilter
();
break
;
}
case
COMBOBOX_SECONDTYPE
:
...
...
@@ -465,8 +477,6 @@ bool DeckBuilder::OnEvent(const irr::SEvent& event) {
filter_scl
=
parse_filter
(
mainGame
->
ebScale
->
getText
(),
&
filter_scltype
);
}
FilterCards
();
if
(
!
mainGame
->
gameConf
.
separate_clear_button
)
ClearFilter
();
break
;
}
case
COMBOBOX_SORTTYPE
:
{
...
...
@@ -490,7 +500,6 @@ bool DeckBuilder::OnEvent(const irr::SEvent& event) {
case
irr
:
:
EET_MOUSE_INPUT_EVENT
:
{
switch
(
event
.
MouseInput
.
Event
)
{
case
irr
:
:
EMIE_LMOUSE_PRESSED_DOWN
:
{
irr
::
core
::
position2di
mouse_pos
(
event
.
MouseInput
.
X
,
event
.
MouseInput
.
Y
);
irr
::
gui
::
IGUIElement
*
root
=
mainGame
->
env
->
getRootGUIElement
();
if
(
root
->
getElementFromPoint
(
mouse_pos
)
!=
root
)
break
;
...
...
@@ -504,100 +513,38 @@ bool DeckBuilder::OnEvent(const irr::SEvent& event) {
draging_pointer
=
dataManager
.
GetCodePointer
(
hovered_code
);
if
(
draging_pointer
==
dataManager
.
_datas
.
end
())
break
;
unsigned
int
limitcode
=
draging_pointer
->
second
.
alias
?
draging_pointer
->
second
.
alias
:
draging_pointer
->
first
;
if
(
hovered_pos
==
4
)
{
int
limit
=
3
;
if
(
filterList
->
count
(
limitcode
))
limit
=
(
*
filterList
)[
limitcode
];
for
(
size_t
i
=
0
;
i
<
deckManager
.
current_deck
.
main
.
size
();
++
i
)
if
(
deckManager
.
current_deck
.
main
[
i
]
->
first
==
limitcode
||
deckManager
.
current_deck
.
main
[
i
]
->
second
.
alias
==
limitcode
)
limit
--
;
for
(
size_t
i
=
0
;
i
<
deckManager
.
current_deck
.
extra
.
size
();
++
i
)
if
(
deckManager
.
current_deck
.
extra
[
i
]
->
first
==
limitcode
||
deckManager
.
current_deck
.
extra
[
i
]
->
second
.
alias
==
limitcode
)
limit
--
;
for
(
size_t
i
=
0
;
i
<
deckManager
.
current_deck
.
side
.
size
();
++
i
)
if
(
deckManager
.
current_deck
.
side
[
i
]
->
first
==
limitcode
||
deckManager
.
current_deck
.
side
[
i
]
->
second
.
alias
==
limitcode
)
limit
--
;
if
(
limit
<=
0
)
if
(
!
check_limit
(
draging_pointer
))
break
;
}
if
(
hovered_pos
==
1
)
deckManager
.
current_deck
.
main
.
erase
(
deckManager
.
current_deck
.
main
.
begin
()
+
hovered_seq
);
pop_main
(
hovered_seq
);
else
if
(
hovered_pos
==
2
)
deckManager
.
current_deck
.
extra
.
erase
(
deckManager
.
current_deck
.
extra
.
begin
()
+
hovered_seq
);
pop_extra
(
hovered_seq
);
else
if
(
hovered_pos
==
3
)
deckManager
.
current_deck
.
side
.
erase
(
deckManager
.
current_deck
.
side
.
begin
()
+
hovered_seq
);
pop_side
(
hovered_seq
);
is_draging
=
true
;
break
;
}
case
irr
:
:
EMIE_LMOUSE_LEFT_UP
:
{
if
(
!
is_draging
)
break
;
if
(
!
mainGame
->
is_siding
)
{
if
((
hovered_pos
==
1
&&
(
draging_pointer
->
second
.
type
&
(
TYPE_FUSION
|
TYPE_SYNCHRO
|
TYPE_XYZ
|
TYPE_LINK
)))
||
(
hovered_pos
==
2
&&
!
(
draging_pointer
->
second
.
type
&
(
TYPE_FUSION
|
TYPE_SYNCHRO
|
TYPE_XYZ
|
TYPE_LINK
))))
hovered_pos
=
0
;
if
((
hovered_pos
==
1
||
(
hovered_pos
==
0
&&
click_pos
==
1
))
&&
deckManager
.
current_deck
.
main
.
size
()
<
60
)
{
if
(
hovered_seq
==
-
1
)
deckManager
.
current_deck
.
main
.
push_back
(
draging_pointer
);
else
if
(
hovered_seq
<
(
int
)
deckManager
.
current_deck
.
main
.
size
()
&&
hovered_pos
)
deckManager
.
current_deck
.
main
.
insert
(
deckManager
.
current_deck
.
main
.
begin
()
+
hovered_seq
,
draging_pointer
);
else
deckManager
.
current_deck
.
main
.
push_back
(
draging_pointer
);
is_draging
=
false
;
}
else
if
((
hovered_pos
==
2
||
(
hovered_pos
==
0
&&
click_pos
==
2
))
&&
deckManager
.
current_deck
.
extra
.
size
()
<
15
)
{
if
(
hovered_seq
==
-
1
)
deckManager
.
current_deck
.
extra
.
push_back
(
draging_pointer
);
else
if
(
hovered_seq
<
(
int
)
deckManager
.
current_deck
.
extra
.
size
()
&&
hovered_pos
)
deckManager
.
current_deck
.
extra
.
insert
(
deckManager
.
current_deck
.
extra
.
begin
()
+
hovered_seq
,
draging_pointer
);
else
deckManager
.
current_deck
.
extra
.
push_back
(
draging_pointer
);
is_draging
=
false
;
}
else
if
((
hovered_pos
==
3
||
(
hovered_pos
==
0
&&
click_pos
==
3
))
&&
deckManager
.
current_deck
.
side
.
size
()
<
15
)
{
if
(
hovered_seq
==
-
1
)
deckManager
.
current_deck
.
side
.
push_back
(
draging_pointer
);
else
if
(
hovered_seq
<
(
int
)
deckManager
.
current_deck
.
side
.
size
()
&&
hovered_pos
)
deckManager
.
current_deck
.
side
.
insert
(
deckManager
.
current_deck
.
side
.
begin
()
+
hovered_seq
,
draging_pointer
);
else
deckManager
.
current_deck
.
side
.
push_back
(
draging_pointer
);
is_draging
=
false
;
}
else
if
(
hovered_pos
==
4
)
is_draging
=
false
;
}
else
{
if
((
hovered_pos
==
1
&&
(
draging_pointer
->
second
.
type
&
(
TYPE_FUSION
|
TYPE_SYNCHRO
|
TYPE_XYZ
|
TYPE_LINK
)))
||
(
hovered_pos
==
2
&&
!
(
draging_pointer
->
second
.
type
&
(
TYPE_FUSION
|
TYPE_SYNCHRO
|
TYPE_XYZ
|
TYPE_LINK
)))
||
hovered_pos
==
4
)
hovered_pos
=
0
;
if
((
hovered_pos
==
1
||
(
hovered_pos
==
0
&&
click_pos
==
1
))
&&
deckManager
.
current_deck
.
main
.
size
()
<
65
)
{
if
(
hovered_seq
==
-
1
)
deckManager
.
current_deck
.
main
.
push_back
(
draging_pointer
);
else
if
(
hovered_seq
<
(
int
)
deckManager
.
current_deck
.
main
.
size
()
&&
hovered_pos
)
deckManager
.
current_deck
.
main
.
insert
(
deckManager
.
current_deck
.
main
.
begin
()
+
hovered_seq
,
draging_pointer
);
else
deckManager
.
current_deck
.
main
.
push_back
(
draging_pointer
);
is_draging
=
false
;
}
else
if
((
hovered_pos
==
2
||
(
hovered_pos
==
0
&&
click_pos
==
2
))
&&
deckManager
.
current_deck
.
extra
.
size
()
<
20
)
{
if
(
hovered_seq
==
-
1
)
deckManager
.
current_deck
.
extra
.
push_back
(
draging_pointer
);
else
if
(
hovered_seq
<
(
int
)
deckManager
.
current_deck
.
extra
.
size
()
&&
hovered_pos
)
deckManager
.
current_deck
.
extra
.
insert
(
deckManager
.
current_deck
.
extra
.
begin
()
+
hovered_seq
,
draging_pointer
);
else
deckManager
.
current_deck
.
extra
.
push_back
(
draging_pointer
);
is_draging
=
false
;
}
else
if
((
hovered_pos
==
3
||
(
hovered_pos
==
0
&&
click_pos
==
3
))
&&
deckManager
.
current_deck
.
side
.
size
()
<
20
)
{
if
(
hovered_seq
==
-
1
)
deckManager
.
current_deck
.
side
.
push_back
(
draging_pointer
);
else
if
(
hovered_seq
<
(
int
)
deckManager
.
current_deck
.
side
.
size
()
&&
hovered_pos
)
deckManager
.
current_deck
.
side
.
insert
(
deckManager
.
current_deck
.
side
.
begin
()
+
hovered_seq
,
draging_pointer
);
else
deckManager
.
current_deck
.
side
.
push_back
(
draging_pointer
);
is_draging
=
false
;
}
}
if
(
is_draging
)
{
bool
pushed
=
false
;
if
(
hovered_pos
==
1
)
pushed
=
push_main
(
draging_pointer
,
hovered_seq
);
else
if
(
hovered_pos
==
2
)
pushed
=
push_extra
(
draging_pointer
,
hovered_seq
);
else
if
(
hovered_pos
==
3
)
pushed
=
push_side
(
draging_pointer
,
hovered_seq
);
else
if
(
hovered_pos
==
4
&&
!
mainGame
->
is_siding
)
pushed
=
true
;
if
(
!
pushed
)
{
if
(
click_pos
==
1
)
deckManager
.
current_deck
.
main
.
push_back
(
draging_pointer
);
push_main
(
draging_pointer
);
else
if
(
click_pos
==
2
)
deckManager
.
current_deck
.
extra
.
push_back
(
draging_pointer
);
push_extra
(
draging_pointer
);
else
if
(
click_pos
==
3
)
deckManager
.
current_deck
.
side
.
push_back
(
draging_pointer
);
push_side
(
draging_pointer
);
}
is_draging
=
false
;
break
;
...
...
@@ -608,99 +555,53 @@ bool DeckBuilder::OnEvent(const irr::SEvent& event) {
break
;
if
(
hovered_pos
==
0
||
hovered_seq
==
-
1
)
break
;
draging_
pointer
=
dataManager
.
GetCodePointer
(
hovered_code
);
if
(
draging_
pointer
==
dataManager
.
_datas
.
end
())
auto
pointer
=
dataManager
.
GetCodePointer
(
hovered_code
);
if
(
pointer
==
dataManager
.
_datas
.
end
())
break
;
if
(
hovered_pos
==
1
)
{
if
(
deckManager
.
current_deck
.
side
.
size
()
<
20
)
{
deckManager
.
current_deck
.
main
.
erase
(
deckManager
.
current_deck
.
main
.
begin
()
+
hovered_seq
);
deckManager
.
current_deck
.
side
.
push_back
(
draging_pointer
);
}
if
(
push_side
(
pointer
))
pop_main
(
hovered_seq
);
}
else
if
(
hovered_pos
==
2
)
{
if
(
deckManager
.
current_deck
.
side
.
size
()
<
20
)
{
deckManager
.
current_deck
.
extra
.
erase
(
deckManager
.
current_deck
.
extra
.
begin
()
+
hovered_seq
);
deckManager
.
current_deck
.
side
.
push_back
(
draging_pointer
);
}
if
(
push_side
(
pointer
))
pop_extra
(
hovered_seq
);
}
else
{
if
((
draging_pointer
->
second
.
type
&
(
TYPE_FUSION
|
TYPE_SYNCHRO
|
TYPE_XYZ
|
TYPE_LINK
))
&&
deckManager
.
current_deck
.
extra
.
size
()
<
20
)
{
deckManager
.
current_deck
.
side
.
erase
(
deckManager
.
current_deck
.
side
.
begin
()
+
hovered_seq
);
deckManager
.
current_deck
.
extra
.
push_back
(
draging_pointer
);
}
if
(
!
(
draging_pointer
->
second
.
type
&
(
TYPE_FUSION
|
TYPE_SYNCHRO
|
TYPE_XYZ
|
TYPE_LINK
))
&&
deckManager
.
current_deck
.
main
.
size
()
<
64
)
{
deckManager
.
current_deck
.
side
.
erase
(
deckManager
.
current_deck
.
side
.
begin
()
+
hovered_seq
);
deckManager
.
current_deck
.
main
.
push_back
(
draging_pointer
);
}
if
(
push_extra
(
pointer
)
||
push_main
(
pointer
))
pop_side
(
hovered_seq
);
}
break
;
}
if
(
mainGame
->
wCategories
->
isVisible
()
||
mainGame
->
wQuery
->
isVisible
())
break
;
if
(
hovered_pos
==
0
||
hovered_seq
==
-
1
)
break
;
if
(
!
is_draging
)
{
draging_pointer
=
dataManager
.
GetCodePointer
(
hovered_code
);
if
(
draging_pointer
==
dataManager
.
_datas
.
end
())
if
(
hovered_pos
==
0
||
hovered_seq
==
-
1
)
break
;
}
if
(
hovered_pos
==
1
)
{
if
(
!
is_draging
)
deckManager
.
current_deck
.
main
.
erase
(
deckManager
.
current_deck
.
main
.
begin
()
+
hovered_seq
);
else
if
(
deckManager
.
current_deck
.
side
.
size
()
<
15
)
{
deckManager
.
current_deck
.
side
.
push_back
(
draging_pointer
);
is_draging
=
false
;
}
pop_main
(
hovered_seq
);
}
else
if
(
hovered_pos
==
2
)
{
if
(
!
is_draging
)
deckManager
.
current_deck
.
extra
.
erase
(
deckManager
.
current_deck
.
extra
.
begin
()
+
hovered_seq
);
else
if
(
deckManager
.
current_deck
.
side
.
size
()
<
15
)
{
deckManager
.
current_deck
.
side
.
push_back
(
draging_pointer
);
is_draging
=
false
;
}
pop_extra
(
hovered_seq
);
}
else
if
(
hovered_pos
==
3
)
{
if
(
!
is_draging
)
deckManager
.
current_deck
.
side
.
erase
(
deckManager
.
current_deck
.
side
.
begin
()
+
hovered_seq
);
else
{
if
((
draging_pointer
->
second
.
type
&
(
TYPE_FUSION
|
TYPE_SYNCHRO
|
TYPE_XYZ
|
TYPE_LINK
))
&&
deckManager
.
current_deck
.
extra
.
size
()
<
15
)
{
deckManager
.
current_deck
.
extra
.
push_back
(
draging_pointer
);
is_draging
=
false
;
}
else
if
(
!
(
draging_pointer
->
second
.
type
&
(
TYPE_FUSION
|
TYPE_SYNCHRO
|
TYPE_XYZ
|
TYPE_LINK
))
&&
deckManager
.
current_deck
.
main
.
size
()
<
60
)
{
deckManager
.
current_deck
.
main
.
push_back
(
draging_pointer
);
is_draging
=
false
;
}
}
pop_side
(
hovered_seq
);
}
else
{
if
(
is_draging
)
{
if
(
deckManager
.
current_deck
.
side
.
size
()
<
15
)
{
deckManager
.
current_deck
.
side
.
push_back
(
draging_pointer
);
is_draging
=
false
;
}
}
else
{
unsigned
int
limitcode
=
draging_pointer
->
second
.
alias
?
draging_pointer
->
second
.
alias
:
draging_pointer
->
first
;
int
limit
=
3
;
if
(
filterList
->
count
(
limitcode
))
limit
=
(
*
filterList
)[
limitcode
];
for
(
size_t
i
=
0
;
i
<
deckManager
.
current_deck
.
main
.
size
();
++
i
)
if
(
deckManager
.
current_deck
.
main
[
i
]
->
first
==
limitcode
||
deckManager
.
current_deck
.
main
[
i
]
->
second
.
alias
==
limitcode
)
limit
--
;
for
(
size_t
i
=
0
;
i
<
deckManager
.
current_deck
.
extra
.
size
();
++
i
)
if
(
deckManager
.
current_deck
.
extra
[
i
]
->
first
==
limitcode
||
deckManager
.
current_deck
.
extra
[
i
]
->
second
.
alias
==
limitcode
)
limit
--
;
for
(
size_t
i
=
0
;
i
<
deckManager
.
current_deck
.
side
.
size
();
++
i
)
if
(
deckManager
.
current_deck
.
side
[
i
]
->
first
==
limitcode
||
deckManager
.
current_deck
.
side
[
i
]
->
second
.
alias
==
limitcode
)
limit
--
;
if
(
limit
<=
0
)
auto
pointer
=
dataManager
.
GetCodePointer
(
hovered_code
);
if
(
pointer
==
dataManager
.
_datas
.
end
())
break
;
if
(
!
check_limit
(
pointer
))
break
;
if
((
draging_pointer
->
second
.
type
&
(
TYPE_FUSION
|
TYPE_SYNCHRO
|
TYPE_XYZ
|
TYPE_LINK
))
&&
deckManager
.
current_deck
.
extra
.
size
()
<
15
)
{
deckManager
.
current_deck
.
extra
.
push_back
(
draging_pointer
);
}
else
if
(
!
(
draging_pointer
->
second
.
type
&
(
TYPE_FUSION
|
TYPE_SYNCHRO
|
TYPE_XYZ
|
TYPE_LINK
))
&&
deckManager
.
current_deck
.
main
.
size
()
<
60
)
{
deckManager
.
current_deck
.
main
.
push_back
(
draging_pointer
);
}
else
if
(
deckManager
.
current_deck
.
side
.
size
()
<
15
)
{
deckManager
.
current_deck
.
side
.
push_back
(
draging_pointer
);
if
(
!
push_extra
(
pointer
)
&&
!
push_main
(
pointer
))
push_side
(
pointer
);
}
}
else
{
if
(
click_pos
==
1
)
{
push_side
(
draging_pointer
);
}
else
if
(
click_pos
==
2
)
{
push_side
(
draging_pointer
);
}
else
if
(
click_pos
==
3
)
{
if
(
!
push_extra
(
draging_pointer
))
push_main
(
draging_pointer
);
}
else
{
push_side
(
draging_pointer
);
}
is_draging
=
false
;
}
break
;
}
...
...
@@ -713,167 +614,132 @@ bool DeckBuilder::OnEvent(const irr::SEvent& event) {
break
;
if
(
is_draging
)
break
;
draging_pointer
=
dataManager
.
GetCodePointer
(
hovered_code
);
unsigned
int
limitcode
=
draging_pointer
->
second
.
alias
?
draging_pointer
->
second
.
alias
:
draging_pointer
->
first
;
int
limit
=
3
;
if
(
filterList
->
count
(
limitcode
))
limit
=
(
*
filterList
)[
limitcode
];
for
(
size_t
i
=
0
;
i
<
deckManager
.
current_deck
.
main
.
size
();
++
i
)
if
(
deckManager
.
current_deck
.
main
[
i
]
->
first
==
limitcode
||
deckManager
.
current_deck
.
main
[
i
]
->
second
.
alias
==
limitcode
)
limit
--
;
for
(
size_t
i
=
0
;
i
<
deckManager
.
current_deck
.
extra
.
size
();
++
i
)
if
(
deckManager
.
current_deck
.
extra
[
i
]
->
first
==
limitcode
||
deckManager
.
current_deck
.
extra
[
i
]
->
second
.
alias
==
limitcode
)
limit
--
;
for
(
size_t
i
=
0
;
i
<
deckManager
.
current_deck
.
side
.
size
();
++
i
)
if
(
deckManager
.
current_deck
.
side
[
i
]
->
first
==
limitcode
||
deckManager
.
current_deck
.
side
[
i
]
->
second
.
alias
==
limitcode
)
limit
--
;
if
(
limit
<=
0
)
auto
pointer
=
dataManager
.
GetCodePointer
(
hovered_code
);
if
(
!
check_limit
(
pointer
))
break
;
if
(
hovered_pos
==
1
)
{
if
(
deckManager
.
current_deck
.
main
.
size
()
<
60
)
deckManager
.
current_deck
.
main
.
push_back
(
draging_pointer
);
else
if
(
deckManager
.
current_deck
.
side
.
size
()
<
15
)
deckManager
.
current_deck
.
side
.
push_back
(
draging_pointer
);
if
(
!
push_main
(
pointer
))
push_side
(
pointer
);
}
else
if
(
hovered_pos
==
2
)
{
if
(
deckManager
.
current_deck
.
extra
.
size
()
<
15
)
deckManager
.
current_deck
.
extra
.
push_back
(
draging_pointer
);
else
if
(
deckManager
.
current_deck
.
side
.
size
()
<
15
)
deckManager
.
current_deck
.
side
.
push_back
(
draging_pointer
);
if
(
!
push_extra
(
pointer
))
push_side
(
pointer
);
}
else
if
(
hovered_pos
==
3
)
{
if
(
deckManager
.
current_deck
.
side
.
size
()
<
15
)
deckManager
.
current_deck
.
side
.
push_back
(
draging_pointer
);
else
{
if
((
draging_pointer
->
second
.
type
&
(
TYPE_FUSION
|
TYPE_SYNCHRO
|
TYPE_XYZ
|
TYPE_LINK
))
&&
deckManager
.
current_deck
.
extra
.
size
()
<
15
)
deckManager
.
current_deck
.
extra
.
push_back
(
draging_pointer
);
else
if
(
!
(
draging_pointer
->
second
.
type
&
(
TYPE_FUSION
|
TYPE_SYNCHRO
|
TYPE_XYZ
|
TYPE_LINK
))
&&
deckManager
.
current_deck
.
main
.
size
()
<
60
)
deckManager
.
current_deck
.
main
.
push_back
(
draging_pointer
);
}
if
(
!
push_side
(
pointer
)
&&
!
push_extra
(
pointer
))
push_main
(
pointer
);
}
else
{
if
((
draging_pointer
->
second
.
type
&
(
TYPE_FUSION
|
TYPE_SYNCHRO
|
TYPE_XYZ
|
TYPE_LINK
))
&&
deckManager
.
current_deck
.
extra
.
size
()
<
15
)
deckManager
.
current_deck
.
extra
.
push_back
(
draging_pointer
);
else
if
(
!
(
draging_pointer
->
second
.
type
&
(
TYPE_FUSION
|
TYPE_SYNCHRO
|
TYPE_XYZ
|
TYPE_LINK
))
&&
deckManager
.
current_deck
.
main
.
size
()
<
60
)
deckManager
.
current_deck
.
main
.
push_back
(
draging_pointer
);
else
if
(
deckManager
.
current_deck
.
side
.
size
()
<
15
)
deckManager
.
current_deck
.
side
.
push_back
(
draging_pointer
);
if
(
!
push_extra
(
pointer
)
&&
!
push_main
(
pointer
))
push_side
(
pointer
);
}
break
;
}
case
irr
:
:
EMIE_MOUSE_MOVED
:
{
position2di
pos
=
mainGame
->
Resize
(
event
.
MouseInput
.
X
,
event
.
MouseInput
.
Y
,
true
);
position2di
mousepos
(
event
.
MouseInput
.
X
,
event
.
MouseInput
.
Y
);
s32
x
=
pos
.
X
;
s32
y
=
pos
.
Y
;
mouse_pos
.
set
(
event
.
MouseInput
.
X
,
event
.
MouseInput
.
Y
);
GetHoveredCard
();
break
;
}
case
irr
:
:
EMIE_MOUSE_WHEEL
:
{
if
(
!
mainGame
->
scrFilter
->
isVisible
())
break
;
if
(
event
.
MouseInput
.
Wheel
<
0
)
{
if
(
mainGame
->
scrFilter
->
getPos
()
<
mainGame
->
scrFilter
->
getMax
())
mainGame
->
scrFilter
->
setPos
(
mainGame
->
scrFilter
->
getPos
()
+
1
);
}
else
{
if
(
mainGame
->
scrFilter
->
getPos
()
>
0
)
mainGame
->
scrFilter
->
setPos
(
mainGame
->
scrFilter
->
getPos
()
-
1
);
}
GetHoveredCard
();
break
;
}
default:
break
;
}
break
;
}
case
irr
:
:
EET_KEY_INPUT_EVENT
:
{
break
;
}
default:
break
;
}
return
false
;
}
void
DeckBuilder
::
GetHoveredCard
()
{
irr
::
gui
::
IGUIElement
*
root
=
mainGame
->
env
->
getRootGUIElement
();
if
(
root
->
getElementFromPoint
(
mouse_pos
)
!=
root
)
return
;
position2di
pos
=
mainGame
->
Resize
(
mouse_pos
.
X
,
mouse_pos
.
Y
,
true
);
int
x
=
pos
.
X
;
int
y
=
pos
.
Y
;
int
pre_code
=
hovered_code
;
if
(
x
>=
314
&&
x
<=
794
&&
y
>=
164
&&
y
<=
435
)
{
hovered_pos
=
0
;
hovered_code
=
0
;
if
(
x
>=
314
&&
x
<=
794
)
{
if
(
y
>=
164
&&
y
<=
435
)
{
int
lx
=
10
,
px
,
py
=
(
y
-
164
)
/
68
;
hovered_pos
=
1
;
if
(
deckManager
.
current_deck
.
main
.
size
()
>
40
)
lx
=
(
deckManager
.
current_deck
.
main
.
size
()
-
41
)
/
4
+
11
;
if
(
x
>=
750
)
px
=
lx
-
1
;
else
px
=
(
x
-
314
)
*
(
lx
-
1
)
/
436
;
if
(
py
*
lx
+
px
>=
(
int
)
deckManager
.
current_deck
.
main
.
size
())
{
else
px
=
(
x
-
314
)
*
(
lx
-
1
)
/
436
;
hovered_seq
=
py
*
lx
+
px
;
if
(
hovered_seq
>=
(
int
)
deckManager
.
current_deck
.
main
.
size
())
{
hovered_seq
=
-
1
;
hovered_code
=
0
;
}
else
{
hovered_seq
=
py
*
lx
+
px
;
hovered_code
=
deckManager
.
current_deck
.
main
[
hovered_seq
]
->
first
;
}
}
else
if
(
x
>=
314
&&
x
<=
794
&&
y
>=
466
&&
y
<=
530
)
{
}
else
if
(
y
>=
466
&&
y
<=
530
)
{
int
lx
=
deckManager
.
current_deck
.
extra
.
size
();
hovered_pos
=
2
;
if
(
lx
<
10
)
lx
=
10
;
if
(
x
>=
750
)
hovered_seq
=
lx
-
1
;
else
hovered_seq
=
(
x
-
314
)
*
(
lx
-
1
)
/
436
;
else
hovered_seq
=
(
x
-
314
)
*
(
lx
-
1
)
/
436
;
if
(
hovered_seq
>=
(
int
)
deckManager
.
current_deck
.
extra
.
size
())
{
hovered_seq
=
-
1
;
hovered_code
=
0
;
}
else
{
hovered_code
=
deckManager
.
current_deck
.
extra
[
hovered_seq
]
->
first
;
}
}
else
if
(
x
>=
314
&&
x
<=
794
&&
y
>=
564
&&
y
<=
628
)
{
}
else
if
(
y
>=
564
&&
y
<=
628
)
{
int
lx
=
deckManager
.
current_deck
.
side
.
size
();
hovered_pos
=
3
;
if
(
lx
<
10
)
lx
=
10
;
if
(
x
>=
750
)
hovered_seq
=
lx
-
1
;
else
hovered_seq
=
(
x
-
314
)
*
(
lx
-
1
)
/
436
;
else
hovered_seq
=
(
x
-
314
)
*
(
lx
-
1
)
/
436
;
if
(
hovered_seq
>=
(
int
)
deckManager
.
current_deck
.
side
.
size
())
{
hovered_seq
=
-
1
;
hovered_code
=
0
;
}
else
{
hovered_code
=
deckManager
.
current_deck
.
side
[
hovered_seq
]
->
first
;
}
}
}
else
if
(
x
>=
810
&&
x
<=
995
&&
y
>=
165
&&
y
<=
626
)
{
hovered_pos
=
4
;
hovered_seq
=
(
y
-
165
)
/
66
;
if
(
mainGame
->
scrFilter
->
getPos
()
+
hovered_seq
>=
(
int
)
results
.
size
())
{
int
pos
=
mainGame
->
scrFilter
->
getPos
()
+
hovered_seq
;
if
(
pos
>=
(
int
)
results
.
size
())
{
hovered_seq
=
-
1
;
hovered_code
=
0
;
}
else
{
hovered_code
=
results
[
mainGame
->
scrFilter
->
getPos
()
+
hovered_seq
]
->
first
;
hovered_code
=
results
[
pos
]
->
first
;
}
}
else
{
hovered_pos
=
0
;
hovered_code
=
0
;
}
if
(
is_draging
)
{
dragx
=
mouse
pos
.
X
;
dragy
=
mouse
pos
.
Y
;
dragx
=
mouse_
pos
.
X
;
dragy
=
mouse_
pos
.
Y
;
}
if
(
!
is_draging
&&
pre_code
!=
hovered_code
)
{
if
(
hovered_code
)
{
if
(
hovered_code
)
mainGame
->
ShowCardInfo
(
hovered_code
);
}
if
(
pre_code
)
imageManager
.
RemoveTexture
(
pre_code
);
}
break
;
}
case
irr
:
:
EMIE_MOUSE_WHEEL
:
{
if
(
!
mainGame
->
scrFilter
->
isVisible
())
break
;
if
(
event
.
MouseInput
.
Wheel
<
0
)
{
if
(
mainGame
->
scrFilter
->
getPos
()
<
mainGame
->
scrFilter
->
getMax
())
mainGame
->
scrFilter
->
setPos
(
mainGame
->
scrFilter
->
getPos
()
+
1
);
}
else
{
if
(
mainGame
->
scrFilter
->
getPos
()
>
0
)
mainGame
->
scrFilter
->
setPos
(
mainGame
->
scrFilter
->
getPos
()
-
1
);
}
SEvent
e
=
event
;
e
.
MouseInput
.
Event
=
irr
::
EMIE_MOUSE_MOVED
;
mainGame
->
device
->
postEventFromUser
(
e
);
break
;
}
default:
break
;
}
break
;
}
case
irr
:
:
EET_KEY_INPUT_EVENT
:
{
switch
(
event
.
KeyInput
.
Key
)
{
case
irr
:
:
KEY_KEY_R
:
{
if
(
!
event
.
KeyInput
.
PressedDown
&&
!
mainGame
->
HasFocus
(
EGUIET_EDIT_BOX
))
mainGame
->
textFont
->
setTransparency
(
true
);
break
;
}
case
irr
:
:
KEY_ESCAPE
:
{
if
(
!
mainGame
->
HasFocus
(
EGUIET_EDIT_BOX
))
mainGame
->
device
->
minimizeWindow
();
break
;
}
default:
break
;
}
break
;
}
default:
break
;
}
return
false
;
}
void
DeckBuilder
::
FilterCards
()
{
results
.
clear
();
...
...
@@ -1061,5 +927,79 @@ void DeckBuilder::SortList() {
break
;
}
}
bool
DeckBuilder
::
push_main
(
code_pointer
pointer
,
int
seq
)
{
if
(
pointer
->
second
.
type
&
(
TYPE_FUSION
|
TYPE_SYNCHRO
|
TYPE_XYZ
|
TYPE_LINK
))
return
false
;
auto
&
container
=
deckManager
.
current_deck
.
main
;
int
maxc
=
mainGame
->
is_siding
?
64
:
60
;
if
((
int
)
container
.
size
()
>=
maxc
)
return
false
;
if
(
seq
>=
0
&&
seq
<
(
int
)
container
.
size
())
container
.
insert
(
container
.
begin
()
+
seq
,
pointer
);
else
container
.
push_back
(
pointer
);
GetHoveredCard
();
return
true
;
}
bool
DeckBuilder
::
push_extra
(
code_pointer
pointer
,
int
seq
)
{
if
(
!
(
pointer
->
second
.
type
&
(
TYPE_FUSION
|
TYPE_SYNCHRO
|
TYPE_XYZ
|
TYPE_LINK
)))
return
false
;
auto
&
container
=
deckManager
.
current_deck
.
extra
;
int
maxc
=
mainGame
->
is_siding
?
20
:
15
;
if
((
int
)
container
.
size
()
>=
maxc
)
return
false
;
if
(
seq
>=
0
&&
seq
<
(
int
)
container
.
size
())
container
.
insert
(
container
.
begin
()
+
seq
,
pointer
);
else
container
.
push_back
(
pointer
);
GetHoveredCard
();
return
true
;
}
bool
DeckBuilder
::
push_side
(
code_pointer
pointer
,
int
seq
)
{
auto
&
container
=
deckManager
.
current_deck
.
side
;
int
maxc
=
mainGame
->
is_siding
?
20
:
15
;
if
((
int
)
container
.
size
()
>=
maxc
)
return
false
;
if
(
seq
>=
0
&&
seq
<
(
int
)
container
.
size
())
container
.
insert
(
container
.
begin
()
+
seq
,
pointer
);
else
container
.
push_back
(
pointer
);
GetHoveredCard
();
return
true
;
}
void
DeckBuilder
::
pop_main
(
int
seq
)
{
auto
&
container
=
deckManager
.
current_deck
.
main
;
container
.
erase
(
container
.
begin
()
+
seq
);
GetHoveredCard
();
}
void
DeckBuilder
::
pop_extra
(
int
seq
)
{
auto
&
container
=
deckManager
.
current_deck
.
extra
;
container
.
erase
(
container
.
begin
()
+
seq
);
GetHoveredCard
();
}
void
DeckBuilder
::
pop_side
(
int
seq
)
{
auto
&
container
=
deckManager
.
current_deck
.
side
;
container
.
erase
(
container
.
begin
()
+
seq
);
GetHoveredCard
();
}
bool
DeckBuilder
::
check_limit
(
code_pointer
pointer
)
{
unsigned
int
limitcode
=
pointer
->
second
.
alias
?
pointer
->
second
.
alias
:
pointer
->
first
;
int
limit
=
3
;
auto
flit
=
filterList
->
find
(
limitcode
);
if
(
flit
!=
filterList
->
end
())
limit
=
flit
->
second
;
for
(
auto
it
=
deckManager
.
current_deck
.
main
.
begin
();
it
!=
deckManager
.
current_deck
.
main
.
end
();
++
it
)
{
if
((
*
it
)
->
first
==
limitcode
||
(
*
it
)
->
second
.
alias
==
limitcode
)
limit
--
;
}
for
(
auto
it
=
deckManager
.
current_deck
.
extra
.
begin
();
it
!=
deckManager
.
current_deck
.
extra
.
end
();
++
it
)
{
if
((
*
it
)
->
first
==
limitcode
||
(
*
it
)
->
second
.
alias
==
limitcode
)
limit
--
;
}
for
(
auto
it
=
deckManager
.
current_deck
.
side
.
begin
();
it
!=
deckManager
.
current_deck
.
side
.
end
();
++
it
)
{
if
((
*
it
)
->
first
==
limitcode
||
(
*
it
)
->
second
.
alias
==
limitcode
)
limit
--
;
}
return
limit
>
0
;
}
}
gframe/deck_con.h
View file @
d6f034c0
...
...
@@ -11,6 +11,9 @@ namespace ygo {
class
DeckBuilder
:
public
irr
::
IEventReceiver
{
public:
virtual
bool
OnEvent
(
const
irr
::
SEvent
&
event
);
void
Initialize
();
void
Terminate
();
void
GetHoveredCard
();
void
FilterCards
();
void
ClearFilter
();
void
ClearSearch
();
...
...
@@ -18,6 +21,14 @@ public:
static
bool
CardNameCompare
(
const
wchar_t
*
sa
,
const
wchar_t
*
sb
);
bool
push_main
(
code_pointer
pointer
,
int
seq
=
-
1
);
bool
push_extra
(
code_pointer
pointer
,
int
seq
=
-
1
);
bool
push_side
(
code_pointer
pointer
,
int
seq
=
-
1
);
void
pop_main
(
int
seq
);
void
pop_extra
(
int
seq
);
void
pop_side
(
int
seq
);
bool
check_limit
(
code_pointer
pointer
);
long
long
filter_effect
;
unsigned
int
filter_type
;
unsigned
int
filter_type2
;
...
...
@@ -33,6 +44,7 @@ public:
unsigned
int
filter_scl
;
unsigned
int
filter_marks
;
int
filter_lm
;
position2di
mouse_pos
;
int
hovered_code
;
int
hovered_pos
;
int
hovered_seq
;
...
...
@@ -44,8 +56,8 @@ public:
size_t
pre_extrac
;
size_t
pre_sidec
;
code_pointer
draging_pointer
;
bool
is_deleting
;
bool
is_clearing
;
int
prev_deck
;
s32
prev_operation
;
std
::
unordered_map
<
int
,
int
>*
filterList
;
std
::
vector
<
code_pointer
>
results
;
...
...
gframe/drawing.cpp
View file @
d6f034c0
...
...
@@ -211,7 +211,9 @@ void Game::DrawLinkedZones(ClientCard* pcard) {
driver
->
drawVertexPrimitiveList
(
&
matManager
.
vFieldMzone
[
dField
.
hovered_controler
][
dField
.
hovered_sequence
+
1
],
4
,
matManager
.
iRectangle
,
2
);
}
if
(
dInfo
.
duel_rule
>=
4
)
{
if
((
mark
&
LINK_MARKER_TOP_LEFT
&&
dField
.
hovered_sequence
==
2
)
||
(
mark
&
LINK_MARKER_TOP
&&
dField
.
hovered_sequence
==
1
)
||
(
mark
&
LINK_MARKER_TOP_RIGHT
&&
dField
.
hovered_sequence
==
0
))
{
if
((
mark
&
LINK_MARKER_TOP_LEFT
&&
dField
.
hovered_sequence
==
2
)
||
(
mark
&
LINK_MARKER_TOP
&&
dField
.
hovered_sequence
==
1
)
||
(
mark
&
LINK_MARKER_TOP_RIGHT
&&
dField
.
hovered_sequence
==
0
))
{
int
mark
=
(
dField
.
hovered_sequence
==
2
)
?
LINK_MARKER_BOTTOM_RIGHT
:
(
dField
.
hovered_sequence
==
1
)
?
LINK_MARKER_BOTTOM
:
LINK_MARKER_BOTTOM_LEFT
;
pcard2
=
mainGame
->
dField
.
mzone
[
dField
.
hovered_controler
][
5
];
if
(
!
pcard2
)
{
...
...
@@ -221,7 +223,9 @@ void Game::DrawLinkedZones(ClientCard* pcard) {
CheckMutual
(
pcard2
,
mark
);
driver
->
drawVertexPrimitiveList
(
&
matManager
.
vFieldMzone
[
dField
.
hovered_controler
][
5
],
4
,
matManager
.
iRectangle
,
2
);
}
if
((
mark
&
LINK_MARKER_TOP_LEFT
&&
dField
.
hovered_sequence
==
4
)
||
(
mark
&
LINK_MARKER_TOP
&&
dField
.
hovered_sequence
==
3
)
||
(
mark
&
LINK_MARKER_TOP_RIGHT
&&
dField
.
hovered_sequence
==
2
))
{
if
((
mark
&
LINK_MARKER_TOP_LEFT
&&
dField
.
hovered_sequence
==
4
)
||
(
mark
&
LINK_MARKER_TOP
&&
dField
.
hovered_sequence
==
3
)
||
(
mark
&
LINK_MARKER_TOP_RIGHT
&&
dField
.
hovered_sequence
==
2
))
{
int
mark
=
(
dField
.
hovered_sequence
==
4
)
?
LINK_MARKER_BOTTOM_RIGHT
:
(
dField
.
hovered_sequence
==
3
)
?
LINK_MARKER_BOTTOM
:
LINK_MARKER_BOTTOM_LEFT
;
pcard2
=
mainGame
->
dField
.
mzone
[
dField
.
hovered_controler
][
6
];
if
(
!
pcard2
)
{
...
...
gframe/event_handler.cpp
View file @
d6f034c0
...
...
@@ -14,17 +14,14 @@
namespace
ygo
{
bool
ClientField
::
OnEvent
(
const
irr
::
SEvent
&
event
)
{
if
(
OnCommonEvent
(
event
))
return
false
;
switch
(
event
.
EventType
)
{
case
irr
:
:
EET_GUI_EVENT
:
{
s32
id
=
event
.
GUIEvent
.
Caller
->
getID
();
switch
(
event
.
GUIEvent
.
EventType
)
{
case
irr
:
:
gui
::
EGET_BUTTON_CLICKED
:
{
switch
(
id
)
{
case
BUTTON_CLEAR_LOG
:
{
mainGame
->
lstLog
->
clear
();
mainGame
->
logParam
.
clear
();
break
;
}
case
BUTTON_HAND1
:
case
BUTTON_HAND2
:
case
BUTTON_HAND3
:
{
...
...
@@ -942,13 +939,6 @@ bool ClientField::OnEvent(const irr::SEvent& event) {
}
case
irr
:
:
gui
::
EGET_LISTBOX_CHANGED
:
{
switch
(
id
)
{
case
LISTBOX_LOG
:
{
int
sel
=
mainGame
->
lstLog
->
getSelected
();
if
(
sel
!=
-
1
&&
(
int
)
mainGame
->
logParam
.
size
()
>=
sel
&&
mainGame
->
logParam
[
sel
])
{
mainGame
->
ShowCardInfo
(
mainGame
->
logParam
[
sel
]);
}
break
;
}
case
LISTBOX_ANCARD
:
{
int
sel
=
mainGame
->
lstANCard
->
getSelected
();
if
(
sel
!=
-
1
)
{
...
...
@@ -959,18 +949,6 @@ bool ClientField::OnEvent(const irr::SEvent& event) {
}
break
;
}
case
irr
:
:
gui
::
EGET_LISTBOX_SELECTED_AGAIN
:
{
switch
(
id
)
{
case
LISTBOX_LOG
:
{
int
sel
=
mainGame
->
lstLog
->
getSelected
();
if
(
sel
!=
-
1
&&
(
int
)
mainGame
->
logParam
.
size
()
>=
sel
&&
mainGame
->
logParam
[
sel
])
{
mainGame
->
wInfos
->
setActiveTab
(
0
);
}
break
;
}
}
break
;
}
case
irr
:
:
gui
::
EGET_SCROLL_BAR_CHANGED
:
{
switch
(
id
)
{
case
SCROLL_CARD_SELECT
:
{
...
...
@@ -1080,17 +1058,6 @@ bool ClientField::OnEvent(const irr::SEvent& event) {
}
break
;
}
case
SCROLL_CARDTEXT
:
{
u32
pos
=
mainGame
->
scrCardText
->
getPos
();
mainGame
->
SetStaticText
(
mainGame
->
stText
,
mainGame
->
stText
->
getRelativePosition
().
getWidth
()
-
25
,
mainGame
->
textFont
,
mainGame
->
showingtext
,
pos
);
break
;
}
case
SCROLL_VOLUME
:
{
mainGame
->
gameConf
.
volume
=
(
double
)
mainGame
->
srcVolume
->
getPos
()
/
100
;
mainGame
->
engineSound
->
setSoundVolume
(
mainGame
->
gameConf
.
volume
);
mainGame
->
engineMusic
->
setSoundVolume
(
mainGame
->
gameConf
.
volume
);
break
;
}
break
;
}
}
...
...
@@ -1960,11 +1927,6 @@ bool ClientField::OnEvent(const irr::SEvent& event) {
}
break
;
}
case
irr
:
:
KEY_KEY_R
:
{
if
(
!
event
.
KeyInput
.
PressedDown
&&
!
mainGame
->
HasFocus
(
EGUIET_EDIT_BOX
))
mainGame
->
textFont
->
setTransparency
(
true
);
break
;
}
case
irr
:
:
KEY_F1
:
case
irr
:
:
KEY_F2
:
case
irr
:
:
KEY_F3
:
...
...
@@ -2036,14 +1998,94 @@ bool ClientField::OnEvent(const irr::SEvent& event) {
}
break
;
}
default:
break
;
}
break
;
}
default:
break
;
}
return
false
;
}
bool
ClientField
::
OnCommonEvent
(
const
irr
::
SEvent
&
event
)
{
switch
(
event
.
EventType
)
{
case
irr
:
:
EET_GUI_EVENT
:
{
s32
id
=
event
.
GUIEvent
.
Caller
->
getID
();
switch
(
event
.
GUIEvent
.
EventType
)
{
case
irr
:
:
gui
::
EGET_BUTTON_CLICKED
:
{
switch
(
id
)
{
case
BUTTON_CLEAR_LOG
:
{
mainGame
->
lstLog
->
clear
();
mainGame
->
logParam
.
clear
();
return
true
;
break
;
}
}
break
;
}
case
irr
:
:
gui
::
EGET_LISTBOX_CHANGED
:
{
switch
(
id
)
{
case
LISTBOX_LOG
:
{
int
sel
=
mainGame
->
lstLog
->
getSelected
();
if
(
sel
!=
-
1
&&
(
int
)
mainGame
->
logParam
.
size
()
>=
sel
&&
mainGame
->
logParam
[
sel
])
{
mainGame
->
ShowCardInfo
(
mainGame
->
logParam
[
sel
]);
}
return
true
;
break
;
}
}
break
;
}
case
irr
:
:
gui
::
EGET_LISTBOX_SELECTED_AGAIN
:
{
switch
(
id
)
{
case
LISTBOX_LOG
:
{
int
sel
=
mainGame
->
lstLog
->
getSelected
();
if
(
sel
!=
-
1
&&
(
int
)
mainGame
->
logParam
.
size
()
>=
sel
&&
mainGame
->
logParam
[
sel
])
{
mainGame
->
wInfos
->
setActiveTab
(
0
);
}
return
true
;
break
;
}
}
break
;
}
case
irr
:
:
gui
::
EGET_SCROLL_BAR_CHANGED
:
{
switch
(
id
)
{
case
SCROLL_CARDTEXT
:
{
u32
pos
=
mainGame
->
scrCardText
->
getPos
();
mainGame
->
SetStaticText
(
mainGame
->
stText
,
mainGame
->
stText
->
getRelativePosition
().
getWidth
()
-
25
,
mainGame
->
textFont
,
mainGame
->
showingtext
,
pos
);
return
true
;
break
;
}
case
SCROLL_VOLUME
:
{
mainGame
->
gameConf
.
volume
=
(
double
)
mainGame
->
srcVolume
->
getPos
()
/
100
;
mainGame
->
engineSound
->
setSoundVolume
(
mainGame
->
gameConf
.
volume
);
mainGame
->
engineMusic
->
setSoundVolume
(
mainGame
->
gameConf
.
volume
);
break
;
}
}
break
;
}
default:
break
;
}
break
;
}
case
irr
:
:
EET_KEY_INPUT_EVENT
:
{
switch
(
event
.
KeyInput
.
Key
)
{
case
irr
:
:
KEY_KEY_R
:
{
if
(
!
event
.
KeyInput
.
PressedDown
&&
!
mainGame
->
HasFocus
(
EGUIET_EDIT_BOX
))
mainGame
->
textFont
->
setTransparency
(
true
);
break
;
}
case
irr
:
:
KEY_F9
:
{
if
(
!
event
.
KeyInput
.
PressedDown
&&
!
mainGame
->
HasFocus
(
EGUIET_EDIT_BOX
))
mainGame
->
textFont
->
setTransparency
(
true
);
return
true
;
break
;
}
case
irr
:
:
KEY_ESCAPE
:
{
if
(
!
mainGame
->
HasFocus
(
EGUIET_EDIT_BOX
))
mainGame
->
device
->
minimizeWindow
();
return
true
;
break
;
}
default:
break
;
...
...
gframe/game.cpp
View file @
d6f034c0
...
...
@@ -526,11 +526,8 @@ bool Game::Initialize() {
ebCardName
=
env
->
addEditBox
(
L""
,
rect
<
s32
>
(
260
,
60
+
100
/
6
,
390
,
80
+
100
/
6
),
true
,
wFilter
,
EDITBOX_KEYWORD
);
ebCardName
->
setTextAlignment
(
irr
::
gui
::
EGUIA_CENTER
,
irr
::
gui
::
EGUIA_CENTER
);
btnEffectFilter
=
env
->
addButton
(
rect
<
s32
>
(
345
,
20
+
50
/
6
,
390
,
60
+
75
/
6
),
wFilter
,
BUTTON_EFFECT_FILTER
,
dataManager
.
GetSysString
(
1326
));
btnStartFilter
=
env
->
addButton
(
rect
<
s32
>
(
205
,
80
+
125
/
6
,
390
,
100
+
125
/
6
),
wFilter
,
BUTTON_START_FILTER
,
dataManager
.
GetSysString
(
1327
));
if
(
gameConf
.
separate_clear_button
)
{
btnStartFilter
->
setRelativePosition
(
rect
<
s32
>
(
260
,
80
+
125
/
6
,
390
,
100
+
125
/
6
));
btnStartFilter
=
env
->
addButton
(
rect
<
s32
>
(
260
,
80
+
125
/
6
,
390
,
100
+
125
/
6
),
wFilter
,
BUTTON_START_FILTER
,
dataManager
.
GetSysString
(
1327
));
btnClearFilter
=
env
->
addButton
(
rect
<
s32
>
(
205
,
80
+
125
/
6
,
255
,
100
+
125
/
6
),
wFilter
,
BUTTON_CLEAR_FILTER
,
dataManager
.
GetSysString
(
1304
));
}
wCategories
=
env
->
addWindow
(
rect
<
s32
>
(
450
,
60
,
1000
,
270
),
false
,
dataManager
.
strBuffer
);
wCategories
->
getCloseButton
()
->
setVisible
(
false
);
wCategories
->
setDrawTitlebar
(
false
);
...
...
@@ -1019,7 +1016,6 @@ void Game::LoadConfig() {
gameConf
.
enablemusic
=
true
;
fseek
(
fp
,
0
,
SEEK_END
);
gameConf
.
draw_field_spell
=
1
;
gameConf
.
separate_clear_button
=
1
;
fseek
(
fp
,
0
,
SEEK_END
);
int
fsize
=
ftell
(
fp
);
fseek
(
fp
,
0
,
SEEK_SET
);
...
...
@@ -1072,8 +1068,6 @@ void Game::LoadConfig() {
gameConf
.
chkHideHintButton
=
atoi
(
valbuf
);
}
else
if
(
!
strcmp
(
strbuf
,
"draw_field_spell"
))
{
gameConf
.
draw_field_spell
=
atoi
(
valbuf
);
}
else
if
(
!
strcmp
(
strbuf
,
"separate_clear_button"
))
{
gameConf
.
separate_clear_button
=
atoi
(
valbuf
);
}
else
if
(
!
strcmp
(
strbuf
,
"enable_sound"
))
{
gameConf
.
enablesound
=
atoi
(
valbuf
)
>
0
;
}
else
if
(
!
strcmp
(
strbuf
,
"skin_index"
))
{
...
...
@@ -1133,7 +1127,6 @@ void Game::SaveConfig() {
fprintf
(
fp
,
"hide_setname = %d
\n
"
,
((
gameConf
.
chkHideSetname
)
?
1
:
0
));
fprintf
(
fp
,
"hide_hint_button = %d
\n
"
,
((
chkHideHintButton
->
isChecked
())
?
1
:
0
));
fprintf
(
fp
,
"draw_field_spell = %d
\n
"
,
gameConf
.
draw_field_spell
);
fprintf
(
fp
,
"separate_clear_button = %d
\n
"
,
gameConf
.
separate_clear_button
);
fprintf
(
fp
,
"skin_index = %d
\n
"
,
gameConf
.
skin_index
);
fprintf
(
fp
,
"enable_sound = %d
\n
"
,
((
chkEnableSound
->
isChecked
())
?
1
:
0
));
fprintf
(
fp
,
"enable_music = %d
\n
"
,
((
chkEnableMusic
->
isChecked
())
?
1
:
0
));
...
...
@@ -1552,3 +1545,4 @@ recti Game::ResizeElem(s32 x, s32 y, s32 x2, s32 y2)
}
}
gframe/game.h
View file @
d6f034c0
...
...
@@ -36,7 +36,6 @@ struct Config {
int
chkHideSetname
;
int
chkHideHintButton
;
int
draw_field_spell
;
int
separate_clear_button
;
bool
enablesound
;
double
volume
;
...
...
gframe/menu_handler.cpp
View file @
d6f034c0
...
...
@@ -259,46 +259,7 @@ bool MenuHandler::OnEvent(const irr::SEvent& event) {
mainGame
->
ebDeckname
->
setText
(
L""
);
}
mainGame
->
HideElement
(
mainGame
->
wMainMenu
);
mainGame
->
is_building
=
true
;
mainGame
->
is_siding
=
false
;
mainGame
->
wInfos
->
setVisible
(
true
);
mainGame
->
wCardImg
->
setVisible
(
true
);
mainGame
->
wDeckEdit
->
setVisible
(
true
);
mainGame
->
wFilter
->
setVisible
(
true
);
mainGame
->
wSort
->
setVisible
(
true
);
mainGame
->
btnLeaveGame
->
setVisible
(
true
);
mainGame
->
btnLeaveGame
->
setText
(
dataManager
.
GetSysString
(
1306
));
mainGame
->
btnSideOK
->
setVisible
(
false
);
mainGame
->
deckBuilder
.
filterList
=
deckManager
.
_lfList
[
0
].
content
;
mainGame
->
cbDBLFList
->
setSelected
(
0
);
mainGame
->
cbCardType
->
setSelected
(
0
);
mainGame
->
cbCardType2
->
setSelected
(
0
);
mainGame
->
cbAttribute
->
setSelected
(
0
);
mainGame
->
cbRace
->
setSelected
(
0
);
mainGame
->
ebAttack
->
setText
(
L""
);
mainGame
->
ebDefense
->
setText
(
L""
);
mainGame
->
ebStar
->
setText
(
L""
);
mainGame
->
ebScale
->
setText
(
L""
);
mainGame
->
cbCardType2
->
setEnabled
(
false
);
mainGame
->
cbAttribute
->
setEnabled
(
false
);
mainGame
->
cbRace
->
setEnabled
(
false
);
mainGame
->
ebAttack
->
setEnabled
(
false
);
mainGame
->
ebDefense
->
setEnabled
(
false
);
mainGame
->
ebStar
->
setEnabled
(
false
);
mainGame
->
ebScale
->
setEnabled
(
false
);
mainGame
->
deckBuilder
.
filter_effect
=
0
;
mainGame
->
deckBuilder
.
filter_marks
=
0
;
mainGame
->
deckBuilder
.
result_string
[
0
]
=
L'0'
;
mainGame
->
deckBuilder
.
result_string
[
1
]
=
0
;
mainGame
->
deckBuilder
.
results
.
clear
();
mainGame
->
deckBuilder
.
is_draging
=
false
;
mainGame
->
deckBuilder
.
is_deleting
=
false
;
mainGame
->
deckBuilder
.
is_clearing
=
false
;
mainGame
->
device
->
setEventReceiver
(
&
mainGame
->
deckBuilder
);
for
(
int
i
=
0
;
i
<
32
;
++
i
)
mainGame
->
chkCategory
[
i
]
->
setChecked
(
false
);
for
(
int
i
=
0
;
i
<
8
;
i
++
)
mainGame
->
btnMark
[
i
]
->
setPressed
(
false
);
mainGame
->
deckBuilder
.
Initialize
();
break
;
}
}
...
...
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