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
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
YGOPRO-520DIY
ygopro
Commits
2a0cf61c
Commit
2a0cf61c
authored
Jun 24, 2017
by
VanillaSalt
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
update deck_con
parent
08dd3309
Changes
7
Show whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
306 additions
and
345 deletions
+306
-345
gframe/deck_con.cpp
gframe/deck_con.cpp
+282
-301
gframe/deck_con.h
gframe/deck_con.h
+16
-4
gframe/game.cpp
gframe/game.cpp
+4
-0
gframe/game.h
gframe/game.h
+1
-0
gframe/menu_handler.cpp
gframe/menu_handler.cpp
+1
-40
strings.conf
strings.conf
+1
-0
system.conf
system.conf
+1
-0
No files found.
gframe/deck_con.cpp
View file @
2a0cf61c
...
@@ -58,6 +58,45 @@ static bool check_set_code(const CardDataC& data, int set_code) {
...
@@ -58,6 +58,45 @@ static bool check_set_code(const CardDataC& data, int set_code) {
return
res
;
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
;
prevID
=
0
;
is_modified
=
false
;
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
)
{
bool
DeckBuilder
::
OnEvent
(
const
irr
::
SEvent
&
event
)
{
switch
(
event
.
EventType
)
{
switch
(
event
.
EventType
)
{
case
irr
:
:
EET_GUI_EVENT
:
{
case
irr
:
:
EET_GUI_EVENT
:
{
...
@@ -76,7 +115,7 @@ bool DeckBuilder::OnEvent(const irr::SEvent& event) {
...
@@ -76,7 +115,7 @@ bool DeckBuilder::OnEvent(const irr::SEvent& event) {
mainGame
->
SetStaticText
(
mainGame
->
stQMessage
,
310
,
mainGame
->
textFont
,
(
wchar_t
*
)
dataManager
.
GetSysString
(
1339
));
mainGame
->
SetStaticText
(
mainGame
->
stQMessage
,
310
,
mainGame
->
textFont
,
(
wchar_t
*
)
dataManager
.
GetSysString
(
1339
));
mainGame
->
PopupElement
(
mainGame
->
wQuery
);
mainGame
->
PopupElement
(
mainGame
->
wQuery
);
mainGame
->
gMutex
.
Unlock
();
mainGame
->
gMutex
.
Unlock
();
is_clearing
=
true
;
prevID
=
id
;
break
;
break
;
}
}
case
BUTTON_SORT_DECK
:
{
case
BUTTON_SORT_DECK
:
{
...
@@ -91,9 +130,10 @@ bool DeckBuilder::OnEvent(const irr::SEvent& event) {
...
@@ -91,9 +130,10 @@ bool DeckBuilder::OnEvent(const irr::SEvent& event) {
}
}
case
BUTTON_SAVE_DECK
:
{
case
BUTTON_SAVE_DECK
:
{
int
sel
=
mainGame
->
cbDBDecks
->
getSelected
();
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
->
stACMessage
->
setText
(
dataManager
.
GetSysString
(
1335
));
mainGame
->
PopupElement
(
mainGame
->
wACMessage
,
20
);
mainGame
->
PopupElement
(
mainGame
->
wACMessage
,
20
);
is_modified
=
false
;
}
}
break
;
break
;
}
}
...
@@ -117,6 +157,7 @@ bool DeckBuilder::OnEvent(const irr::SEvent& event) {
...
@@ -117,6 +157,7 @@ bool DeckBuilder::OnEvent(const irr::SEvent& event) {
if
(
deckManager
.
SaveDeck
(
deckManager
.
current_deck
,
dname
))
{
if
(
deckManager
.
SaveDeck
(
deckManager
.
current_deck
,
dname
))
{
mainGame
->
stACMessage
->
setText
(
dataManager
.
GetSysString
(
1335
));
mainGame
->
stACMessage
->
setText
(
dataManager
.
GetSysString
(
1335
));
mainGame
->
PopupElement
(
mainGame
->
wACMessage
,
20
);
mainGame
->
PopupElement
(
mainGame
->
wACMessage
,
20
);
is_modified
=
false
;
}
}
break
;
break
;
}
}
...
@@ -130,28 +171,19 @@ bool DeckBuilder::OnEvent(const irr::SEvent& event) {
...
@@ -130,28 +171,19 @@ bool DeckBuilder::OnEvent(const irr::SEvent& event) {
mainGame
->
SetStaticText
(
mainGame
->
stQMessage
,
310
,
mainGame
->
textFont
,
(
wchar_t
*
)
textBuffer
);
mainGame
->
SetStaticText
(
mainGame
->
stQMessage
,
310
,
mainGame
->
textFont
,
(
wchar_t
*
)
textBuffer
);
mainGame
->
PopupElement
(
mainGame
->
wQuery
);
mainGame
->
PopupElement
(
mainGame
->
wQuery
);
mainGame
->
gMutex
.
Unlock
();
mainGame
->
gMutex
.
Unlock
();
is_deleting
=
true
;
prevID
=
id
;
break
;
break
;
}
}
case
BUTTON_LEAVE_GAME
:
{
case
BUTTON_LEAVE_GAME
:
{
mainGame
->
is_building
=
false
;
if
(
is_modified
&&
mainGame
->
gameConf
.
prompt_to_discard_deck_changes
)
{
mainGame
->
wDeckEdit
->
setVisible
(
false
);
mainGame
->
gMutex
.
Lock
();
mainGame
->
wCategories
->
setVisible
(
false
);
mainGame
->
SetStaticText
(
mainGame
->
stQMessage
,
310
,
mainGame
->
textFont
,
(
wchar_t
*
)
dataManager
.
GetSysString
(
1356
));
mainGame
->
wFilter
->
setVisible
(
false
);
mainGame
->
PopupElement
(
mainGame
->
wQuery
);
mainGame
->
wSort
->
setVisible
(
false
);
mainGame
->
gMutex
.
Unlock
();
mainGame
->
wCardImg
->
setVisible
(
false
);
prevID
=
id
;
mainGame
->
wInfos
->
setVisible
(
false
);
break
;
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
)
Terminate
();
mainGame
->
device
->
closeDevice
();
break
;
break
;
}
}
case
BUTTON_EFFECT_FILTER
:
{
case
BUTTON_EFFECT_FILTER
:
{
...
@@ -205,11 +237,11 @@ bool DeckBuilder::OnEvent(const irr::SEvent& event) {
...
@@ -205,11 +237,11 @@ bool DeckBuilder::OnEvent(const irr::SEvent& event) {
mainGame
->
HideElement
(
mainGame
->
wQuery
);
mainGame
->
HideElement
(
mainGame
->
wQuery
);
if
(
!
mainGame
->
is_building
||
mainGame
->
is_siding
)
if
(
!
mainGame
->
is_building
||
mainGame
->
is_siding
)
break
;
break
;
if
(
is_clearing
)
{
if
(
prevID
==
BUTTON_CLEAR_DECK
)
{
deckManager
.
current_deck
.
main
.
clear
();
deckManager
.
current_deck
.
main
.
clear
();
deckManager
.
current_deck
.
extra
.
clear
();
deckManager
.
current_deck
.
extra
.
clear
();
deckManager
.
current_deck
.
side
.
clear
();
deckManager
.
current_deck
.
side
.
clear
();
}
else
if
(
is_deleting
)
{
}
else
if
(
prevID
==
BUTTON_DELETE_DECK
)
{
int
sel
=
mainGame
->
cbDBDecks
->
getSelected
();
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
);
mainGame
->
cbDBDecks
->
removeItem
(
sel
);
...
@@ -221,16 +253,17 @@ bool DeckBuilder::OnEvent(const irr::SEvent& event) {
...
@@ -221,16 +253,17 @@ bool DeckBuilder::OnEvent(const irr::SEvent& event) {
deckManager
.
LoadDeck
(
mainGame
->
cbDBDecks
->
getItem
(
sel
));
deckManager
.
LoadDeck
(
mainGame
->
cbDBDecks
->
getItem
(
sel
));
mainGame
->
stACMessage
->
setText
(
dataManager
.
GetSysString
(
1338
));
mainGame
->
stACMessage
->
setText
(
dataManager
.
GetSysString
(
1338
));
mainGame
->
PopupElement
(
mainGame
->
wACMessage
,
20
);
mainGame
->
PopupElement
(
mainGame
->
wACMessage
,
20
);
is_modified
=
false
;
}
}
}
else
if
(
prevID
==
BUTTON_LEAVE_GAME
)
{
Terminate
();
}
}
is_clearing
=
false
;
prevID
=
0
;
is_deleting
=
false
;
break
;
break
;
}
}
case
BUTTON_NO
:
{
case
BUTTON_NO
:
{
mainGame
->
HideElement
(
mainGame
->
wQuery
);
mainGame
->
HideElement
(
mainGame
->
wQuery
);
is_deleting
=
false
;
prevID
=
0
;
is_clearing
=
false
;
break
;
break
;
}
}
case
BUTTON_MARKS_FILTER
:
{
case
BUTTON_MARKS_FILTER
:
{
...
@@ -298,6 +331,7 @@ bool DeckBuilder::OnEvent(const irr::SEvent& event) {
...
@@ -298,6 +331,7 @@ bool DeckBuilder::OnEvent(const irr::SEvent& event) {
}
}
case
COMBOBOX_DBDECKS
:
{
case
COMBOBOX_DBDECKS
:
{
deckManager
.
LoadDeck
(
mainGame
->
cbDBDecks
->
getItem
(
mainGame
->
cbDBDecks
->
getSelected
()));
deckManager
.
LoadDeck
(
mainGame
->
cbDBDecks
->
getItem
(
mainGame
->
cbDBDecks
->
getSelected
()));
is_modified
=
false
;
break
;
break
;
}
}
case
COMBOBOX_MAINTYPE
:
{
case
COMBOBOX_MAINTYPE
:
{
...
@@ -417,7 +451,6 @@ bool DeckBuilder::OnEvent(const irr::SEvent& event) {
...
@@ -417,7 +451,6 @@ bool DeckBuilder::OnEvent(const irr::SEvent& event) {
case
irr
:
:
EET_MOUSE_INPUT_EVENT
:
{
case
irr
:
:
EET_MOUSE_INPUT_EVENT
:
{
switch
(
event
.
MouseInput
.
Event
)
{
switch
(
event
.
MouseInput
.
Event
)
{
case
irr
:
:
EMIE_LMOUSE_PRESSED_DOWN
:
{
case
irr
:
:
EMIE_LMOUSE_PRESSED_DOWN
:
{
irr
::
core
::
position2di
mouse_pos
(
event
.
MouseInput
.
X
,
event
.
MouseInput
.
Y
);
irr
::
gui
::
IGUIElement
*
root
=
mainGame
->
env
->
getRootGUIElement
();
irr
::
gui
::
IGUIElement
*
root
=
mainGame
->
env
->
getRootGUIElement
();
if
(
root
->
getElementFromPoint
(
mouse_pos
)
!=
root
)
if
(
root
->
getElementFromPoint
(
mouse_pos
)
!=
root
)
break
;
break
;
...
@@ -431,100 +464,38 @@ bool DeckBuilder::OnEvent(const irr::SEvent& event) {
...
@@ -431,100 +464,38 @@ bool DeckBuilder::OnEvent(const irr::SEvent& event) {
draging_pointer
=
dataManager
.
GetCodePointer
(
hovered_code
);
draging_pointer
=
dataManager
.
GetCodePointer
(
hovered_code
);
if
(
draging_pointer
==
dataManager
.
_datas
.
end
())
if
(
draging_pointer
==
dataManager
.
_datas
.
end
())
break
;
break
;
unsigned
int
limitcode
=
draging_pointer
->
second
.
alias
?
draging_pointer
->
second
.
alias
:
draging_pointer
->
first
;
if
(
hovered_pos
==
4
)
{
if
(
hovered_pos
==
4
)
{
int
limit
=
3
;
if
(
!
check_limit
(
draging_pointer
))
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
)
break
;
break
;
}
}
if
(
hovered_pos
==
1
)
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
)
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
)
else
if
(
hovered_pos
==
3
)
deckManager
.
current_deck
.
side
.
erase
(
deckManager
.
current_deck
.
side
.
begin
()
+
hovered_seq
);
pop_side
(
hovered_seq
);
is_draging
=
true
;
is_draging
=
true
;
break
;
break
;
}
}
case
irr
:
:
EMIE_LMOUSE_LEFT_UP
:
{
case
irr
:
:
EMIE_LMOUSE_LEFT_UP
:
{
if
(
!
is_draging
)
if
(
!
is_draging
)
break
;
break
;
if
(
!
mainGame
->
is_siding
)
{
bool
pushed
=
false
;
if
((
hovered_pos
==
1
&&
(
draging_pointer
->
second
.
type
&
(
TYPE_FUSION
|
TYPE_SYNCHRO
|
TYPE_XYZ
|
TYPE_LINK
)))
if
(
hovered_pos
==
1
)
||
(
hovered_pos
==
2
&&
!
(
draging_pointer
->
second
.
type
&
(
TYPE_FUSION
|
TYPE_SYNCHRO
|
TYPE_XYZ
|
TYPE_LINK
))))
pushed
=
push_main
(
draging_pointer
,
hovered_seq
);
hovered_pos
=
0
;
else
if
(
hovered_pos
==
2
)
if
((
hovered_pos
==
1
||
(
hovered_pos
==
0
&&
click_pos
==
1
))
&&
deckManager
.
current_deck
.
main
.
size
()
<
60
)
{
pushed
=
push_extra
(
draging_pointer
,
hovered_seq
);
if
(
hovered_seq
==
-
1
)
else
if
(
hovered_pos
==
3
)
deckManager
.
current_deck
.
main
.
push_back
(
draging_pointer
);
pushed
=
push_side
(
draging_pointer
,
hovered_seq
);
else
if
(
hovered_seq
<
(
int
)
deckManager
.
current_deck
.
main
.
size
()
&&
hovered_pos
)
else
if
(
hovered_pos
==
4
&&
!
mainGame
->
is_siding
)
deckManager
.
current_deck
.
main
.
insert
(
deckManager
.
current_deck
.
main
.
begin
()
+
hovered_seq
,
draging_pointer
);
pushed
=
true
;
else
deckManager
.
current_deck
.
main
.
push_back
(
draging_pointer
);
if
(
!
pushed
)
{
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
)
{
if
(
click_pos
==
1
)
if
(
click_pos
==
1
)
deckManager
.
current_deck
.
main
.
push_back
(
draging_pointer
);
push_main
(
draging_pointer
);
else
if
(
click_pos
==
2
)
else
if
(
click_pos
==
2
)
deckManager
.
current_deck
.
extra
.
push_back
(
draging_pointer
);
push_extra
(
draging_pointer
);
else
if
(
click_pos
==
3
)
else
if
(
click_pos
==
3
)
deckManager
.
current_deck
.
side
.
push_back
(
draging_pointer
);
push_side
(
draging_pointer
);
}
}
is_draging
=
false
;
is_draging
=
false
;
break
;
break
;
...
@@ -535,99 +506,53 @@ bool DeckBuilder::OnEvent(const irr::SEvent& event) {
...
@@ -535,99 +506,53 @@ bool DeckBuilder::OnEvent(const irr::SEvent& event) {
break
;
break
;
if
(
hovered_pos
==
0
||
hovered_seq
==
-
1
)
if
(
hovered_pos
==
0
||
hovered_seq
==
-
1
)
break
;
break
;
draging_
pointer
=
dataManager
.
GetCodePointer
(
hovered_code
);
auto
pointer
=
dataManager
.
GetCodePointer
(
hovered_code
);
if
(
draging_
pointer
==
dataManager
.
_datas
.
end
())
if
(
pointer
==
dataManager
.
_datas
.
end
())
break
;
break
;
if
(
hovered_pos
==
1
)
{
if
(
hovered_pos
==
1
)
{
if
(
deckManager
.
current_deck
.
side
.
size
()
<
20
)
{
if
(
push_side
(
pointer
))
deckManager
.
current_deck
.
main
.
erase
(
deckManager
.
current_deck
.
main
.
begin
()
+
hovered_seq
);
pop_main
(
hovered_seq
);
deckManager
.
current_deck
.
side
.
push_back
(
draging_pointer
);
}
}
else
if
(
hovered_pos
==
2
)
{
}
else
if
(
hovered_pos
==
2
)
{
if
(
deckManager
.
current_deck
.
side
.
size
()
<
20
)
{
if
(
push_side
(
pointer
))
deckManager
.
current_deck
.
extra
.
erase
(
deckManager
.
current_deck
.
extra
.
begin
()
+
hovered_seq
);
pop_extra
(
hovered_seq
);
deckManager
.
current_deck
.
side
.
push_back
(
draging_pointer
);
}
}
else
{
}
else
{
if
((
draging_pointer
->
second
.
type
&
(
TYPE_FUSION
|
TYPE_SYNCHRO
|
TYPE_XYZ
|
TYPE_LINK
))
&&
deckManager
.
current_deck
.
extra
.
size
()
<
20
)
{
if
(
push_extra
(
pointer
)
||
push_main
(
pointer
))
deckManager
.
current_deck
.
side
.
erase
(
deckManager
.
current_deck
.
side
.
begin
()
+
hovered_seq
);
pop_side
(
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
);
}
}
}
break
;
break
;
}
}
if
(
mainGame
->
wCategories
->
isVisible
()
||
mainGame
->
wQuery
->
isVisible
())
if
(
mainGame
->
wCategories
->
isVisible
()
||
mainGame
->
wQuery
->
isVisible
())
break
;
break
;
if
(
hovered_pos
==
0
||
hovered_seq
==
-
1
)
break
;
if
(
!
is_draging
)
{
if
(
!
is_draging
)
{
draging_pointer
=
dataManager
.
GetCodePointer
(
hovered_code
);
if
(
hovered_pos
==
0
||
hovered_seq
==
-
1
)
if
(
draging_pointer
==
dataManager
.
_datas
.
end
())
break
;
break
;
}
if
(
hovered_pos
==
1
)
{
if
(
hovered_pos
==
1
)
{
if
(
!
is_draging
)
pop_main
(
hovered_seq
);
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
;
}
}
else
if
(
hovered_pos
==
2
)
{
}
else
if
(
hovered_pos
==
2
)
{
if
(
!
is_draging
)
pop_extra
(
hovered_seq
);
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
;
}
}
else
if
(
hovered_pos
==
3
)
{
}
else
if
(
hovered_pos
==
3
)
{
if
(
!
is_draging
)
pop_side
(
hovered_seq
);
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
;
}
}
}
else
{
if
(
is_draging
)
{
if
(
deckManager
.
current_deck
.
side
.
size
()
<
15
)
{
deckManager
.
current_deck
.
side
.
push_back
(
draging_pointer
);
is_draging
=
false
;
}
}
else
{
}
else
{
unsigned
int
limitcode
=
draging_pointer
->
second
.
alias
?
draging_pointer
->
second
.
alias
:
draging_pointer
->
first
;
auto
pointer
=
dataManager
.
GetCodePointer
(
hovered_code
);
int
limit
=
3
;
if
(
pointer
==
dataManager
.
_datas
.
end
())
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
)
break
;
break
;
if
((
draging_pointer
->
second
.
type
&
(
TYPE_FUSION
|
TYPE_SYNCHRO
|
TYPE_XYZ
|
TYPE_LINK
))
&&
deckManager
.
current_deck
.
extra
.
size
()
<
15
)
{
if
(
!
check_limit
(
pointer
))
deckManager
.
current_deck
.
extra
.
push_back
(
draging_pointer
);
break
;
}
else
if
(
!
(
draging_pointer
->
second
.
type
&
(
TYPE_FUSION
|
TYPE_SYNCHRO
|
TYPE_XYZ
|
TYPE_LINK
))
&&
deckManager
.
current_deck
.
main
.
size
()
<
60
)
{
if
(
!
push_extra
(
pointer
)
&&
!
push_main
(
pointer
))
deckManager
.
current_deck
.
main
.
push_back
(
draging_pointer
);
push_side
(
pointer
);
}
else
if
(
deckManager
.
current_deck
.
side
.
size
()
<
15
)
{
deckManager
.
current_deck
.
side
.
push_back
(
draging_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
;
break
;
}
}
...
@@ -640,169 +565,144 @@ bool DeckBuilder::OnEvent(const irr::SEvent& event) {
...
@@ -640,169 +565,144 @@ bool DeckBuilder::OnEvent(const irr::SEvent& event) {
break
;
break
;
if
(
is_draging
)
if
(
is_draging
)
break
;
break
;
draging_pointer
=
dataManager
.
GetCodePointer
(
hovered_code
);
auto
pointer
=
dataManager
.
GetCodePointer
(
hovered_code
);
unsigned
int
limitcode
=
draging_pointer
->
second
.
alias
?
draging_pointer
->
second
.
alias
:
draging_pointer
->
first
;
if
(
!
check_limit
(
pointer
))
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
)
break
;
break
;
if
(
hovered_pos
==
1
)
{
if
(
hovered_pos
==
1
)
{
if
(
deckManager
.
current_deck
.
main
.
size
()
<
60
)
if
(
!
push_main
(
pointer
))
deckManager
.
current_deck
.
main
.
push_back
(
draging_pointer
);
push_side
(
pointer
);
else
if
(
deckManager
.
current_deck
.
side
.
size
()
<
15
)
deckManager
.
current_deck
.
side
.
push_back
(
draging_pointer
);
}
else
if
(
hovered_pos
==
2
)
{
}
else
if
(
hovered_pos
==
2
)
{
if
(
deckManager
.
current_deck
.
extra
.
size
()
<
15
)
if
(
!
push_extra
(
pointer
))
deckManager
.
current_deck
.
extra
.
push_back
(
draging_pointer
);
push_side
(
pointer
);
else
if
(
deckManager
.
current_deck
.
side
.
size
()
<
15
)
deckManager
.
current_deck
.
side
.
push_back
(
draging_pointer
);
}
else
if
(
hovered_pos
==
3
)
{
}
else
if
(
hovered_pos
==
3
)
{
if
(
deckManager
.
current_deck
.
side
.
size
()
<
15
)
if
(
!
push_side
(
pointer
)
&&
!
push_extra
(
pointer
))
deckManager
.
current_deck
.
side
.
push_back
(
draging_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
{
}
else
{
if
((
draging_pointer
->
second
.
type
&
(
TYPE_FUSION
|
TYPE_SYNCHRO
|
TYPE_XYZ
|
TYPE_LINK
))
&&
deckManager
.
current_deck
.
extra
.
size
()
<
15
)
if
(
!
push_extra
(
pointer
)
&&
!
push_main
(
pointer
))
deckManager
.
current_deck
.
extra
.
push_back
(
draging_pointer
);
push_side
(
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
);
}
}
break
;
break
;
}
}
case
irr
:
:
EMIE_MOUSE_MOVED
:
{
case
irr
:
:
EMIE_MOUSE_MOVED
:
{
int
x
=
event
.
MouseInput
.
X
;
mouse_pos
.
set
(
event
.
MouseInput
.
X
,
event
.
MouseInput
.
Y
);
int
y
=
event
.
MouseInput
.
Y
;
GetHoveredCard
();
irr
::
core
::
position2di
mouse_pos
(
x
,
y
);
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
:
{
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
::
GetHoveredCard
()
{
irr
::
gui
::
IGUIElement
*
root
=
mainGame
->
env
->
getRootGUIElement
();
irr
::
gui
::
IGUIElement
*
root
=
mainGame
->
env
->
getRootGUIElement
();
if
(
root
->
getElementFromPoint
(
mouse_pos
)
!=
root
)
if
(
root
->
getElementFromPoint
(
mouse_pos
)
!=
root
)
break
;
return
;
int
x
=
mouse_pos
.
X
;
int
y
=
mouse_pos
.
Y
;
int
pre_code
=
hovered_code
;
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
;
int
lx
=
10
,
px
,
py
=
(
y
-
164
)
/
68
;
hovered_pos
=
1
;
hovered_pos
=
1
;
if
(
deckManager
.
current_deck
.
main
.
size
()
>
40
)
if
(
deckManager
.
current_deck
.
main
.
size
()
>
40
)
lx
=
(
deckManager
.
current_deck
.
main
.
size
()
-
41
)
/
4
+
11
;
lx
=
(
deckManager
.
current_deck
.
main
.
size
()
-
41
)
/
4
+
11
;
if
(
x
>=
750
)
if
(
x
>=
750
)
px
=
lx
-
1
;
px
=
lx
-
1
;
else
px
=
(
x
-
314
)
*
(
lx
-
1
)
/
436
;
else
if
(
py
*
lx
+
px
>=
(
int
)
deckManager
.
current_deck
.
main
.
size
())
{
px
=
(
x
-
314
)
*
(
lx
-
1
)
/
436
;
hovered_seq
=
py
*
lx
+
px
;
if
(
hovered_seq
>=
(
int
)
deckManager
.
current_deck
.
main
.
size
())
{
hovered_seq
=
-
1
;
hovered_seq
=
-
1
;
hovered_code
=
0
;
hovered_code
=
0
;
}
else
{
}
else
{
hovered_seq
=
py
*
lx
+
px
;
hovered_code
=
deckManager
.
current_deck
.
main
[
hovered_seq
]
->
first
;
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
();
int
lx
=
deckManager
.
current_deck
.
extra
.
size
();
hovered_pos
=
2
;
hovered_pos
=
2
;
if
(
lx
<
10
)
if
(
lx
<
10
)
lx
=
10
;
lx
=
10
;
if
(
x
>=
750
)
if
(
x
>=
750
)
hovered_seq
=
lx
-
1
;
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
())
{
if
(
hovered_seq
>=
(
int
)
deckManager
.
current_deck
.
extra
.
size
())
{
hovered_seq
=
-
1
;
hovered_seq
=
-
1
;
hovered_code
=
0
;
hovered_code
=
0
;
}
else
{
}
else
{
hovered_code
=
deckManager
.
current_deck
.
extra
[
hovered_seq
]
->
first
;
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
();
int
lx
=
deckManager
.
current_deck
.
side
.
size
();
hovered_pos
=
3
;
hovered_pos
=
3
;
if
(
lx
<
10
)
if
(
lx
<
10
)
lx
=
10
;
lx
=
10
;
if
(
x
>=
750
)
if
(
x
>=
750
)
hovered_seq
=
lx
-
1
;
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
())
{
if
(
hovered_seq
>=
(
int
)
deckManager
.
current_deck
.
side
.
size
())
{
hovered_seq
=
-
1
;
hovered_seq
=
-
1
;
hovered_code
=
0
;
hovered_code
=
0
;
}
else
{
}
else
{
hovered_code
=
deckManager
.
current_deck
.
side
[
hovered_seq
]
->
first
;
hovered_code
=
deckManager
.
current_deck
.
side
[
hovered_seq
]
->
first
;
}
}
}
}
else
if
(
x
>=
810
&&
x
<=
995
&&
y
>=
165
&&
y
<=
626
)
{
}
else
if
(
x
>=
810
&&
x
<=
995
&&
y
>=
165
&&
y
<=
626
)
{
hovered_pos
=
4
;
hovered_pos
=
4
;
hovered_seq
=
(
y
-
165
)
/
66
;
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_seq
=
-
1
;
hovered_code
=
0
;
hovered_code
=
0
;
}
else
{
}
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
)
{
if
(
is_draging
)
{
dragx
=
x
;
dragx
=
x
;
dragy
=
y
;
dragy
=
y
;
}
}
if
(
!
is_draging
&&
pre_code
!=
hovered_code
)
{
if
(
!
is_draging
&&
pre_code
!=
hovered_code
)
{
if
(
hovered_code
)
{
if
(
hovered_code
)
mainGame
->
ShowCardInfo
(
hovered_code
);
mainGame
->
ShowCardInfo
(
hovered_code
);
}
if
(
pre_code
)
if
(
pre_code
)
imageManager
.
RemoveTexture
(
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
::
StartFilter
()
{
void
DeckBuilder
::
StartFilter
()
{
filter_type
=
mainGame
->
cbCardType
->
getSelected
();
filter_type
=
mainGame
->
cbCardType
->
getSelected
();
...
@@ -1030,4 +930,85 @@ bool DeckBuilder::CardNameContains(const wchar_t *haystack, const wchar_t *needl
...
@@ -1030,4 +930,85 @@ bool DeckBuilder::CardNameContains(const wchar_t *haystack, const wchar_t *needl
}
}
return
false
;
return
false
;
}
}
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
);
is_modified
=
true
;
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
);
is_modified
=
true
;
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
);
is_modified
=
true
;
GetHoveredCard
();
return
true
;
}
void
DeckBuilder
::
pop_main
(
int
seq
)
{
auto
&
container
=
deckManager
.
current_deck
.
main
;
container
.
erase
(
container
.
begin
()
+
seq
);
is_modified
=
true
;
GetHoveredCard
();
}
void
DeckBuilder
::
pop_extra
(
int
seq
)
{
auto
&
container
=
deckManager
.
current_deck
.
extra
;
container
.
erase
(
container
.
begin
()
+
seq
);
is_modified
=
true
;
GetHoveredCard
();
}
void
DeckBuilder
::
pop_side
(
int
seq
)
{
auto
&
container
=
deckManager
.
current_deck
.
side
;
container
.
erase
(
container
.
begin
()
+
seq
);
is_modified
=
true
;
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 @
2a0cf61c
...
@@ -11,6 +11,9 @@ namespace ygo {
...
@@ -11,6 +11,9 @@ namespace ygo {
class
DeckBuilder
:
public
irr
::
IEventReceiver
{
class
DeckBuilder
:
public
irr
::
IEventReceiver
{
public:
public:
virtual
bool
OnEvent
(
const
irr
::
SEvent
&
event
);
virtual
bool
OnEvent
(
const
irr
::
SEvent
&
event
);
void
Initialize
();
void
Terminate
();
void
GetHoveredCard
();
void
FilterCards
();
void
FilterCards
();
void
StartFilter
();
void
StartFilter
();
void
ClearFilter
();
void
ClearFilter
();
...
@@ -19,6 +22,14 @@ public:
...
@@ -19,6 +22,14 @@ public:
bool
CardNameContains
(
const
wchar_t
*
haystack
,
const
wchar_t
*
needle
);
bool
CardNameContains
(
const
wchar_t
*
haystack
,
const
wchar_t
*
needle
);
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
;
long
long
filter_effect
;
unsigned
int
filter_type
;
unsigned
int
filter_type
;
unsigned
int
filter_type2
;
unsigned
int
filter_type2
;
...
@@ -34,6 +45,7 @@ public:
...
@@ -34,6 +45,7 @@ public:
unsigned
int
filter_scl
;
unsigned
int
filter_scl
;
unsigned
int
filter_marks
;
unsigned
int
filter_marks
;
int
filter_lm
;
int
filter_lm
;
position2di
mouse_pos
;
int
hovered_code
;
int
hovered_code
;
int
hovered_pos
;
int
hovered_pos
;
int
hovered_seq
;
int
hovered_seq
;
...
@@ -45,8 +57,8 @@ public:
...
@@ -45,8 +57,8 @@ public:
size_t
pre_extrac
;
size_t
pre_extrac
;
size_t
pre_sidec
;
size_t
pre_sidec
;
code_pointer
draging_pointer
;
code_pointer
draging_pointer
;
bool
is_deleting
;
s32
prevID
;
bool
is_
clearing
;
bool
is_
modified
;
std
::
unordered_map
<
int
,
int
>*
filterList
;
std
::
unordered_map
<
int
,
int
>*
filterList
;
std
::
vector
<
code_pointer
>
results
;
std
::
vector
<
code_pointer
>
results
;
...
...
gframe/game.cpp
View file @
2a0cf61c
...
@@ -911,6 +911,7 @@ void Game::LoadConfig() {
...
@@ -911,6 +911,7 @@ void Game::LoadConfig() {
gameConf
.
draw_field_spell
=
1
;
gameConf
.
draw_field_spell
=
1
;
gameConf
.
separate_clear_button
=
1
;
gameConf
.
separate_clear_button
=
1
;
gameConf
.
auto_search_limit
=
-
1
;
gameConf
.
auto_search_limit
=
-
1
;
gameConf
.
prompt_to_discard_deck_changes
=
1
;
fseek
(
fp
,
0
,
SEEK_END
);
fseek
(
fp
,
0
,
SEEK_END
);
int
fsize
=
ftell
(
fp
);
int
fsize
=
ftell
(
fp
);
fseek
(
fp
,
0
,
SEEK_SET
);
fseek
(
fp
,
0
,
SEEK_SET
);
...
@@ -969,6 +970,8 @@ void Game::LoadConfig() {
...
@@ -969,6 +970,8 @@ void Game::LoadConfig() {
gameConf
.
separate_clear_button
=
atoi
(
valbuf
);
gameConf
.
separate_clear_button
=
atoi
(
valbuf
);
}
else
if
(
!
strcmp
(
strbuf
,
"auto_search_limit"
))
{
}
else
if
(
!
strcmp
(
strbuf
,
"auto_search_limit"
))
{
gameConf
.
auto_search_limit
=
atoi
(
valbuf
);
gameConf
.
auto_search_limit
=
atoi
(
valbuf
);
}
else
if
(
!
strcmp
(
strbuf
,
"prompt_to_discard_deck_changes"
))
{
gameConf
.
prompt_to_discard_deck_changes
=
atoi
(
valbuf
);
}
else
{
}
else
{
// options allowing multiple words
// options allowing multiple words
sscanf
(
linebuf
,
"%s = %240[^
\n
]"
,
strbuf
,
valbuf
);
sscanf
(
linebuf
,
"%s = %240[^
\n
]"
,
strbuf
,
valbuf
);
...
@@ -1025,6 +1028,7 @@ void Game::SaveConfig() {
...
@@ -1025,6 +1028,7 @@ void Game::SaveConfig() {
fprintf
(
fp
,
"separate_clear_button = %d
\n
"
,
gameConf
.
separate_clear_button
);
fprintf
(
fp
,
"separate_clear_button = %d
\n
"
,
gameConf
.
separate_clear_button
);
fprintf
(
fp
,
"#auto_search_limit >= 0: Start search automatically when the user enters N chars
\n
"
);
fprintf
(
fp
,
"#auto_search_limit >= 0: Start search automatically when the user enters N chars
\n
"
);
fprintf
(
fp
,
"auto_search_limit = %d
\n
"
,
gameConf
.
auto_search_limit
);
fprintf
(
fp
,
"auto_search_limit = %d
\n
"
,
gameConf
.
auto_search_limit
);
fprintf
(
fp
,
"prompt_to_discard_deck_changes = %d
\n
"
,
gameConf
.
prompt_to_discard_deck_changes
);
fclose
(
fp
);
fclose
(
fp
);
}
}
void
Game
::
ShowCardInfo
(
int
code
)
{
void
Game
::
ShowCardInfo
(
int
code
)
{
...
...
gframe/game.h
View file @
2a0cf61c
...
@@ -38,6 +38,7 @@ struct Config {
...
@@ -38,6 +38,7 @@ struct Config {
int
draw_field_spell
;
int
draw_field_spell
;
int
separate_clear_button
;
int
separate_clear_button
;
int
auto_search_limit
;
int
auto_search_limit
;
int
prompt_to_discard_deck_changes
;
};
};
struct
DuelInfo
{
struct
DuelInfo
{
...
...
gframe/menu_handler.cpp
View file @
2a0cf61c
...
@@ -244,46 +244,7 @@ bool MenuHandler::OnEvent(const irr::SEvent& event) {
...
@@ -244,46 +244,7 @@ bool MenuHandler::OnEvent(const irr::SEvent& event) {
mainGame
->
ebDeckname
->
setText
(
L""
);
mainGame
->
ebDeckname
->
setText
(
L""
);
}
}
mainGame
->
HideElement
(
mainGame
->
wMainMenu
);
mainGame
->
HideElement
(
mainGame
->
wMainMenu
);
mainGame
->
is_building
=
true
;
mainGame
->
deckBuilder
.
Initialize
();
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
);
break
;
break
;
}
}
}
}
...
...
strings.conf
View file @
2a0cf61c
...
@@ -356,6 +356,7 @@
...
@@ -356,6 +356,7 @@
!
system
1353
播放起始于回合:
!
system
1353
播放起始于回合:
!
system
1354
不显示卡片系列
!
system
1354
不显示卡片系列
!
system
1355
不显示提示按钮
!
system
1355
不显示提示按钮
!
system
1356
是否要放弃改变?
!
system
1360
上一步
!
system
1360
上一步
!
system
1370
星数↑
!
system
1370
星数↑
!
system
1371
攻击↑
!
system
1371
攻击↑
...
...
system.conf
View file @
2a0cf61c
...
@@ -26,3 +26,4 @@ draw_field_spell = 1
...
@@ -26,3 +26,4 @@ draw_field_spell = 1
separate_clear_button
=
1
separate_clear_button
=
1
#auto_search_limit >= 0: Start search automatically when the user enters N chars.
#auto_search_limit >= 0: Start search automatically when the user enters N chars.
auto_search_limit
= -
1
auto_search_limit
= -
1
prompt_to_discard_deck_changes
=
1
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