Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Y
ygopro-2pick
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-2pick
Commits
7f1d2e63
Commit
7f1d2e63
authored
Jul 15, 2017
by
mercury233
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'master' of
https://github.com/Fluorohydride/ygopro
into server-link
parents
5099b8ee
a7df04e9
Changes
12
Hide whitespace changes
Inline
Side-by-side
Showing
12 changed files
with
567 additions
and
439 deletions
+567
-439
gframe/client_field.h
gframe/client_field.h
+1
-0
gframe/deck_con.cpp
gframe/deck_con.cpp
+330
-328
gframe/deck_con.h
gframe/deck_con.h
+19
-4
gframe/drawing.cpp
gframe/drawing.cpp
+68
-12
gframe/duelclient.cpp
gframe/duelclient.cpp
+5
-0
gframe/event_handler.cpp
gframe/event_handler.cpp
+88
-35
gframe/game.cpp
gframe/game.cpp
+40
-20
gframe/game.h
gframe/game.h
+6
-0
gframe/image_manager.cpp
gframe/image_manager.cpp
+4
-0
gframe/menu_handler.cpp
gframe/menu_handler.cpp
+1
-40
strings.conf
strings.conf
+4
-0
system.conf
system.conf
+1
-0
No files found.
gframe/client_field.h
View file @
7f1d2e63
...
@@ -131,6 +131,7 @@ public:
...
@@ -131,6 +131,7 @@ public:
int list_command;
int list_command;
virtual bool OnEvent(const irr::SEvent& event);
virtual bool OnEvent(const irr::SEvent& event);
virtual bool OnCommonEvent(const irr::SEvent& event);
void GetHoverField(int x, int y);
void GetHoverField(int x, int y);
void ShowMenu(int flag, int x, int y);
void ShowMenu(int flag, int x, int y);
void UpdateChainButtons();
void UpdateChainButtons();
...
...
gframe/deck_con.cpp
View file @
7f1d2e63
...
@@ -58,7 +58,55 @@ static bool check_set_code(const CardDataC& data, int set_code) {
...
@@ -58,7 +58,55 @@ 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
();
mouse_pos
.
set
(
0
,
0
);
hovered_code
=
0
;
hovered_pos
=
0
;
hovered_seq
=
-
1
;
is_lastcard
=
0
;
is_draging
=
false
;
is_starting_dragging
=
false
;
prev_deck
=
mainGame
->
cbDBDecks
->
getSelected
();
prev_operation
=
0
;
is_modified
=
false
;
mainGame
->
device
->
setEventReceiver
(
this
);
}
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
)
{
if
(
mainGame
->
dField
.
OnCommonEvent
(
event
))
return
false
;
switch
(
event
.
EventType
)
{
switch
(
event
.
EventType
)
{
case
irr
:
:
EET_GUI_EVENT
:
{
case
irr
:
:
EET_GUI_EVENT
:
{
s32
id
=
event
.
GUIEvent
.
Caller
->
getID
();
s32
id
=
event
.
GUIEvent
.
Caller
->
getID
();
...
@@ -76,7 +124,7 @@ bool DeckBuilder::OnEvent(const irr::SEvent& event) {
...
@@ -76,7 +124,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
;
prev_operation
=
id
;
break
;
break
;
}
}
case
BUTTON_SORT_DECK
:
{
case
BUTTON_SORT_DECK
:
{
...
@@ -91,9 +139,10 @@ bool DeckBuilder::OnEvent(const irr::SEvent& event) {
...
@@ -91,9 +139,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 +166,7 @@ bool DeckBuilder::OnEvent(const irr::SEvent& event) {
...
@@ -117,6 +166,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 +180,19 @@ bool DeckBuilder::OnEvent(const irr::SEvent& event) {
...
@@ -130,28 +180,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
;
prev_operation
=
id
;
break
;
break
;
}
}
case
BUTTON_LEAVE_GAME
:
{
case
BUTTON_LEAVE_GAME
:
{
mainGame
->
is_building
=
false
;
if
(
is_modified
&&
!
mainGame
->
chkIgnoreDeckChanges
->
isChecked
())
{
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
);
prev_operation
=
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,32 +246,42 @@ bool DeckBuilder::OnEvent(const irr::SEvent& event) {
...
@@ -205,32 +246,42 @@ 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
(
prev_operation
==
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
(
prev_operation
==
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
);
int
count
=
mainGame
->
cbDBDecks
->
getItemCount
();
int
count
=
mainGame
->
cbDBDecks
->
getItemCount
();
if
(
sel
>=
count
)
if
(
sel
>=
count
)
sel
=
count
-
1
;
sel
=
count
-
1
;
mainGame
->
cbDBDecks
->
setSelected
(
sel
);
mainGame
->
cbDBDecks
->
setSelected
(
sel
);
if
(
sel
!=
-
1
)
if
(
sel
!=
-
1
)
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
);
prev_deck
=
sel
;
is_modified
=
false
;
}
}
}
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_modified
=
false
;
}
}
is_clearing
=
false
;
prev_operation
=
0
;
is_deleting
=
false
;
break
;
break
;
}
}
case
BUTTON_NO
:
{
case
BUTTON_NO
:
{
mainGame
->
HideElement
(
mainGame
->
wQuery
);
mainGame
->
HideElement
(
mainGame
->
wQuery
);
is_deleting
=
false
;
if
(
prev_operation
==
COMBOBOX_DBDECKS
)
{
is_clearing
=
false
;
mainGame
->
cbDBDecks
->
setSelected
(
prev_deck
);
}
prev_operation
=
0
;
break
;
break
;
}
}
case
BUTTON_MARKS_FILTER
:
{
case
BUTTON_MARKS_FILTER
:
{
...
@@ -262,14 +313,7 @@ bool DeckBuilder::OnEvent(const irr::SEvent& event) {
...
@@ -262,14 +313,7 @@ bool DeckBuilder::OnEvent(const irr::SEvent& event) {
break
;
break
;
}
}
case
irr
:
:
gui
::
EGET_SCROLL_BAR_CHANGED
:
{
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
;
break
;
}
}
}
case
irr
:
:
gui
::
EGET_EDITBOX_ENTER
:
{
case
irr
:
:
gui
::
EGET_EDITBOX_ENTER
:
{
switch
(
id
)
{
switch
(
id
)
{
...
@@ -297,7 +341,18 @@ bool DeckBuilder::OnEvent(const irr::SEvent& event) {
...
@@ -297,7 +341,18 @@ bool DeckBuilder::OnEvent(const irr::SEvent& event) {
break
;
break
;
}
}
case
COMBOBOX_DBDECKS
:
{
case
COMBOBOX_DBDECKS
:
{
deckManager
.
LoadDeck
(
mainGame
->
cbDBDecks
->
getItem
(
mainGame
->
cbDBDecks
->
getSelected
()));
if
(
is_modified
&&
!
mainGame
->
chkIgnoreDeckChanges
->
isChecked
())
{
mainGame
->
gMutex
.
Lock
();
mainGame
->
SetStaticText
(
mainGame
->
stQMessage
,
310
,
mainGame
->
textFont
,
(
wchar_t
*
)
dataManager
.
GetSysString
(
1356
));
mainGame
->
PopupElement
(
mainGame
->
wQuery
);
mainGame
->
gMutex
.
Unlock
();
prev_operation
=
id
;
break
;
}
int
sel
=
mainGame
->
cbDBDecks
->
getSelected
();
deckManager
.
LoadDeck
(
mainGame
->
cbDBDecks
->
getItem
(
sel
));
prev_deck
=
sel
;
is_modified
=
false
;
break
;
break
;
}
}
case
COMBOBOX_MAINTYPE
:
{
case
COMBOBOX_MAINTYPE
:
{
...
@@ -417,7 +472,6 @@ bool DeckBuilder::OnEvent(const irr::SEvent& event) {
...
@@ -417,7 +472,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 +485,33 @@ bool DeckBuilder::OnEvent(const irr::SEvent& event) {
...
@@ -431,100 +485,33 @@ 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
)
is_starting_dragging
=
true
;
deckManager
.
current_deck
.
main
.
erase
(
deckManager
.
current_deck
.
main
.
begin
()
+
hovered_seq
);
else
if
(
hovered_pos
==
2
)
deckManager
.
current_deck
.
extra
.
erase
(
deckManager
.
current_deck
.
extra
.
begin
()
+
hovered_seq
);
else
if
(
hovered_pos
==
3
)
deckManager
.
current_deck
.
side
.
erase
(
deckManager
.
current_deck
.
side
.
begin
()
+
hovered_seq
);
is_draging
=
true
;
break
;
break
;
}
}
case
irr
:
:
EMIE_LMOUSE_LEFT_UP
:
{
case
irr
:
:
EMIE_LMOUSE_LEFT_UP
:
{
is_starting_dragging
=
false
;
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
+
is_lastcard
);
if
(
hovered_seq
==
-
1
)
else
if
(
hovered_pos
==
3
)
deckManager
.
current_deck
.
main
.
push_back
(
draging_pointer
);
pushed
=
push_side
(
draging_pointer
,
hovered_seq
+
is_lastcard
);
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 +522,53 @@ bool DeckBuilder::OnEvent(const irr::SEvent& event) {
...
@@ -535,99 +522,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
)
{
pop_main
(
hovered_seq
);
if
(
!
is_draging
)
}
else
if
(
hovered_pos
==
2
)
{
deckManager
.
current_deck
.
main
.
erase
(
deckManager
.
current_deck
.
main
.
begin
()
+
hovered_seq
);
pop_extra
(
hovered_seq
);
else
if
(
deckManager
.
current_deck
.
side
.
size
()
<
15
)
{
}
else
if
(
hovered_pos
==
3
)
{
deckManager
.
current_deck
.
side
.
push_back
(
draging_pointer
);
pop_side
(
hovered_seq
);
is_draging
=
false
;
}
else
{
}
auto
pointer
=
dataManager
.
GetCodePointer
(
hovered_code
);
}
else
if
(
hovered_pos
==
2
)
{
if
(
pointer
==
dataManager
.
_datas
.
end
())
if
(
!
is_draging
)
break
;
deckManager
.
current_deck
.
extra
.
erase
(
deckManager
.
current_deck
.
extra
.
begin
()
+
hovered_seq
);
if
(
!
check_limit
(
pointer
))
else
if
(
deckManager
.
current_deck
.
side
.
size
()
<
15
)
{
break
;
deckManager
.
current_deck
.
side
.
push_back
(
draging_pointer
);
if
(
!
push_extra
(
pointer
)
&&
!
push_main
(
pointer
))
is_draging
=
false
;
push_side
(
pointer
);
}
}
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
;
}
}
}
}
else
{
}
else
{
if
(
is_draging
)
{
if
(
click_pos
==
1
)
{
if
(
deckManager
.
current_deck
.
side
.
size
()
<
15
)
{
push_side
(
draging_pointer
);
deckManager
.
current_deck
.
side
.
push_back
(
draging_pointer
);
}
else
if
(
click_pos
==
2
)
{
is_draging
=
false
;
push_side
(
draging_pointer
);
}
}
else
if
(
click_pos
==
3
)
{
if
(
!
push_extra
(
draging_pointer
))
push_main
(
draging_pointer
);
}
else
{
}
else
{
unsigned
int
limitcode
=
draging_pointer
->
second
.
alias
?
draging_pointer
->
second
.
alias
:
draging_pointer
->
first
;
push_side
(
draging_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
;
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
);
}
}
}
is_draging
=
false
;
}
}
break
;
break
;
}
}
...
@@ -640,129 +581,37 @@ bool DeckBuilder::OnEvent(const irr::SEvent& event) {
...
@@ -640,129 +581,37 @@ 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
;
if
(
is_starting_dragging
)
{
int
y
=
event
.
MouseInput
.
Y
;
is_draging
=
true
;
irr
::
core
::
position2di
mouse_pos
(
x
,
y
);
if
(
hovered_pos
==
1
)
irr
::
gui
::
IGUIElement
*
root
=
mainGame
->
env
->
getRootGUIElement
();
pop_main
(
hovered_seq
);
if
(
root
->
getElementFromPoint
(
mouse_pos
)
!=
root
)
else
if
(
hovered_pos
==
2
)
break
;
pop_extra
(
hovered_seq
);
int
pre_code
=
hovered_code
;
else
if
(
hovered_pos
==
3
)
if
(
x
>=
314
&&
x
<=
794
&&
y
>=
164
&&
y
<=
435
)
{
pop_side
(
hovered_seq
);
int
lx
=
10
,
px
,
py
=
(
y
-
164
)
/
68
;
is_starting_dragging
=
false
;
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
;
break
;
}
}
case
irr
:
:
EMIE_MOUSE_WHEEL
:
{
case
irr
:
:
EMIE_MOUSE_WHEEL
:
{
...
@@ -775,9 +624,7 @@ bool DeckBuilder::OnEvent(const irr::SEvent& event) {
...
@@ -775,9 +624,7 @@ bool DeckBuilder::OnEvent(const irr::SEvent& event) {
if
(
mainGame
->
scrFilter
->
getPos
()
>
0
)
if
(
mainGame
->
scrFilter
->
getPos
()
>
0
)
mainGame
->
scrFilter
->
setPos
(
mainGame
->
scrFilter
->
getPos
()
-
1
);
mainGame
->
scrFilter
->
setPos
(
mainGame
->
scrFilter
->
getPos
()
-
1
);
}
}
SEvent
e
=
event
;
GetHoveredCard
();
e
.
MouseInput
.
Event
=
irr
::
EMIE_MOUSE_MOVED
;
mainGame
->
device
->
postEventFromUser
(
e
);
break
;
break
;
}
}
default:
break
;
default:
break
;
...
@@ -785,25 +632,96 @@ bool DeckBuilder::OnEvent(const irr::SEvent& event) {
...
@@ -785,25 +632,96 @@ bool DeckBuilder::OnEvent(const irr::SEvent& event) {
break
;
break
;
}
}
case
irr
:
:
EET_KEY_INPUT_EVENT
:
{
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
;
break
;
}
}
default:
break
;
default:
break
;
}
}
return
false
;
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
;
is_lastcard
=
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
;
if
(
x
>=
772
)
is_lastcard
=
1
;
}
}
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
;
if
(
x
>=
772
)
is_lastcard
=
1
;
}
}
}
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
()
{
void
DeckBuilder
::
StartFilter
()
{
filter_type
=
mainGame
->
cbCardType
->
getSelected
();
filter_type
=
mainGame
->
cbCardType
->
getSelected
();
filter_type2
=
mainGame
->
cbCardType2
->
getItemData
(
mainGame
->
cbCardType2
->
getSelected
());
filter_type2
=
mainGame
->
cbCardType2
->
getItemData
(
mainGame
->
cbCardType2
->
getSelected
());
...
@@ -1013,6 +931,9 @@ bool DeckBuilder::CardNameContains(const wchar_t *haystack, const wchar_t *needl
...
@@ -1013,6 +931,9 @@ bool DeckBuilder::CardNameContains(const wchar_t *haystack, const wchar_t *needl
if
(
!
needle
[
0
])
{
if
(
!
needle
[
0
])
{
return
true
;
return
true
;
}
}
if
(
!
haystack
)
{
return
false
;
}
int
i
=
0
;
int
i
=
0
;
int
j
=
0
;
int
j
=
0
;
while
(
haystack
[
i
])
{
while
(
haystack
[
i
])
{
...
@@ -1030,4 +951,85 @@ bool DeckBuilder::CardNameContains(const wchar_t *haystack, const wchar_t *needl
...
@@ -1030,4 +951,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 @
7f1d2e63
...
@@ -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
();
...
@@ -18,7 +21,15 @@ public:
...
@@ -18,7 +21,15 @@ public:
void
SortList
();
void
SortList
();
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,20 +45,24 @@ public:
...
@@ -34,20 +45,24 @@ 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
;
int
is_lastcard
;
int
click_pos
;
int
click_pos
;
bool
is_draging
;
bool
is_draging
;
bool
is_starting_dragging
;
int
dragx
;
int
dragx
;
int
dragy
;
int
dragy
;
size_t
pre_mainc
;
size_t
pre_mainc
;
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
;
int
prev_deck
;
bool
is_clearing
;
s32
prev_operation
;
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
;
wchar_t
result_string
[
8
];
wchar_t
result_string
[
8
];
...
...
gframe/drawing.cpp
View file @
7f1d2e63
...
@@ -198,33 +198,84 @@ void Game::DrawBackGround() {
...
@@ -198,33 +198,84 @@ void Game::DrawBackGround() {
}
}
void
Game
::
DrawLinkedZones
(
ClientCard
*
pcard
)
{
void
Game
::
DrawLinkedZones
(
ClientCard
*
pcard
)
{
int
mark
=
pcard
->
link_marker
;
int
mark
=
pcard
->
link_marker
;
matManager
.
mSelField
.
AmbientColor
=
0xff0261a2
;
ClientCard
*
pcard2
;
driver
->
setMaterial
(
matManager
.
mSelField
);
if
(
dField
.
hovered_sequence
<
5
)
{
if
(
dField
.
hovered_sequence
<
5
)
{
if
(
mark
&
LINK_MARKER_LEFT
&&
dField
.
hovered_sequence
>
0
)
if
(
mark
&
LINK_MARKER_LEFT
&&
dField
.
hovered_sequence
>
0
)
{
pcard2
=
mainGame
->
dField
.
mzone
[
dField
.
hovered_controler
][
dField
.
hovered_sequence
-
1
];
CheckMutual
(
pcard2
,
LINK_MARKER_RIGHT
);
driver
->
drawVertexPrimitiveList
(
&
matManager
.
vFieldMzone
[
dField
.
hovered_controler
][
dField
.
hovered_sequence
-
1
],
4
,
matManager
.
iRectangle
,
2
);
driver
->
drawVertexPrimitiveList
(
&
matManager
.
vFieldMzone
[
dField
.
hovered_controler
][
dField
.
hovered_sequence
-
1
],
4
,
matManager
.
iRectangle
,
2
);
if
(
mark
&
LINK_MARKER_RIGHT
&&
dField
.
hovered_sequence
<
4
)
}
if
(
mark
&
LINK_MARKER_RIGHT
&&
dField
.
hovered_sequence
<
4
)
{
pcard2
=
mainGame
->
dField
.
mzone
[
dField
.
hovered_controler
][
dField
.
hovered_sequence
+
1
];
CheckMutual
(
pcard2
,
LINK_MARKER_LEFT
);
driver
->
drawVertexPrimitiveList
(
&
matManager
.
vFieldMzone
[
dField
.
hovered_controler
][
dField
.
hovered_sequence
+
1
],
4
,
matManager
.
iRectangle
,
2
);
driver
->
drawVertexPrimitiveList
(
&
matManager
.
vFieldMzone
[
dField
.
hovered_controler
][
dField
.
hovered_sequence
+
1
],
4
,
matManager
.
iRectangle
,
2
);
}
if
(
dInfo
.
duel_rule
>=
4
)
{
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
)
{
pcard2
=
mainGame
->
dField
.
mzone
[
1
-
dField
.
hovered_controler
][
6
];
mark
=
(
dField
.
hovered_sequence
==
2
)
?
LINK_MARKER_TOP_LEFT
:
(
dField
.
hovered_sequence
==
1
)
?
LINK_MARKER_TOP
:
LINK_MARKER_TOP_RIGHT
;
}
CheckMutual
(
pcard2
,
mark
);
driver
->
drawVertexPrimitiveList
(
&
matManager
.
vFieldMzone
[
dField
.
hovered_controler
][
5
],
4
,
matManager
.
iRectangle
,
2
);
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
)
{
pcard2
=
mainGame
->
dField
.
mzone
[
1
-
dField
.
hovered_controler
][
5
];
mark
=
(
dField
.
hovered_sequence
==
4
)
?
LINK_MARKER_TOP_LEFT
:
(
dField
.
hovered_sequence
==
3
)
?
LINK_MARKER_TOP
:
LINK_MARKER_TOP_RIGHT
;
}
CheckMutual
(
pcard2
,
mark
);
driver
->
drawVertexPrimitiveList
(
&
matManager
.
vFieldMzone
[
dField
.
hovered_controler
][
6
],
4
,
matManager
.
iRectangle
,
2
);
driver
->
drawVertexPrimitiveList
(
&
matManager
.
vFieldMzone
[
dField
.
hovered_controler
][
6
],
4
,
matManager
.
iRectangle
,
2
);
}
}
}
}
else
{
}
else
{
int
swap
=
(
dField
.
hovered_sequence
==
5
)
?
0
:
2
;
int
swap
=
(
dField
.
hovered_sequence
==
5
)
?
0
:
2
;
if
(
mark
&
LINK_MARKER_BOTTOM_LEFT
)
if
(
mark
&
LINK_MARKER_BOTTOM_LEFT
)
{
pcard2
=
mainGame
->
dField
.
mzone
[
dField
.
hovered_controler
][
0
+
swap
];
CheckMutual
(
pcard2
,
LINK_MARKER_TOP_RIGHT
);
driver
->
drawVertexPrimitiveList
(
&
matManager
.
vFieldMzone
[
dField
.
hovered_controler
][
0
+
swap
],
4
,
matManager
.
iRectangle
,
2
);
driver
->
drawVertexPrimitiveList
(
&
matManager
.
vFieldMzone
[
dField
.
hovered_controler
][
0
+
swap
],
4
,
matManager
.
iRectangle
,
2
);
if
(
mark
&
LINK_MARKER_BOTTOM
)
}
if
(
mark
&
LINK_MARKER_BOTTOM
)
{
pcard2
=
mainGame
->
dField
.
mzone
[
dField
.
hovered_controler
][
1
+
swap
];
CheckMutual
(
pcard2
,
LINK_MARKER_TOP
);
driver
->
drawVertexPrimitiveList
(
&
matManager
.
vFieldMzone
[
dField
.
hovered_controler
][
1
+
swap
],
4
,
matManager
.
iRectangle
,
2
);
driver
->
drawVertexPrimitiveList
(
&
matManager
.
vFieldMzone
[
dField
.
hovered_controler
][
1
+
swap
],
4
,
matManager
.
iRectangle
,
2
);
if
(
mark
&
LINK_MARKER_BOTTOM_RIGHT
)
}
if
(
mark
&
LINK_MARKER_BOTTOM_RIGHT
)
{
pcard2
=
mainGame
->
dField
.
mzone
[
dField
.
hovered_controler
][
2
+
swap
];
CheckMutual
(
pcard2
,
LINK_MARKER_TOP_LEFT
);
driver
->
drawVertexPrimitiveList
(
&
matManager
.
vFieldMzone
[
dField
.
hovered_controler
][
2
+
swap
],
4
,
matManager
.
iRectangle
,
2
);
driver
->
drawVertexPrimitiveList
(
&
matManager
.
vFieldMzone
[
dField
.
hovered_controler
][
2
+
swap
],
4
,
matManager
.
iRectangle
,
2
);
if
(
mark
&
LINK_MARKER_TOP_LEFT
)
}
if
(
mark
&
LINK_MARKER_TOP_LEFT
)
{
pcard2
=
mainGame
->
dField
.
mzone
[
1
-
dField
.
hovered_controler
][
4
-
swap
];
CheckMutual
(
pcard2
,
LINK_MARKER_TOP_LEFT
);
driver
->
drawVertexPrimitiveList
(
&
matManager
.
vFieldMzone
[
1
-
dField
.
hovered_controler
][
4
-
swap
],
4
,
matManager
.
iRectangle
,
2
);
driver
->
drawVertexPrimitiveList
(
&
matManager
.
vFieldMzone
[
1
-
dField
.
hovered_controler
][
4
-
swap
],
4
,
matManager
.
iRectangle
,
2
);
if
(
mark
&
LINK_MARKER_TOP
)
}
if
(
mark
&
LINK_MARKER_TOP
)
{
pcard2
=
mainGame
->
dField
.
mzone
[
1
-
dField
.
hovered_controler
][
3
-
swap
];
CheckMutual
(
pcard2
,
LINK_MARKER_TOP
);
driver
->
drawVertexPrimitiveList
(
&
matManager
.
vFieldMzone
[
1
-
dField
.
hovered_controler
][
3
-
swap
],
4
,
matManager
.
iRectangle
,
2
);
driver
->
drawVertexPrimitiveList
(
&
matManager
.
vFieldMzone
[
1
-
dField
.
hovered_controler
][
3
-
swap
],
4
,
matManager
.
iRectangle
,
2
);
if
(
mark
&
LINK_MARKER_TOP_RIGHT
)
}
if
(
mark
&
LINK_MARKER_TOP_RIGHT
)
{
pcard2
=
mainGame
->
dField
.
mzone
[
1
-
dField
.
hovered_controler
][
2
-
swap
];
CheckMutual
(
pcard2
,
LINK_MARKER_TOP_RIGHT
);
driver
->
drawVertexPrimitiveList
(
&
matManager
.
vFieldMzone
[
1
-
dField
.
hovered_controler
][
2
-
swap
],
4
,
matManager
.
iRectangle
,
2
);
driver
->
drawVertexPrimitiveList
(
&
matManager
.
vFieldMzone
[
1
-
dField
.
hovered_controler
][
2
-
swap
],
4
,
matManager
.
iRectangle
,
2
);
}
}
}
void
Game
::
CheckMutual
(
ClientCard
*
pcard
,
int
mark
)
{
matManager
.
mSelField
.
AmbientColor
=
0xff0261a2
;
driver
->
setMaterial
(
matManager
.
mSelField
);
if
(
pcard
&&
pcard
->
type
&
TYPE_LINK
&&
pcard
->
link_marker
&
mark
)
{
matManager
.
mSelField
.
AmbientColor
=
0xff009900
;
driver
->
setMaterial
(
matManager
.
mSelField
);
}
}
}
}
void
Game
::
DrawCards
()
{
void
Game
::
DrawCards
()
{
...
@@ -884,6 +935,11 @@ void Game::DrawSpec() {
...
@@ -884,6 +935,11 @@ void Game::DrawSpec() {
}
}
}
}
}
}
void
Game
::
DrawBackImage
(
irr
::
video
::
ITexture
*
texture
)
{
if
(
!
texture
)
return
;
driver
->
draw2DImage
(
texture
,
recti
(
0
,
0
,
1024
,
640
),
recti
(
0
,
0
,
texture
->
getOriginalSize
().
Width
,
texture
->
getOriginalSize
().
Height
));
}
void
Game
::
ShowElement
(
irr
::
gui
::
IGUIElement
*
win
,
int
autoframe
)
{
void
Game
::
ShowElement
(
irr
::
gui
::
IGUIElement
*
win
,
int
autoframe
)
{
FadingUnit
fu
;
FadingUnit
fu
;
fu
.
fadingSize
=
win
->
getRelativePosition
();
fu
.
fadingSize
=
win
->
getRelativePosition
();
...
...
gframe/duelclient.cpp
View file @
7f1d2e63
...
@@ -2414,6 +2414,11 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) {
...
@@ -2414,6 +2414,11 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) {
return
true
;
return
true
;
}
}
case
MSG_CHAIN_END
:
{
case
MSG_CHAIN_END
:
{
for
(
auto
chit
=
mainGame
->
dField
.
chains
.
begin
();
chit
!=
mainGame
->
dField
.
chains
.
end
();
++
chit
)
{
for
(
auto
tgit
=
chit
->
target
.
begin
();
tgit
!=
chit
->
target
.
end
();
++
tgit
)
(
*
tgit
)
->
is_showchaintarget
=
false
;
chit
->
chain_card
->
is_showchaintarget
=
false
;
}
mainGame
->
dField
.
chains
.
clear
();
mainGame
->
dField
.
chains
.
clear
();
return
true
;
return
true
;
}
}
...
...
gframe/event_handler.cpp
View file @
7f1d2e63
...
@@ -14,17 +14,14 @@
...
@@ -14,17 +14,14 @@
namespace
ygo
{
namespace
ygo
{
bool
ClientField
::
OnEvent
(
const
irr
::
SEvent
&
event
)
{
bool
ClientField
::
OnEvent
(
const
irr
::
SEvent
&
event
)
{
if
(
OnCommonEvent
(
event
))
return
false
;
switch
(
event
.
EventType
)
{
switch
(
event
.
EventType
)
{
case
irr
:
:
EET_GUI_EVENT
:
{
case
irr
:
:
EET_GUI_EVENT
:
{
s32
id
=
event
.
GUIEvent
.
Caller
->
getID
();
s32
id
=
event
.
GUIEvent
.
Caller
->
getID
();
switch
(
event
.
GUIEvent
.
EventType
)
{
switch
(
event
.
GUIEvent
.
EventType
)
{
case
irr
:
:
gui
::
EGET_BUTTON_CLICKED
:
{
case
irr
:
:
gui
::
EGET_BUTTON_CLICKED
:
{
switch
(
id
)
{
switch
(
id
)
{
case
BUTTON_CLEAR_LOG
:
{
mainGame
->
lstLog
->
clear
();
mainGame
->
logParam
.
clear
();
break
;
}
case
BUTTON_HAND1
:
case
BUTTON_HAND1
:
case
BUTTON_HAND2
:
case
BUTTON_HAND2
:
case
BUTTON_HAND3
:
{
case
BUTTON_HAND3
:
{
...
@@ -896,13 +893,6 @@ bool ClientField::OnEvent(const irr::SEvent& event) {
...
@@ -896,13 +893,6 @@ bool ClientField::OnEvent(const irr::SEvent& event) {
}
}
case
irr
:
:
gui
::
EGET_LISTBOX_CHANGED
:
{
case
irr
:
:
gui
::
EGET_LISTBOX_CHANGED
:
{
switch
(
id
)
{
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
:
{
case
LISTBOX_ANCARD
:
{
int
sel
=
mainGame
->
lstANCard
->
getSelected
();
int
sel
=
mainGame
->
lstANCard
->
getSelected
();
if
(
sel
!=
-
1
)
{
if
(
sel
!=
-
1
)
{
...
@@ -913,18 +903,6 @@ bool ClientField::OnEvent(const irr::SEvent& event) {
...
@@ -913,18 +903,6 @@ bool ClientField::OnEvent(const irr::SEvent& event) {
}
}
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
);
}
break
;
}
}
break
;
}
case
irr
:
:
gui
::
EGET_SCROLL_BAR_CHANGED
:
{
case
irr
:
:
gui
::
EGET_SCROLL_BAR_CHANGED
:
{
switch
(
id
)
{
switch
(
id
)
{
case
SCROLL_CARD_SELECT
:
{
case
SCROLL_CARD_SELECT
:
{
...
@@ -1034,11 +1012,6 @@ bool ClientField::OnEvent(const irr::SEvent& event) {
...
@@ -1034,11 +1012,6 @@ bool ClientField::OnEvent(const irr::SEvent& event) {
}
}
break
;
break
;
}
}
case
SCROLL_CARDTEXT
:
{
u32
pos
=
mainGame
->
scrCardText
->
getPos
();
mainGame
->
SetStaticText
(
mainGame
->
stText
,
mainGame
->
stText
->
getRelativePosition
().
getWidth
()
-
25
,
mainGame
->
textFont
,
mainGame
->
showingtext
,
pos
);
break
;
}
break
;
break
;
}
}
}
}
...
@@ -1893,12 +1866,6 @@ bool ClientField::OnEvent(const irr::SEvent& event) {
...
@@ -1893,12 +1866,6 @@ bool ClientField::OnEvent(const irr::SEvent& event) {
}
}
break
;
break
;
}
}
case
irr
:
:
KEY_KEY_R
:
{
if
(
mainGame
->
gameConf
.
control_mode
==
0
&&
!
event
.
KeyInput
.
PressedDown
&&
!
mainGame
->
HasFocus
(
EGUIET_EDIT_BOX
))
mainGame
->
textFont
->
setTransparency
(
true
);
break
;
}
case
irr
:
:
KEY_F1
:
case
irr
:
:
KEY_F1
:
case
irr
:
:
KEY_F2
:
case
irr
:
:
KEY_F2
:
case
irr
:
:
KEY_F3
:
case
irr
:
:
KEY_F3
:
...
@@ -1970,15 +1937,101 @@ bool ClientField::OnEvent(const irr::SEvent& event) {
...
@@ -1970,15 +1937,101 @@ bool ClientField::OnEvent(const irr::SEvent& event) {
}
}
break
;
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_CHECKBOX_CHANGED
:
{
switch
(
id
)
{
case
CHECKBOX_AUTO_SEARCH
:
{
mainGame
->
gameConf
.
auto_search_limit
=
mainGame
->
chkAutoSearch
->
isChecked
()
?
0
:
-
1
;
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
;
}
}
break
;
}
default:
break
;
}
break
;
}
case
irr
:
:
EET_KEY_INPUT_EVENT
:
{
switch
(
event
.
KeyInput
.
Key
)
{
case
irr
:
:
KEY_KEY_R
:
{
if
(
mainGame
->
gameConf
.
control_mode
==
0
&&
!
event
.
KeyInput
.
PressedDown
&&
!
mainGame
->
HasFocus
(
EGUIET_EDIT_BOX
))
mainGame
->
textFont
->
setTransparency
(
true
);
return
true
;
break
;
}
case
irr
:
:
KEY_F9
:
{
case
irr
:
:
KEY_F9
:
{
if
(
mainGame
->
gameConf
.
control_mode
==
1
if
(
mainGame
->
gameConf
.
control_mode
==
1
&&
!
event
.
KeyInput
.
PressedDown
&&
!
mainGame
->
HasFocus
(
EGUIET_EDIT_BOX
))
&&
!
event
.
KeyInput
.
PressedDown
&&
!
mainGame
->
HasFocus
(
EGUIET_EDIT_BOX
))
mainGame
->
textFont
->
setTransparency
(
true
);
mainGame
->
textFont
->
setTransparency
(
true
);
return
true
;
break
;
break
;
}
}
case
irr
:
:
KEY_ESCAPE
:
{
case
irr
:
:
KEY_ESCAPE
:
{
if
(
!
mainGame
->
HasFocus
(
EGUIET_EDIT_BOX
))
if
(
!
mainGame
->
HasFocus
(
EGUIET_EDIT_BOX
))
mainGame
->
device
->
minimizeWindow
();
mainGame
->
device
->
minimizeWindow
();
return
true
;
break
;
break
;
}
}
default:
break
;
default:
break
;
...
...
gframe/game.cpp
View file @
7f1d2e63
...
@@ -269,6 +269,7 @@ bool Game::Initialize() {
...
@@ -269,6 +269,7 @@ bool Game::Initialize() {
btnEP->setVisible(false);
btnEP->setVisible(false);
//tab
//tab
wInfos = env->addTabControl(rect<s32>(1, 275, 301, 639), 0, true);
wInfos = env->addTabControl(rect<s32>(1, 275, 301, 639), 0, true);
wInfos->setTabExtraWidth(16);
wInfos->setVisible(false);
wInfos->setVisible(false);
//info
//info
irr::gui::IGUITab* tabInfo = wInfos->addTab(dataManager.GetSysString(1270));
irr::gui::IGUITab* tabInfo = wInfos->addTab(dataManager.GetSysString(1270));
...
@@ -290,26 +291,44 @@ bool Game::Initialize() {
...
@@ -290,26 +291,44 @@ bool Game::Initialize() {
lstLog = env->addListBox(rect<s32>(10, 10, 290, 290), tabLog, LISTBOX_LOG, false);
lstLog = env->addListBox(rect<s32>(10, 10, 290, 290), tabLog, LISTBOX_LOG, false);
lstLog->setItemHeight(18);
lstLog->setItemHeight(18);
btnClearLog = env->addButton(rect<s32>(160, 300, 260, 325), tabLog, BUTTON_CLEAR_LOG, dataManager.GetSysString(1272));
btnClearLog = env->addButton(rect<s32>(160, 300, 260, 325), tabLog, BUTTON_CLEAR_LOG, dataManager.GetSysString(1272));
//system
//helper
irr::gui::IGUITab* tabSystem = wInfos->addTab(dataManager.GetSysString(1273));
irr::gui::IGUITab* tabHelper = wInfos->addTab(dataManager.GetSysString(1298));
chkMAutoPos = env->addCheckBox(false, rect<s32>(20, 20, 280, 45), tabSystem, -1, dataManager.GetSysString(1274));
int posX = 20;
int posY = 20;
chkMAutoPos = env->addCheckBox(false, rect<s32>(posX, posY, posX + 260, posY + 25), tabHelper, -1, dataManager.GetSysString(1274));
chkMAutoPos->setChecked(gameConf.chkMAutoPos != 0);
chkMAutoPos->setChecked(gameConf.chkMAutoPos != 0);
chkSTAutoPos = env->addCheckBox(false, rect<s32>(20, 50, 280, 75), tabSystem, -1, dataManager.GetSysString(1278));
posY += 30;
chkSTAutoPos = env->addCheckBox(false, rect<s32>(posX, posY, posX + 260, posY + 25), tabHelper, -1, dataManager.GetSysString(1278));
chkSTAutoPos->setChecked(gameConf.chkSTAutoPos != 0);
chkSTAutoPos->setChecked(gameConf.chkSTAutoPos != 0);
chkRandomPos = env->addCheckBox(false, rect<s32>(40, 80, 300, 105), tabSystem, -1, dataManager.GetSysString(1275));
posY += 30;
chkRandomPos = env->addCheckBox(false, rect<s32>(posX + 20, posY, posX + 20 + 260, posY + 25), tabHelper, -1, dataManager.GetSysString(1275));
chkRandomPos->setChecked(gameConf.chkRandomPos != 0);
chkRandomPos->setChecked(gameConf.chkRandomPos != 0);
chkAutoChain = env->addCheckBox(false, rect<s32>(20, 110, 280, 135), tabSystem, -1, dataManager.GetSysString(1276));
posY += 30;
chkAutoChain = env->addCheckBox(false, rect<s32>(posX, posY, posX + 260, posY + 25), tabHelper, -1, dataManager.GetSysString(1276));
chkAutoChain->setChecked(gameConf.chkAutoChain != 0);
chkAutoChain->setChecked(gameConf.chkAutoChain != 0);
chkWaitChain = env->addCheckBox(false, rect<s32>(20, 140, 280, 165), tabSystem, -1, dataManager.GetSysString(1277));
posY += 30;
chkWaitChain = env->addCheckBox(false, rect<s32>(posX, posY, posX + 260, posY + 25), tabHelper, -1, dataManager.GetSysString(1277));
chkWaitChain->setChecked(gameConf.chkWaitChain != 0);
chkWaitChain->setChecked(gameConf.chkWaitChain != 0);
chkIgnore1 = env->addCheckBox(false, rect<s32>(20, 200, 280, 225), tabSystem, -1, dataManager.GetSysString(1290));
//system
irr::gui::IGUITab* tabSystem = wInfos->addTab(dataManager.GetSysString(1273));
posY = 20;
chkIgnore1 = env->addCheckBox(false, rect<s32>(posX, posY, posX + 260, posY + 25), tabSystem, -1, dataManager.GetSysString(1290));
chkIgnore1->setChecked(gameConf.chkIgnore1 != 0);
chkIgnore1->setChecked(gameConf.chkIgnore1 != 0);
chkIgnore2 = env->addCheckBox(false, rect<s32>(20, 230, 280, 255), tabSystem, -1, dataManager.GetSysString(1291));
posY += 30;
chkIgnore2 = env->addCheckBox(false, rect<s32>(posX, posY, posX + 260, posY + 25), tabSystem, -1, dataManager.GetSysString(1291));
chkIgnore2->setChecked(gameConf.chkIgnore2 != 0);
chkIgnore2->setChecked(gameConf.chkIgnore2 != 0);
chkHideSetname = env->addCheckBox(false, rect<s32>(20, 260, 280, 285), tabSystem, -1, dataManager.GetSysString(1354));
posY += 30;
chkHideSetname = env->addCheckBox(false, rect<s32>(posX, posY, posX + 260, posY + 25), tabSystem, -1, dataManager.GetSysString(1354));
chkHideSetname->setChecked(gameConf.chkHideSetname != 0);
chkHideSetname->setChecked(gameConf.chkHideSetname != 0);
chkHideHintButton = env->addCheckBox(false, rect<s32>(20, 290, 280, 315), tabSystem, -1, dataManager.GetSysString(1355));
posY += 30;
chkHideHintButton = env->addCheckBox(false, rect<s32>(posX, posY, posX + 260, posY + 25), tabSystem, -1, dataManager.GetSysString(1355));
chkHideHintButton->setChecked(gameConf.chkHideHintButton != 0);
chkHideHintButton->setChecked(gameConf.chkHideHintButton != 0);
posY += 30;
chkIgnoreDeckChanges = env->addCheckBox(false, rect<s32>(posX, posY, posX + 260, posY + 25), tabSystem, -1, dataManager.GetSysString(1357));
chkIgnoreDeckChanges->setChecked(gameConf.chkIgnoreDeckChanges != 0);
posY += 30;
chkAutoSearch = env->addCheckBox(false, rect<s32>(posX, posY, posX + 260, posY + 25), tabSystem, CHECKBOX_AUTO_SEARCH, dataManager.GetSysString(1358));
chkAutoSearch->setChecked(gameConf.auto_search_limit >= 0);
//
//
wHand = env->addWindow(rect<s32>(500, 450, 825, 605), false, L"");
wHand = env->addWindow(rect<s32>(500, 450, 825, 605), false, L"");
wHand->getCloseButton()->setVisible(false);
wHand->getCloseButton()->setVisible(false);
...
@@ -624,12 +643,12 @@ bool Game::Initialize() {
...
@@ -624,12 +643,12 @@ bool Game::Initialize() {
btnChainIgnore->setVisible(false);
btnChainIgnore->setVisible(false);
btnChainAlways->setVisible(false);
btnChainAlways->setVisible(false);
btnChainWhenAvail->setVisible(false);
btnChainWhenAvail->setVisible(false);
//cancel or finish
btnCancelOrFinish = env->addButton(rect<s32>(205, 230, 295, 265), 0, BUTTON_CANCEL_OR_FINISH, dataManager.GetSysString(1295));
btnCancelOrFinish->setVisible(false);
//shuffle
//shuffle
btnShuffle = env->addButton(rect<s32>(205, 230, 295, 265), 0, BUTTON_CMD_SHUFFLE, dataManager.GetSysString(1297));
btnShuffle = env->addButton(rect<s32>(205, 230, 295, 265), 0, BUTTON_CMD_SHUFFLE, dataManager.GetSysString(1297));
btnShuffle->setVisible(false);
btnShuffle->setVisible(false);
//cancel or finish
btnCancelOrFinish = env->addButton(rect<s32>(205, 230, 295, 265), 0, BUTTON_CANCEL_OR_FINISH, dataManager.GetSysString(1295));
btnCancelOrFinish->setVisible(false);
//leave/surrender/exit
//leave/surrender/exit
btnLeaveGame = env->addButton(rect<s32>(205, 5, 295, 80), 0, BUTTON_LEAVE_GAME, L"");
btnLeaveGame = env->addButton(rect<s32>(205, 5, 295, 80), 0, BUTTON_LEAVE_GAME, L"");
btnLeaveGame->setVisible(false);
btnLeaveGame->setVisible(false);
...
@@ -676,10 +695,9 @@ void Game::MainLoop() {
...
@@ -676,10 +695,9 @@ void Game::MainLoop() {
atkframe += 0.1f;
atkframe += 0.1f;
atkdy = (float)sin(atkframe);
atkdy = (float)sin(atkframe);
driver->beginScene(true, true, SColor(0, 0, 0, 0));
driver->beginScene(true, true, SColor(0, 0, 0, 0));
if(imageManager.tBackGround)
driver->draw2DImage(imageManager.tBackGround, recti(0, 0, 1024, 640), recti(0, 0, imageManager.tBackGround->getOriginalSize().Width, imageManager.tBackGround->getOriginalSize().Height));
gMutex.Lock();
gMutex.Lock();
if(dInfo.isStarted) {
if(dInfo.isStarted) {
DrawBackImage(imageManager.tBackGround);
DrawBackGround();
DrawBackGround();
DrawCards();
DrawCards();
DrawMisc();
DrawMisc();
...
@@ -687,12 +705,10 @@ void Game::MainLoop() {
...
@@ -687,12 +705,10 @@ void Game::MainLoop() {
driver->setMaterial(irr::video::IdentityMaterial);
driver->setMaterial(irr::video::IdentityMaterial);
driver->clearZBuffer();
driver->clearZBuffer();
} else if(is_building) {
} else if(is_building) {
if(imageManager.tBackGround_deck)
DrawBackImage(imageManager.tBackGround_deck);
driver->draw2DImage(imageManager.tBackGround_deck, recti(0, 0, 1024, 640), recti(0, 0, imageManager.tBackGround->getOriginalSize().Width, imageManager.tBackGround->getOriginalSize().Height));
DrawDeckBd();
DrawDeckBd();
} else {
} else {
if(imageManager.tBackGround_menu)
DrawBackImage(imageManager.tBackGround_menu);
driver->draw2DImage(imageManager.tBackGround_menu, recti(0, 0, 1024, 640), recti(0, 0, imageManager.tBackGround->getOriginalSize().Width, imageManager.tBackGround->getOriginalSize().Height));
}
}
DrawGUI();
DrawGUI();
DrawSpec();
DrawSpec();
...
@@ -970,6 +986,7 @@ void Game::LoadConfig() {
...
@@ -970,6 +986,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.chkIgnoreDeckChanges = 0;
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);
...
@@ -1028,6 +1045,8 @@ void Game::LoadConfig() {
...
@@ -1028,6 +1045,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, "ignore_deck_changes")) {
gameConf.chkIgnoreDeckChanges = 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);
...
@@ -1084,6 +1103,7 @@ void Game::SaveConfig() {
...
@@ -1084,6 +1103,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, "ignore_deck_changes = %d\n", ((mainGame->chkIgnoreDeckChanges->isChecked()) ? 1 : 0));
fclose(fp);
fclose(fp);
}
}
void Game::ShowCardInfo(int code) {
void Game::ShowCardInfo(int code) {
...
...
gframe/game.h
View file @
7f1d2e63
...
@@ -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
chkIgnoreDeckChanges
;
};
};
struct
DuelInfo
{
struct
DuelInfo
{
...
@@ -94,12 +95,14 @@ public:
...
@@ -94,12 +95,14 @@ public:
void DrawSelectionLine(irr::video::S3DVertex* vec, bool strip, int width, float* cv);
void DrawSelectionLine(irr::video::S3DVertex* vec, bool strip, int width, float* cv);
void DrawBackGround();
void DrawBackGround();
void DrawLinkedZones(ClientCard* pcard);
void DrawLinkedZones(ClientCard* pcard);
void CheckMutual(ClientCard* pcard, int mark);
void DrawCards();
void DrawCards();
void DrawCard(ClientCard* pcard);
void DrawCard(ClientCard* pcard);
void DrawMisc();
void DrawMisc();
void DrawStatus(ClientCard* pcard, int x1, int y1, int x2, int y2);
void DrawStatus(ClientCard* pcard, int x1, int y1, int x2, int y2);
void DrawGUI();
void DrawGUI();
void DrawSpec();
void DrawSpec();
void DrawBackImage(irr::video::ITexture* texture);
void ShowElement(irr::gui::IGUIElement* element, int autoframe = 0);
void ShowElement(irr::gui::IGUIElement* element, int autoframe = 0);
void HideElement(irr::gui::IGUIElement* element, bool set_action = false);
void HideElement(irr::gui::IGUIElement* element, bool set_action = false);
void PopupElement(irr::gui::IGUIElement* element, int hideframe = 0);
void PopupElement(irr::gui::IGUIElement* element, int hideframe = 0);
...
@@ -214,6 +217,8 @@ public:
...
@@ -214,6 +217,8 @@ public:
irr::gui::IGUICheckBox* chkWaitChain;
irr::gui::IGUICheckBox* chkWaitChain;
irr::gui::IGUICheckBox* chkHideSetname;
irr::gui::IGUICheckBox* chkHideSetname;
irr::gui::IGUICheckBox* chkHideHintButton;
irr::gui::IGUICheckBox* chkHideHintButton;
irr::gui::IGUICheckBox* chkIgnoreDeckChanges;
irr::gui::IGUICheckBox* chkAutoSearch;
irr::gui::IGUIListBox* lstLog;
irr::gui::IGUIListBox* lstLog;
irr::gui::IGUIButton* btnClearLog;
irr::gui::IGUIButton* btnClearLog;
irr::gui::IGUIButton* btnSaveLog;
irr::gui::IGUIButton* btnSaveLog;
...
@@ -565,6 +570,7 @@ extern unsigned char draw_count;
...
@@ -565,6 +570,7 @@ extern unsigned char draw_count;
#define LISTBOX_SINGLEPLAY_LIST 350
#define LISTBOX_SINGLEPLAY_LIST 350
#define BUTTON_LOAD_SINGLEPLAY 351
#define BUTTON_LOAD_SINGLEPLAY 351
#define BUTTON_CANCEL_SINGLEPLAY 352
#define BUTTON_CANCEL_SINGLEPLAY 352
#define CHECKBOX_AUTO_SEARCH 360
#define COMBOBOX_SORTTYPE 370
#define COMBOBOX_SORTTYPE 370
#define BUTTON_MARKS_FILTER 380
#define BUTTON_MARKS_FILTER 380
...
...
gframe/image_manager.cpp
View file @
7f1d2e63
...
@@ -28,7 +28,11 @@ bool ImageManager::Initial() {
...
@@ -28,7 +28,11 @@ bool ImageManager::Initial() {
tHand
[
2
]
=
driver
->
getTexture
(
"textures/f3.jpg"
);
tHand
[
2
]
=
driver
->
getTexture
(
"textures/f3.jpg"
);
tBackGround
=
driver
->
getTexture
(
"textures/bg.jpg"
);
tBackGround
=
driver
->
getTexture
(
"textures/bg.jpg"
);
tBackGround_menu
=
driver
->
getTexture
(
"textures/bg_menu.jpg"
);
tBackGround_menu
=
driver
->
getTexture
(
"textures/bg_menu.jpg"
);
if
(
!
tBackGround_menu
)
tBackGround_menu
=
tBackGround
;
tBackGround_deck
=
driver
->
getTexture
(
"textures/bg_deck.jpg"
);
tBackGround_deck
=
driver
->
getTexture
(
"textures/bg_deck.jpg"
);
if
(
!
tBackGround_deck
)
tBackGround_deck
=
tBackGround
;
tField
[
0
]
=
driver
->
getTexture
(
"textures/field2.png"
);
tField
[
0
]
=
driver
->
getTexture
(
"textures/field2.png"
);
tFieldTransparent
[
0
]
=
driver
->
getTexture
(
"textures/field-transparent2.png"
);
tFieldTransparent
[
0
]
=
driver
->
getTexture
(
"textures/field-transparent2.png"
);
tField
[
1
]
=
driver
->
getTexture
(
"textures/field3.png"
);
tField
[
1
]
=
driver
->
getTexture
(
"textures/field3.png"
);
...
...
gframe/menu_handler.cpp
View file @
7f1d2e63
...
@@ -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 @
7f1d2e63
...
@@ -303,6 +303,7 @@
...
@@ -303,6 +303,7 @@
!
system
1295
取消操作
!
system
1295
取消操作
!
system
1296
完成选择
!
system
1296
完成选择
!
system
1297
切洗手卡
!
system
1297
切洗手卡
!
system
1298
辅助功能
!
system
1300
禁限卡表:
!
system
1300
禁限卡表:
!
system
1301
卡组列表:
!
system
1301
卡组列表:
!
system
1302
保存
!
system
1302
保存
...
@@ -356,6 +357,9 @@
...
@@ -356,6 +357,9 @@
!
system
1353
播放起始于回合:
!
system
1353
播放起始于回合:
!
system
1354
不显示卡片系列
!
system
1354
不显示卡片系列
!
system
1355
不显示提示按钮
!
system
1355
不显示提示按钮
!
system
1356
是否要放弃对卡组的修改?
!
system
1357
不提示保留对卡组的修改
!
system
1358
键入关键字后自动进行搜索
!
system
1360
上一步
!
system
1360
上一步
!
system
1370
星数↑
!
system
1370
星数↑
!
system
1371
攻击↑
!
system
1371
攻击↑
...
...
system.conf
View file @
7f1d2e63
...
@@ -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
ignore_deck_changes
=
0
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