Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Y
ygopro
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Locked Files
Issues
0
Issues
0
List
Boards
Labels
Service Desk
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Security & Compliance
Security & Compliance
Dependency List
License Compliance
Packages
Packages
List
Container Registry
Analytics
Analytics
CI / CD
Code Review
Insights
Issues
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
REIKAI
ygopro
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
Expand all
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:
int list_command;
virtual bool OnEvent(const irr::SEvent& event);
virtual bool OnCommonEvent(const irr::SEvent& event);
void GetHoverField(int x, int y);
void ShowMenu(int flag, int x, int y);
void UpdateChainButtons();
...
...
gframe/deck_con.cpp
View file @
7f1d2e63
This diff is collapsed.
Click to expand it.
gframe/deck_con.h
View file @
7f1d2e63
...
...
@@ -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,20 +45,24 @@ public:
unsigned
int
filter_scl
;
unsigned
int
filter_marks
;
int
filter_lm
;
position2di
mouse_pos
;
int
hovered_code
;
int
hovered_pos
;
int
hovered_seq
;
int
is_lastcard
;
int
click_pos
;
bool
is_draging
;
bool
is_starting_dragging
;
int
dragx
;
int
dragy
;
size_t
pre_mainc
;
size_t
pre_extrac
;
size_t
pre_sidec
;
code_pointer
draging_pointer
;
bool
is_deleting
;
bool
is_clearing
;
int
prev_deck
;
s32
prev_operation
;
bool
is_modified
;
std
::
unordered_map
<
int
,
int
>*
filterList
;
std
::
vector
<
code_pointer
>
results
;
wchar_t
result_string
[
8
];
...
...
gframe/drawing.cpp
View file @
7f1d2e63
...
...
@@ -198,33 +198,84 @@ void Game::DrawBackGround() {
}
void
Game
::
DrawLinkedZones
(
ClientCard
*
pcard
)
{
int
mark
=
pcard
->
link_marker
;
matManager
.
mSelField
.
AmbientColor
=
0xff0261a2
;
driver
->
setMaterial
(
matManager
.
mSelField
);
ClientCard
*
pcard2
;
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
);
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
);
}
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
);
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
);
}
}
}
else
{
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
);
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
);
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
);
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
);
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
);
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
);
}
}
}
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
()
{
...
...
@@ -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
)
{
FadingUnit
fu
;
fu
.
fadingSize
=
win
->
getRelativePosition
();
...
...
gframe/duelclient.cpp
View file @
7f1d2e63
...
...
@@ -2414,6 +2414,11 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) {
return
true
;
}
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
();
return
true
;
}
...
...
gframe/event_handler.cpp
View file @
7f1d2e63
...
...
@@ -14,17 +14,14 @@
namespace
ygo
{
bool
ClientField
::
OnEvent
(
const
irr
::
SEvent
&
event
)
{
if
(
OnCommonEvent
(
event
))
return
false
;
switch
(
event
.
EventType
)
{
case
irr
:
:
EET_GUI_EVENT
:
{
s32
id
=
event
.
GUIEvent
.
Caller
->
getID
();
switch
(
event
.
GUIEvent
.
EventType
)
{
case
irr
:
:
gui
::
EGET_BUTTON_CLICKED
:
{
switch
(
id
)
{
case
BUTTON_CLEAR_LOG
:
{
mainGame
->
lstLog
->
clear
();
mainGame
->
logParam
.
clear
();
break
;
}
case
BUTTON_HAND1
:
case
BUTTON_HAND2
:
case
BUTTON_HAND3
:
{
...
...
@@ -896,13 +893,6 @@ bool ClientField::OnEvent(const irr::SEvent& event) {
}
case
irr
:
:
gui
::
EGET_LISTBOX_CHANGED
:
{
switch
(
id
)
{
case
LISTBOX_LOG
:
{
int
sel
=
mainGame
->
lstLog
->
getSelected
();
if
(
sel
!=
-
1
&&
(
int
)
mainGame
->
logParam
.
size
()
>=
sel
&&
mainGame
->
logParam
[
sel
])
{
mainGame
->
ShowCardInfo
(
mainGame
->
logParam
[
sel
]);
}
break
;
}
case
LISTBOX_ANCARD
:
{
int
sel
=
mainGame
->
lstANCard
->
getSelected
();
if
(
sel
!=
-
1
)
{
...
...
@@ -913,18 +903,6 @@ bool ClientField::OnEvent(const irr::SEvent& event) {
}
break
;
}
case
irr
:
:
gui
::
EGET_LISTBOX_SELECTED_AGAIN
:
{
switch
(
id
)
{
case
LISTBOX_LOG
:
{
int
sel
=
mainGame
->
lstLog
->
getSelected
();
if
(
sel
!=
-
1
&&
(
int
)
mainGame
->
logParam
.
size
()
>=
sel
&&
mainGame
->
logParam
[
sel
])
{
mainGame
->
wInfos
->
setActiveTab
(
0
);
}
break
;
}
}
break
;
}
case
irr
:
:
gui
::
EGET_SCROLL_BAR_CHANGED
:
{
switch
(
id
)
{
case
SCROLL_CARD_SELECT
:
{
...
...
@@ -1034,11 +1012,6 @@ bool ClientField::OnEvent(const irr::SEvent& event) {
}
break
;
}
case
SCROLL_CARDTEXT
:
{
u32
pos
=
mainGame
->
scrCardText
->
getPos
();
mainGame
->
SetStaticText
(
mainGame
->
stText
,
mainGame
->
stText
->
getRelativePosition
().
getWidth
()
-
25
,
mainGame
->
textFont
,
mainGame
->
showingtext
,
pos
);
break
;
}
break
;
}
}
...
...
@@ -1893,12 +1866,6 @@ bool ClientField::OnEvent(const irr::SEvent& event) {
}
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_F2
:
case
irr
:
:
KEY_F3
:
...
...
@@ -1970,15 +1937,101 @@ bool ClientField::OnEvent(const irr::SEvent& event) {
}
break
;
}
default:
break
;
}
break
;
}
default:
break
;
}
return
false
;
}
bool
ClientField
::
OnCommonEvent
(
const
irr
::
SEvent
&
event
)
{
switch
(
event
.
EventType
)
{
case
irr
:
:
EET_GUI_EVENT
:
{
s32
id
=
event
.
GUIEvent
.
Caller
->
getID
();
switch
(
event
.
GUIEvent
.
EventType
)
{
case
irr
:
:
gui
::
EGET_BUTTON_CLICKED
:
{
switch
(
id
)
{
case
BUTTON_CLEAR_LOG
:
{
mainGame
->
lstLog
->
clear
();
mainGame
->
logParam
.
clear
();
return
true
;
break
;
}
}
break
;
}
case
irr
:
:
gui
::
EGET_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
:
{
if
(
mainGame
->
gameConf
.
control_mode
==
1
&&
!
event
.
KeyInput
.
PressedDown
&&
!
mainGame
->
HasFocus
(
EGUIET_EDIT_BOX
))
mainGame
->
textFont
->
setTransparency
(
true
);
return
true
;
break
;
}
case
irr
:
:
KEY_ESCAPE
:
{
if
(
!
mainGame
->
HasFocus
(
EGUIET_EDIT_BOX
))
mainGame
->
device
->
minimizeWindow
();
return
true
;
break
;
}
default:
break
;
...
...
gframe/game.cpp
View file @
7f1d2e63
...
...
@@ -269,6 +269,7 @@ bool Game::Initialize() {
btnEP->setVisible(false);
//tab
wInfos = env->addTabControl(rect<s32>(1, 275, 301, 639), 0, true);
wInfos->setTabExtraWidth(16);
wInfos->setVisible(false);
//info
irr::gui::IGUITab* tabInfo = wInfos->addTab(dataManager.GetSysString(1270));
...
...
@@ -290,26 +291,44 @@ bool Game::Initialize() {
lstLog = env->addListBox(rect<s32>(10, 10, 290, 290), tabLog, LISTBOX_LOG, false);
lstLog->setItemHeight(18);
btnClearLog = env->addButton(rect<s32>(160, 300, 260, 325), tabLog, BUTTON_CLEAR_LOG, dataManager.GetSysString(1272));
//system
irr::gui::IGUITab* tabSystem = wInfos->addTab(dataManager.GetSysString(1273));
chkMAutoPos = env->addCheckBox(false, rect<s32>(20, 20, 280, 45), tabSystem, -1, dataManager.GetSysString(1274));
//helper
irr::gui::IGUITab* tabHelper = wInfos->addTab(dataManager.GetSysString(1298));
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);
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);
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);
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);
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);
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);
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);
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);
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);
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->getCloseButton()->setVisible(false);
...
...
@@ -624,12 +643,12 @@ bool Game::Initialize() {
btnChainIgnore->setVisible(false);
btnChainAlways->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
btnShuffle = env->addButton(rect<s32>(205, 230, 295, 265), 0, BUTTON_CMD_SHUFFLE, dataManager.GetSysString(1297));
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
btnLeaveGame = env->addButton(rect<s32>(205, 5, 295, 80), 0, BUTTON_LEAVE_GAME, L"");
btnLeaveGame->setVisible(false);
...
...
@@ -676,10 +695,9 @@ void Game::MainLoop() {
atkframe += 0.1f;
atkdy = (float)sin(atkframe);
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();
if(dInfo.isStarted) {
DrawBackImage(imageManager.tBackGround);
DrawBackGround();
DrawCards();
DrawMisc();
...
...
@@ -687,12 +705,10 @@ void Game::MainLoop() {
driver->setMaterial(irr::video::IdentityMaterial);
driver->clearZBuffer();
} else if(is_building) {
if(imageManager.tBackGround_deck)
driver->draw2DImage(imageManager.tBackGround_deck, recti(0, 0, 1024, 640), recti(0, 0, imageManager.tBackGround->getOriginalSize().Width, imageManager.tBackGround->getOriginalSize().Height));
DrawBackImage(imageManager.tBackGround_deck);
DrawDeckBd();
} else {
if(imageManager.tBackGround_menu)
driver->draw2DImage(imageManager.tBackGround_menu, recti(0, 0, 1024, 640), recti(0, 0, imageManager.tBackGround->getOriginalSize().Width, imageManager.tBackGround->getOriginalSize().Height));
DrawBackImage(imageManager.tBackGround_menu);
}
DrawGUI();
DrawSpec();
...
...
@@ -970,6 +986,7 @@ void Game::LoadConfig() {
gameConf.draw_field_spell = 1;
gameConf.separate_clear_button = 1;
gameConf.auto_search_limit = -1;
gameConf.chkIgnoreDeckChanges = 0;
fseek(fp, 0, SEEK_END);
int fsize = ftell(fp);
fseek(fp, 0, SEEK_SET);
...
...
@@ -1028,6 +1045,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, "ignore_deck_changes")) {
gameConf.chkIgnoreDeckChanges = atoi(valbuf);
} else {
// options allowing multiple words
sscanf(linebuf, "%s = %240[^\n]", strbuf, valbuf);
...
...
@@ -1084,6 +1103,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, "ignore_deck_changes = %d\n", ((mainGame->chkIgnoreDeckChanges->isChecked()) ? 1 : 0));
fclose(fp);
}
void Game::ShowCardInfo(int code) {
...
...
gframe/game.h
View file @
7f1d2e63
...
...
@@ -38,6 +38,7 @@ struct Config {
int
draw_field_spell
;
int
separate_clear_button
;
int
auto_search_limit
;
int
chkIgnoreDeckChanges
;
};
struct
DuelInfo
{
...
...
@@ -94,12 +95,14 @@ public:
void DrawSelectionLine(irr::video::S3DVertex* vec, bool strip, int width, float* cv);
void DrawBackGround();
void DrawLinkedZones(ClientCard* pcard);
void CheckMutual(ClientCard* pcard, int mark);
void DrawCards();
void DrawCard(ClientCard* pcard);
void DrawMisc();
void DrawStatus(ClientCard* pcard, int x1, int y1, int x2, int y2);
void DrawGUI();
void DrawSpec();
void DrawBackImage(irr::video::ITexture* texture);
void ShowElement(irr::gui::IGUIElement* element, int autoframe = 0);
void HideElement(irr::gui::IGUIElement* element, bool set_action = false);
void PopupElement(irr::gui::IGUIElement* element, int hideframe = 0);
...
...
@@ -214,6 +217,8 @@ public:
irr::gui::IGUICheckBox* chkWaitChain;
irr::gui::IGUICheckBox* chkHideSetname;
irr::gui::IGUICheckBox* chkHideHintButton;
irr::gui::IGUICheckBox* chkIgnoreDeckChanges;
irr::gui::IGUICheckBox* chkAutoSearch;
irr::gui::IGUIListBox* lstLog;
irr::gui::IGUIButton* btnClearLog;
irr::gui::IGUIButton* btnSaveLog;
...
...
@@ -565,6 +570,7 @@ extern unsigned char draw_count;
#define LISTBOX_SINGLEPLAY_LIST 350
#define BUTTON_LOAD_SINGLEPLAY 351
#define BUTTON_CANCEL_SINGLEPLAY 352
#define CHECKBOX_AUTO_SEARCH 360
#define COMBOBOX_SORTTYPE 370
#define BUTTON_MARKS_FILTER 380
...
...
gframe/image_manager.cpp
View file @
7f1d2e63
...
...
@@ -28,7 +28,11 @@ bool ImageManager::Initial() {
tHand
[
2
]
=
driver
->
getTexture
(
"textures/f3.jpg"
);
tBackGround
=
driver
->
getTexture
(
"textures/bg.jpg"
);
tBackGround_menu
=
driver
->
getTexture
(
"textures/bg_menu.jpg"
);
if
(
!
tBackGround_menu
)
tBackGround_menu
=
tBackGround
;
tBackGround_deck
=
driver
->
getTexture
(
"textures/bg_deck.jpg"
);
if
(
!
tBackGround_deck
)
tBackGround_deck
=
tBackGround
;
tField
[
0
]
=
driver
->
getTexture
(
"textures/field2.png"
);
tFieldTransparent
[
0
]
=
driver
->
getTexture
(
"textures/field-transparent2.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) {
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 @
7f1d2e63
...
...
@@ -303,6 +303,7 @@
!
system
1295
取消操作
!
system
1296
完成选择
!
system
1297
切洗手卡
!
system
1298
辅助功能
!
system
1300
禁限卡表:
!
system
1301
卡组列表:
!
system
1302
保存
...
...
@@ -356,6 +357,9 @@
!
system
1353
播放起始于回合:
!
system
1354
不显示卡片系列
!
system
1355
不显示提示按钮
!
system
1356
是否要放弃对卡组的修改?
!
system
1357
不提示保留对卡组的修改
!
system
1358
键入关键字后自动进行搜索
!
system
1360
上一步
!
system
1370
星数↑
!
system
1371
攻击↑
...
...
system.conf
View file @
7f1d2e63
...
...
@@ -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
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