Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Y
ygopro
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Locked Files
Issues
0
Issues
0
List
Boards
Labels
Service Desk
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Security & Compliance
Security & Compliance
Dependency List
License Compliance
Packages
Packages
Container Registry
Analytics
Analytics
CI / CD
Code Review
Insights
Issues
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
MyCard
ygopro
Commits
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
Hide 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) {
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
)
{
switch
(
event
.
EventType
)
{
case
irr
:
:
EET_GUI_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
->
PopupElement
(
mainGame
->
wQuery
);
mainGame
->
gMutex
.
Unlock
();
is_clearing
=
true
;
prevID
=
id
;
break
;
}
case
BUTTON_SORT_DECK
:
{
...
...
@@ -91,9 +130,10 @@ 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
);
is_modified
=
false
;
}
break
;
}
...
...
@@ -117,6 +157,7 @@ bool DeckBuilder::OnEvent(const irr::SEvent& event) {
if
(
deckManager
.
SaveDeck
(
deckManager
.
current_deck
,
dname
))
{
mainGame
->
stACMessage
->
setText
(
dataManager
.
GetSysString
(
1335
));
mainGame
->
PopupElement
(
mainGame
->
wACMessage
,
20
);
is_modified
=
false
;
}
break
;
}
...
...
@@ -130,28 +171,19 @@ 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
;
prevID
=
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
(
is_modified
&&
mainGame
->
gameConf
.
prompt_to_discard_deck_changes
)
{
mainGame
->
gMutex
.
Lock
();
mainGame
->
SetStaticText
(
mainGame
->
stQMessage
,
310
,
mainGame
->
textFont
,
(
wchar_t
*
)
dataManager
.
GetSysString
(
1356
));
mainGame
->
PopupElement
(
mainGame
->
wQuery
);
mainGame
->
gMutex
.
Unlock
();
prevID
=
id
;
break
;
}
if
(
exit_on_return
)
mainGame
->
device
->
closeDevice
();
Terminate
();
break
;
}
case
BUTTON_EFFECT_FILTER
:
{
...
...
@@ -205,11 +237,11 @@ bool DeckBuilder::OnEvent(const irr::SEvent& event) {
mainGame
->
HideElement
(
mainGame
->
wQuery
);
if
(
!
mainGame
->
is_building
||
mainGame
->
is_siding
)
break
;
if
(
is_clearing
)
{
if
(
prevID
==
BUTTON_CLEAR_DECK
)
{
deckManager
.
current_deck
.
main
.
clear
();
deckManager
.
current_deck
.
extra
.
clear
();
deckManager
.
current_deck
.
side
.
clear
();
}
else
if
(
is_deleting
)
{
}
else
if
(
prevID
==
BUTTON_DELETE_DECK
)
{
int
sel
=
mainGame
->
cbDBDecks
->
getSelected
();
if
(
deckManager
.
DeleteDeck
(
deckManager
.
current_deck
,
mainGame
->
cbDBDecks
->
getItem
(
sel
)))
{
mainGame
->
cbDBDecks
->
removeItem
(
sel
);
...
...
@@ -221,16 +253,17 @@ bool DeckBuilder::OnEvent(const irr::SEvent& event) {
deckManager
.
LoadDeck
(
mainGame
->
cbDBDecks
->
getItem
(
sel
));
mainGame
->
stACMessage
->
setText
(
dataManager
.
GetSysString
(
1338
));
mainGame
->
PopupElement
(
mainGame
->
wACMessage
,
20
);
is_modified
=
false
;
}
}
else
if
(
prevID
==
BUTTON_LEAVE_GAME
)
{
Terminate
();
}
is_clearing
=
false
;
is_deleting
=
false
;
prevID
=
0
;
break
;
}
case
BUTTON_NO
:
{
mainGame
->
HideElement
(
mainGame
->
wQuery
);
is_deleting
=
false
;
is_clearing
=
false
;
prevID
=
0
;
break
;
}
case
BUTTON_MARKS_FILTER
:
{
...
...
@@ -298,6 +331,7 @@ bool DeckBuilder::OnEvent(const irr::SEvent& event) {
}
case
COMBOBOX_DBDECKS
:
{
deckManager
.
LoadDeck
(
mainGame
->
cbDBDecks
->
getItem
(
mainGame
->
cbDBDecks
->
getSelected
()));
is_modified
=
false
;
break
;
}
case
COMBOBOX_MAINTYPE
:
{
...
...
@@ -417,7 +451,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
;
...
...
@@ -431,100 +464,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
;
...
...
@@ -535,99 +506,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
;
}
}
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
;
}
}
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
;
}
if
(
hovered_pos
==
1
)
{
pop_main
(
hovered_seq
);
}
else
if
(
hovered_pos
==
2
)
{
pop_extra
(
hovered_seq
);
}
else
if
(
hovered_pos
==
3
)
{
pop_side
(
hovered_seq
);
}
else
{
auto
pointer
=
dataManager
.
GetCodePointer
(
hovered_code
);
if
(
pointer
==
dataManager
.
_datas
.
end
())
break
;
if
(
!
check_limit
(
pointer
))
break
;
if
(
!
push_extra
(
pointer
)
&&
!
push_main
(
pointer
))
push_side
(
pointer
);
}
}
else
{
if
(
is_draging
)
{
if
(
deckManager
.
current_deck
.
side
.
size
()
<
15
)
{
deckManager
.
current_deck
.
side
.
push_back
(
draging_pointer
);
is_draging
=
false
;
}
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
{
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
)
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
);
}
push_side
(
draging_pointer
);
}
is_draging
=
false
;
}
break
;
}
...
...
@@ -640,129 +565,27 @@ 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
:
{
int
x
=
event
.
MouseInput
.
X
;
int
y
=
event
.
MouseInput
.
Y
;
irr
::
core
::
position2di
mouse_pos
(
x
,
y
);
irr
::
gui
::
IGUIElement
*
root
=
mainGame
->
env
->
getRootGUIElement
();
if
(
root
->
getElementFromPoint
(
mouse_pos
)
!=
root
)
break
;
int
pre_code
=
hovered_code
;
if
(
x
>=
314
&&
x
<=
794
&&
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
())
{
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
)
{
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
;
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
)
{
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
;
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
())
{
hovered_seq
=
-
1
;
hovered_code
=
0
;
}
else
{
hovered_code
=
results
[
mainGame
->
scrFilter
->
getPos
()
+
hovered_seq
]
->
first
;
}
}
else
{
hovered_pos
=
0
;
hovered_code
=
0
;
}
if
(
is_draging
)
{
dragx
=
x
;
dragy
=
y
;
}
if
(
!
is_draging
&&
pre_code
!=
hovered_code
)
{
if
(
hovered_code
)
{
mainGame
->
ShowCardInfo
(
hovered_code
);
}
if
(
pre_code
)
imageManager
.
RemoveTexture
(
pre_code
);
}
mouse_pos
.
set
(
event
.
MouseInput
.
X
,
event
.
MouseInput
.
Y
);
GetHoveredCard
();
break
;
}
case
irr
:
:
EMIE_MOUSE_WHEEL
:
{
...
...
@@ -775,9 +598,7 @@ bool DeckBuilder::OnEvent(const irr::SEvent& event) {
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
);
GetHoveredCard
();
break
;
}
default:
break
;
...
...
@@ -804,6 +625,85 @@ bool DeckBuilder::OnEvent(const irr::SEvent& event) {
}
return
false
;
}
void
DeckBuilder
::
GetHoveredCard
()
{
irr
::
gui
::
IGUIElement
*
root
=
mainGame
->
env
->
getRootGUIElement
();
if
(
root
->
getElementFromPoint
(
mouse_pos
)
!=
root
)
return
;
int
x
=
mouse_pos
.
X
;
int
y
=
mouse_pos
.
Y
;
int
pre_code
=
hovered_code
;
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
;
hovered_seq
=
py
*
lx
+
px
;
if
(
hovered_seq
>=
(
int
)
deckManager
.
current_deck
.
main
.
size
())
{
hovered_seq
=
-
1
;
hovered_code
=
0
;
}
else
{
hovered_code
=
deckManager
.
current_deck
.
main
[
hovered_seq
]
->
first
;
}
}
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
;
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
(
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
;
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
;
int
pos
=
mainGame
->
scrFilter
->
getPos
()
+
hovered_seq
;
if
(
pos
>=
(
int
)
results
.
size
())
{
hovered_seq
=
-
1
;
hovered_code
=
0
;
}
else
{
hovered_code
=
results
[
pos
]
->
first
;
}
}
if
(
is_draging
)
{
dragx
=
x
;
dragy
=
y
;
}
if
(
!
is_draging
&&
pre_code
!=
hovered_code
)
{
if
(
hovered_code
)
mainGame
->
ShowCardInfo
(
hovered_code
);
if
(
pre_code
)
imageManager
.
RemoveTexture
(
pre_code
);
}
}
void
DeckBuilder
::
StartFilter
()
{
filter_type
=
mainGame
->
cbCardType
->
getSelected
();
filter_type2
=
mainGame
->
cbCardType2
->
getItemData
(
mainGame
->
cbCardType2
->
getSelected
());
...
...
@@ -1030,4 +930,85 @@ bool DeckBuilder::CardNameContains(const wchar_t *haystack, const wchar_t *needl
}
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 {
class
DeckBuilder
:
public
irr
::
IEventReceiver
{
public:
virtual
bool
OnEvent
(
const
irr
::
SEvent
&
event
);
void
Initialize
();
void
Terminate
();
void
GetHoveredCard
();
void
FilterCards
();
void
StartFilter
();
void
ClearFilter
();
...
...
@@ -18,7 +21,15 @@ public:
void
SortList
();
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
;
unsigned
int
filter_type
;
unsigned
int
filter_type2
;
...
...
@@ -34,6 +45,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
;
...
...
@@ -45,9 +57,9 @@ public:
size_t
pre_extrac
;
size_t
pre_sidec
;
code_pointer
draging_pointer
;
bool
is_deleting
;
bool
is_
clearing
;
s32
prevID
;
bool
is_
modified
;
std
::
unordered_map
<
int
,
int
>*
filterList
;
std
::
vector
<
code_pointer
>
results
;
wchar_t
result_string
[
8
];
...
...
gframe/game.cpp
View file @
2a0cf61c
...
...
@@ -911,6 +911,7 @@ void Game::LoadConfig() {
gameConf
.
draw_field_spell
=
1
;
gameConf
.
separate_clear_button
=
1
;
gameConf
.
auto_search_limit
=
-
1
;
gameConf
.
prompt_to_discard_deck_changes
=
1
;
fseek
(
fp
,
0
,
SEEK_END
);
int
fsize
=
ftell
(
fp
);
fseek
(
fp
,
0
,
SEEK_SET
);
...
...
@@ -969,6 +970,8 @@ void Game::LoadConfig() {
gameConf
.
separate_clear_button
=
atoi
(
valbuf
);
}
else
if
(
!
strcmp
(
strbuf
,
"auto_search_limit"
))
{
gameConf
.
auto_search_limit
=
atoi
(
valbuf
);
}
else
if
(
!
strcmp
(
strbuf
,
"prompt_to_discard_deck_changes"
))
{
gameConf
.
prompt_to_discard_deck_changes
=
atoi
(
valbuf
);
}
else
{
// options allowing multiple words
sscanf
(
linebuf
,
"%s = %240[^
\n
]"
,
strbuf
,
valbuf
);
...
...
@@ -1025,6 +1028,7 @@ void Game::SaveConfig() {
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 = %d
\n
"
,
gameConf
.
auto_search_limit
);
fprintf
(
fp
,
"prompt_to_discard_deck_changes = %d
\n
"
,
gameConf
.
prompt_to_discard_deck_changes
);
fclose
(
fp
);
}
void
Game
::
ShowCardInfo
(
int
code
)
{
...
...
gframe/game.h
View file @
2a0cf61c
...
...
@@ -38,6 +38,7 @@ struct Config {
int
draw_field_spell
;
int
separate_clear_button
;
int
auto_search_limit
;
int
prompt_to_discard_deck_changes
;
};
struct
DuelInfo
{
...
...
gframe/menu_handler.cpp
View file @
2a0cf61c
...
...
@@ -244,46 +244,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
;
}
}
...
...
strings.conf
View file @
2a0cf61c
...
...
@@ -356,6 +356,7 @@
!
system
1353
播放起始于回合:
!
system
1354
不显示卡片系列
!
system
1355
不显示提示按钮
!
system
1356
是否要放弃改变?
!
system
1360
上一步
!
system
1370
星数↑
!
system
1371
攻击↑
...
...
system.conf
View file @
2a0cf61c
...
...
@@ -26,3 +26,4 @@ draw_field_spell = 1
separate_clear_button
=
1
#auto_search_limit >= 0: Start search automatically when the user enters N chars.
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