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
55aa85c9
Commit
55aa85c9
authored
May 12, 2019
by
nanahira
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'server' of github.com:purerosefallen/ygopro into server
parents
1abb1092
7debacf6
Changes
12
Hide whitespace changes
Inline
Side-by-side
Showing
12 changed files
with
942 additions
and
152 deletions
+942
-152
gframe/deck_con.cpp
gframe/deck_con.cpp
+565
-69
gframe/deck_con.h
gframe/deck_con.h
+2
-0
gframe/deck_manager.cpp
gframe/deck_manager.cpp
+66
-27
gframe/deck_manager.h
gframe/deck_manager.h
+10
-3
gframe/duelclient.cpp
gframe/duelclient.cpp
+3
-1
gframe/game.cpp
gframe/game.cpp
+113
-30
gframe/game.h
gframe/game.h
+49
-9
gframe/gframe.cpp
gframe/gframe.cpp
+1
-0
gframe/menu_handler.cpp
gframe/menu_handler.cpp
+31
-7
gframe/myfilesystem.h
gframe/myfilesystem.h
+78
-2
strings.conf
strings.conf
+23
-4
system.conf
system.conf
+1
-0
No files found.
gframe/deck_con.cpp
View file @
55aa85c9
...
@@ -59,6 +59,69 @@ static bool check_set_code(const CardDataC& data, int set_code) {
...
@@ -59,6 +59,69 @@ static bool check_set_code(const CardDataC& data, int set_code) {
return
res
;
return
res
;
}
}
inline
bool
havePopupWindow
()
{
return
mainGame
->
wQuery
->
isVisible
()
||
mainGame
->
wCategories
->
isVisible
()
||
mainGame
->
wLinkMarks
->
isVisible
()
||
mainGame
->
wDeckManage
->
isVisible
()
||
mainGame
->
wDMQuery
->
isVisible
();
}
inline
void
refreshDeckList
()
{
irr
::
gui
::
IGUIListBox
*
lstCategories
=
mainGame
->
lstCategories
;
irr
::
gui
::
IGUIListBox
*
lstDecks
=
mainGame
->
lstDecks
;
wchar_t
catepath
[
256
];
deckManager
.
GetCategoryPath
(
catepath
,
lstCategories
->
getSelected
(),
lstCategories
->
getListItem
(
lstCategories
->
getSelected
()));
lstDecks
->
clear
();
FileSystem
::
TraversalDir
(
catepath
,
[
lstDecks
](
const
wchar_t
*
name
,
bool
isdir
)
{
if
(
!
isdir
&&
wcsrchr
(
name
,
'.'
)
&&
!
mywcsncasecmp
(
wcsrchr
(
name
,
'.'
),
L".ydk"
,
4
))
{
size_t
len
=
wcslen
(
name
);
wchar_t
deckname
[
256
];
wcsncpy
(
deckname
,
name
,
len
-
4
);
deckname
[
len
-
4
]
=
0
;
lstDecks
->
addItem
(
deckname
);
}
});
}
inline
void
refreshReadonly
(
int
catesel
)
{
mainGame
->
deckBuilder
.
readonly
=
catesel
<
2
;
mainGame
->
btnSaveDeck
->
setEnabled
(
!
mainGame
->
deckBuilder
.
readonly
);
mainGame
->
btnDeleteDeck
->
setEnabled
(
!
mainGame
->
deckBuilder
.
readonly
);
mainGame
->
btnRenameCategory
->
setEnabled
(
catesel
>
3
);
mainGame
->
btnDeleteCategory
->
setEnabled
(
catesel
>
3
);
mainGame
->
btnNewDeck
->
setEnabled
(
!
mainGame
->
deckBuilder
.
readonly
);
mainGame
->
btnRenameDeck
->
setEnabled
(
!
mainGame
->
deckBuilder
.
readonly
);
mainGame
->
btnDMDeleteDeck
->
setEnabled
(
!
mainGame
->
deckBuilder
.
readonly
);
mainGame
->
btnMoveDeck
->
setEnabled
(
!
mainGame
->
deckBuilder
.
readonly
);
mainGame
->
btnCopyDeck
->
setEnabled
(
!
mainGame
->
deckBuilder
.
readonly
);
}
inline
void
changeCategory
(
int
catesel
)
{
refreshReadonly
(
catesel
);
mainGame
->
RefreshDeck
(
mainGame
->
cbDBCategory
,
mainGame
->
cbDBDecks
);
mainGame
->
cbDBDecks
->
setSelected
(
0
);
deckManager
.
LoadDeck
(
mainGame
->
cbDBCategory
,
mainGame
->
cbDBDecks
);
mainGame
->
deckBuilder
.
is_modified
=
false
;
mainGame
->
deckBuilder
.
prev_category
=
catesel
;
mainGame
->
deckBuilder
.
prev_deck
=
0
;
}
inline
void
showDeckManage
()
{
mainGame
->
RefreshCategoryDeck
(
mainGame
->
cbDBCategory
,
mainGame
->
cbDBDecks
,
false
);
mainGame
->
cbDBCategory
->
setSelected
(
mainGame
->
deckBuilder
.
prev_category
);
mainGame
->
RefreshDeck
(
mainGame
->
cbDBCategory
,
mainGame
->
cbDBDecks
);
mainGame
->
cbDBDecks
->
setSelected
(
mainGame
->
deckBuilder
.
prev_deck
);
irr
::
gui
::
IGUIListBox
*
lstCategories
=
mainGame
->
lstCategories
;
lstCategories
->
clear
();
lstCategories
->
addItem
(
dataManager
.
GetSysString
(
1450
));
lstCategories
->
addItem
(
dataManager
.
GetSysString
(
1451
));
lstCategories
->
addItem
(
dataManager
.
GetSysString
(
1452
));
lstCategories
->
addItem
(
dataManager
.
GetSysString
(
1453
));
FileSystem
::
TraversalDir
(
L"./deck"
,
[
lstCategories
](
const
wchar_t
*
name
,
bool
isdir
)
{
if
(
isdir
)
{
lstCategories
->
addItem
(
name
);
}
});
lstCategories
->
setSelected
(
mainGame
->
deckBuilder
.
prev_category
);
refreshReadonly
(
mainGame
->
deckBuilder
.
prev_category
);
refreshDeckList
();
mainGame
->
lstDecks
->
setSelected
(
mainGame
->
deckBuilder
.
prev_deck
);
mainGame
->
PopupElement
(
mainGame
->
wDeckManage
);
}
void
DeckBuilder
::
Initialize
()
{
void
DeckBuilder
::
Initialize
()
{
mainGame
->
is_building
=
true
;
mainGame
->
is_building
=
true
;
mainGame
->
is_siding
=
false
;
mainGame
->
is_siding
=
false
;
...
@@ -75,7 +138,7 @@ void DeckBuilder::Initialize() {
...
@@ -75,7 +138,7 @@ void DeckBuilder::Initialize() {
mainGame
->
btnSideSort
->
setVisible
(
false
);
mainGame
->
btnSideSort
->
setVisible
(
false
);
mainGame
->
btnSideReload
->
setVisible
(
false
);
mainGame
->
btnSideReload
->
setVisible
(
false
);
filterList
=
deckManager
.
_lfList
[
0
].
content
;
filterList
=
deckManager
.
_lfList
[
0
].
content
;
mainGame
->
cb
DB
LFList
->
setSelected
(
0
);
mainGame
->
cbLFList
->
setSelected
(
0
);
ClearSearch
();
ClearSearch
();
mouse_pos
.
set
(
0
,
0
);
mouse_pos
.
set
(
0
,
0
);
hovered_code
=
0
;
hovered_code
=
0
;
...
@@ -85,6 +148,10 @@ void DeckBuilder::Initialize() {
...
@@ -85,6 +148,10 @@ void DeckBuilder::Initialize() {
is_draging
=
false
;
is_draging
=
false
;
is_starting_dragging
=
false
;
is_starting_dragging
=
false
;
prev_deck
=
mainGame
->
cbDBDecks
->
getSelected
();
prev_deck
=
mainGame
->
cbDBDecks
->
getSelected
();
prev_category
=
mainGame
->
cbDBCategory
->
getSelected
();
readonly
=
prev_category
<
2
;
mainGame
->
btnSaveDeck
->
setEnabled
(
!
readonly
);
mainGame
->
btnDeleteDeck
->
setEnabled
(
!
readonly
);
prev_operation
=
0
;
prev_operation
=
0
;
prev_sel
=
-
1
;
prev_sel
=
-
1
;
is_modified
=
false
;
is_modified
=
false
;
...
@@ -106,9 +173,12 @@ void DeckBuilder::Terminate() {
...
@@ -106,9 +173,12 @@ void DeckBuilder::Terminate() {
mainGame
->
ClearTextures
();
mainGame
->
ClearTextures
();
mainGame
->
showingcode
=
0
;
mainGame
->
showingcode
=
0
;
mainGame
->
scrFilter
->
setVisible
(
false
);
mainGame
->
scrFilter
->
setVisible
(
false
);
int
sel
=
mainGame
->
cbDBDecks
->
getSelected
();
int
catesel
=
mainGame
->
cbDBCategory
->
getSelected
();
if
(
sel
>=
0
)
if
(
catesel
>=
0
)
BufferIO
::
CopyWStr
(
mainGame
->
cbDBDecks
->
getItem
(
sel
),
mainGame
->
gameConf
.
lastdeck
,
64
);
BufferIO
::
CopyWStr
(
mainGame
->
cbDBCategory
->
getItem
(
catesel
),
mainGame
->
gameConf
.
lastcategory
,
64
);
int
decksel
=
mainGame
->
cbDBDecks
->
getSelected
();
if
(
decksel
>=
0
)
BufferIO
::
CopyWStr
(
mainGame
->
cbDBDecks
->
getItem
(
decksel
),
mainGame
->
gameConf
.
lastdeck
,
64
);
if
(
exit_on_return
)
if
(
exit_on_return
)
mainGame
->
device
->
closeDevice
();
mainGame
->
device
->
closeDevice
();
}
}
...
@@ -118,13 +188,25 @@ bool DeckBuilder::OnEvent(const irr::SEvent& event) {
...
@@ -118,13 +188,25 @@ bool DeckBuilder::OnEvent(const irr::SEvent& event) {
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
();
if
(
mainGame
->
wCategories
->
isVisible
()
&&
id
!=
BUTTON_CATEGORY_OK
)
if
(((
mainGame
->
wCategories
->
isVisible
()
&&
id
!=
BUTTON_CATEGORY_OK
)
||
break
;
(
mainGame
->
wQuery
->
isVisible
()
&&
id
!=
BUTTON_YES
&&
id
!=
BUTTON_NO
)
||
if
(
mainGame
->
wQuery
->
isVisible
()
&&
id
!=
BUTTON_YES
&&
id
!=
BUTTON_NO
)
(
mainGame
->
wLinkMarks
->
isVisible
()
&&
id
!=
BUTTON_MARKERS_OK
)
||
break
;
(
mainGame
->
wDMQuery
->
isVisible
()
&&
id
!=
BUTTON_DM_OK
&&
id
!=
BUTTON_DM_CANCEL
)
||
if
(
mainGame
->
wLinkMarks
->
isVisible
()
&&
id
!=
BUTTON_MARKERS_OK
)
(
mainGame
->
wDeckManage
->
isVisible
()
&&
!
(
id
>=
WINDOW_DECK_MANAGE
&&
id
<=
COMBOBOX_LFLIST
)))
&&
event
.
GUIEvent
.
EventType
!=
irr
::
gui
::
EGET_LISTBOX_CHANGED
&&
event
.
GUIEvent
.
EventType
!=
irr
::
gui
::
EGET_COMBO_BOX_CHANGED
)
{
if
(
mainGame
->
wDMQuery
->
isVisible
())
mainGame
->
wDMQuery
->
getParent
()
->
bringToFront
(
mainGame
->
wDMQuery
);
break
;
break
;
}
switch
(
event
.
GUIEvent
.
EventType
)
{
switch
(
event
.
GUIEvent
.
EventType
)
{
case
irr
:
:
gui
::
EGET_ELEMENT_CLOSED
:
{
if
(
id
==
WINDOW_DECK_MANAGE
)
{
mainGame
->
HideElement
(
mainGame
->
wDeckManage
);
return
true
;
break
;
}
}
case
irr
:
:
gui
::
EGET_BUTTON_CLICKED
:
{
case
irr
:
:
gui
::
EGET_BUTTON_CLICKED
:
{
soundManager
.
PlaySoundEffect
(
SOUND_BUTTON
);
soundManager
.
PlaySoundEffect
(
SOUND_BUTTON
);
switch
(
id
)
{
switch
(
id
)
{
...
@@ -148,7 +230,11 @@ bool DeckBuilder::OnEvent(const irr::SEvent& event) {
...
@@ -148,7 +230,11 @@ 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
>=
0
&&
deckManager
.
SaveDeck
(
deckManager
.
current_deck
,
mainGame
->
cbDBDecks
->
getItem
(
sel
)))
{
if
(
sel
==
-
1
)
break
;
wchar_t
filepath
[
256
];
deckManager
.
GetDeckFile
(
filepath
,
mainGame
->
cbDBCategory
,
mainGame
->
cbDBDecks
);
if
(
deckManager
.
SaveDeck
(
deckManager
.
current_deck
,
filepath
))
{
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
;
is_modified
=
false
;
...
@@ -172,53 +258,17 @@ bool DeckBuilder::OnEvent(const irr::SEvent& event) {
...
@@ -172,53 +258,17 @@ bool DeckBuilder::OnEvent(const irr::SEvent& event) {
mainGame
->
cbDBDecks
->
addItem
(
dname
);
mainGame
->
cbDBDecks
->
addItem
(
dname
);
mainGame
->
cbDBDecks
->
setSelected
(
mainGame
->
cbDBDecks
->
getItemCount
()
-
1
);
mainGame
->
cbDBDecks
->
setSelected
(
mainGame
->
cbDBDecks
->
getItemCount
()
-
1
);
}
}
if
(
deckManager
.
SaveDeck
(
deckManager
.
current_deck
,
dname
))
{
wchar_t
catepath
[
256
];
deckManager
.
GetCategoryPath
(
catepath
,
mainGame
->
cbDBCategory
->
getSelected
(),
mainGame
->
cbDBCategory
->
getText
());
wchar_t
filepath
[
256
];
myswprintf
(
filepath
,
L"%ls/%ls.ydk"
,
catepath
,
dname
);
if
(
deckManager
.
SaveDeck
(
deckManager
.
current_deck
,
filepath
))
{
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
;
is_modified
=
false
;
}
}
break
;
break
;
}
}
case
BUTTON_RENAME_DECK
:
{
int
sel
=
mainGame
->
cbDBDecks
->
getSelected
();
if
(
sel
==
-
1
)
break
;
mainGame
->
gMutex
.
Lock
();
mainGame
->
wRenameDeck
->
setText
(
dataManager
.
GetSysString
(
1376
));
mainGame
->
ebREName
->
setText
(
mainGame
->
cbDBDecks
->
getItem
(
sel
));
mainGame
->
PopupElement
(
mainGame
->
wRenameDeck
);
mainGame
->
gMutex
.
Unlock
();
prev_operation
=
id
;
prev_sel
=
sel
;
break
;
}
case
BUTTON_RENAME_DECK_SAVE
:
{
mainGame
->
HideElement
(
mainGame
->
wRenameDeck
);
if
(
prev_operation
==
BUTTON_RENAME_DECK
)
{
wchar_t
newname
[
256
];
BufferIO
::
CopyWStr
(
mainGame
->
ebREName
->
getText
(),
newname
,
256
);
if
(
mywcsncasecmp
(
newname
+
wcslen
(
newname
)
-
4
,
L""
,
4
))
{
myswprintf
(
newname
,
L"%ls"
,
mainGame
->
ebREName
->
getText
());
}
if
(
DeckManager
::
RenameDeck
(
mainGame
->
cbDBDecks
->
getItem
(
prev_sel
),
newname
))
{
mainGame
->
RefreshDeck
(
mainGame
->
cbDBDecks
);
mainGame
->
cbDBDecks
->
setSelected
(
prev_sel
);
mainGame
->
stACMessage
->
setText
(
dataManager
.
GetSysString
(
1375
));
mainGame
->
PopupElement
(
mainGame
->
wACMessage
,
20
);
}
else
{
mainGame
->
env
->
addMessageBox
(
L""
,
dataManager
.
GetSysString
(
1365
));
}
}
prev_operation
=
0
;
prev_sel
=
-
1
;
break
;
}
case
BUTTON_RENAME_DECK_CANCEL
:
{
mainGame
->
HideElement
(
mainGame
->
wRenameDeck
);
prev_operation
=
0
;
prev_sel
=
-
1
;
break
;
}
case
BUTTON_DECK_CODE
:
{
case
BUTTON_DECK_CODE
:
{
int
sel
=
mainGame
->
cbDBDecks
->
getSelected
();
int
sel
=
mainGame
->
cbDBDecks
->
getSelected
();
if
(
sel
==
-
1
)
if
(
sel
==
-
1
)
...
@@ -275,7 +325,7 @@ bool DeckBuilder::OnEvent(const irr::SEvent& event) {
...
@@ -275,7 +325,7 @@ bool DeckBuilder::OnEvent(const irr::SEvent& event) {
break
;
break
;
}
}
case
BUTTON_LEAVE_GAME
:
{
case
BUTTON_LEAVE_GAME
:
{
if
(
is_modified
&&
!
mainGame
->
chkIgnoreDeckChanges
->
isChecked
())
{
if
(
is_modified
&&
!
readonly
&&
!
mainGame
->
chkIgnoreDeckChanges
->
isChecked
())
{
mainGame
->
gMutex
.
Lock
();
mainGame
->
gMutex
.
Lock
();
mainGame
->
SetStaticText
(
mainGame
->
stQMessage
,
310
,
mainGame
->
guiFont
,
dataManager
.
GetSysString
(
1356
));
mainGame
->
SetStaticText
(
mainGame
->
stQMessage
,
310
,
mainGame
->
guiFont
,
dataManager
.
GetSysString
(
1356
));
mainGame
->
PopupElement
(
mainGame
->
wQuery
);
mainGame
->
PopupElement
(
mainGame
->
wQuery
);
...
@@ -311,6 +361,373 @@ bool DeckBuilder::OnEvent(const irr::SEvent& event) {
...
@@ -311,6 +361,373 @@ bool DeckBuilder::OnEvent(const irr::SEvent& event) {
InstantSearch
();
InstantSearch
();
break
;
break
;
}
}
case
BUTTON_MANAGE_DECK
:
{
if
(
is_modified
&&
!
readonly
&&
!
mainGame
->
chkIgnoreDeckChanges
->
isChecked
())
{
mainGame
->
gMutex
.
Lock
();
mainGame
->
SetStaticText
(
mainGame
->
stQMessage
,
310
,
mainGame
->
guiFont
,
dataManager
.
GetSysString
(
1356
));
mainGame
->
PopupElement
(
mainGame
->
wQuery
);
mainGame
->
gMutex
.
Unlock
();
prev_operation
=
id
;
break
;
}
showDeckManage
();
break
;
}
case
BUTTON_NEW_CATEGORY
:
{
mainGame
->
gMutex
.
Lock
();
mainGame
->
stDMMessage
->
setText
(
dataManager
.
GetSysString
(
1469
));
mainGame
->
ebDMName
->
setVisible
(
true
);
mainGame
->
ebDMName
->
setText
(
L""
);
mainGame
->
PopupElement
(
mainGame
->
wDMQuery
);
mainGame
->
gMutex
.
Unlock
();
prev_operation
=
id
;
break
;
}
case
BUTTON_RENAME_CATEGORY
:
{
if
(
mainGame
->
lstCategories
->
getSelected
()
<
4
)
break
;
mainGame
->
gMutex
.
Lock
();
mainGame
->
stDMMessage
->
setText
(
dataManager
.
GetSysString
(
1469
));
mainGame
->
ebDMName
->
setVisible
(
true
);
mainGame
->
ebDMName
->
setText
(
L""
);
mainGame
->
PopupElement
(
mainGame
->
wDMQuery
);
mainGame
->
gMutex
.
Unlock
();
prev_operation
=
id
;
break
;
}
case
BUTTON_DELETE_CATEGORY
:
{
mainGame
->
gMutex
.
Lock
();
mainGame
->
stDMMessage
->
setText
(
dataManager
.
GetSysString
(
1470
));
mainGame
->
stDMMessage2
->
setVisible
(
true
);
mainGame
->
stDMMessage2
->
setText
(
mainGame
->
lstCategories
->
getListItem
(
mainGame
->
lstCategories
->
getSelected
()));
mainGame
->
PopupElement
(
mainGame
->
wDMQuery
);
mainGame
->
gMutex
.
Unlock
();
prev_operation
=
id
;
break
;
}
case
BUTTON_NEW_DECK
:
{
mainGame
->
gMutex
.
Lock
();
mainGame
->
stDMMessage
->
setText
(
dataManager
.
GetSysString
(
1471
));
mainGame
->
ebDMName
->
setVisible
(
true
);
mainGame
->
ebDMName
->
setText
(
L""
);
mainGame
->
PopupElement
(
mainGame
->
wDMQuery
);
mainGame
->
gMutex
.
Unlock
();
prev_operation
=
id
;
break
;
}
case
BUTTON_RENAME_DECK
:
{
mainGame
->
gMutex
.
Lock
();
mainGame
->
stDMMessage
->
setText
(
dataManager
.
GetSysString
(
1471
));
mainGame
->
ebDMName
->
setVisible
(
true
);
mainGame
->
ebDMName
->
setText
(
L""
);
mainGame
->
PopupElement
(
mainGame
->
wDMQuery
);
mainGame
->
gMutex
.
Unlock
();
prev_operation
=
id
;
break
;
}
case
BUTTON_DELETE_DECK_DM
:
{
mainGame
->
gMutex
.
Lock
();
mainGame
->
stDMMessage
->
setText
(
dataManager
.
GetSysString
(
1337
));
mainGame
->
stDMMessage2
->
setVisible
(
true
);
mainGame
->
stDMMessage2
->
setText
(
mainGame
->
lstDecks
->
getListItem
(
mainGame
->
lstDecks
->
getSelected
()));
mainGame
->
PopupElement
(
mainGame
->
wDMQuery
);
mainGame
->
gMutex
.
Unlock
();
prev_operation
=
id
;
break
;
}
case
BUTTON_MOVE_DECK
:
{
mainGame
->
gMutex
.
Lock
();
mainGame
->
stDMMessage
->
setText
(
dataManager
.
GetSysString
(
1472
));
mainGame
->
cbDMCategory
->
setVisible
(
true
);
mainGame
->
cbDMCategory
->
clear
();
int
catesel
=
mainGame
->
lstCategories
->
getSelected
();
if
(
catesel
!=
2
)
mainGame
->
cbDMCategory
->
addItem
(
dataManager
.
GetSysString
(
1452
));
for
(
int
i
=
4
;
i
<
mainGame
->
lstCategories
->
getItemCount
();
i
++
)
{
if
(
i
!=
catesel
)
mainGame
->
cbDMCategory
->
addItem
(
mainGame
->
lstCategories
->
getListItem
(
i
));
}
mainGame
->
PopupElement
(
mainGame
->
wDMQuery
);
mainGame
->
gMutex
.
Unlock
();
prev_operation
=
id
;
break
;
}
case
BUTTON_COPY_DECK
:
{
mainGame
->
gMutex
.
Lock
();
mainGame
->
stDMMessage
->
setText
(
dataManager
.
GetSysString
(
1473
));
mainGame
->
cbDMCategory
->
setVisible
(
true
);
mainGame
->
cbDMCategory
->
clear
();
int
catesel
=
mainGame
->
lstCategories
->
getSelected
();
if
(
catesel
!=
2
)
mainGame
->
cbDMCategory
->
addItem
(
dataManager
.
GetSysString
(
1452
));
for
(
int
i
=
4
;
i
<
mainGame
->
lstCategories
->
getItemCount
();
i
++
)
{
if
(
i
!=
catesel
)
mainGame
->
cbDMCategory
->
addItem
(
mainGame
->
lstCategories
->
getListItem
(
i
));
}
mainGame
->
PopupElement
(
mainGame
->
wDMQuery
);
mainGame
->
gMutex
.
Unlock
();
prev_operation
=
id
;
break
;
}
case
BUTTON_DM_OK
:
{
switch
(
prev_operation
)
{
case
BUTTON_NEW_CATEGORY
:
{
int
catesel
=
0
;
const
wchar_t
*
catename
=
mainGame
->
ebDMName
->
getText
();
if
(
deckManager
.
CreateCategory
(
catename
))
{
mainGame
->
cbDBCategory
->
addItem
(
catename
);
mainGame
->
lstCategories
->
addItem
(
catename
);
catesel
=
mainGame
->
lstCategories
->
getItemCount
()
-
1
;
}
else
{
for
(
int
i
=
3
;
i
<
mainGame
->
lstCategories
->
getItemCount
();
i
++
)
{
if
(
!
mywcsncasecmp
(
mainGame
->
lstCategories
->
getListItem
(
i
),
catename
,
256
))
{
catesel
=
i
;
mainGame
->
stACMessage
->
setText
(
dataManager
.
GetSysString
(
1474
));
mainGame
->
PopupElement
(
mainGame
->
wACMessage
,
20
);
break
;
}
}
}
if
(
catesel
>
0
)
{
mainGame
->
lstCategories
->
setSelected
(
catesel
);
refreshDeckList
();
mainGame
->
lstDecks
->
setSelected
(
0
);
mainGame
->
cbDBCategory
->
setSelected
(
catesel
);
changeCategory
(
catesel
);
}
break
;
}
case
BUTTON_RENAME_CATEGORY
:
{
int
catesel
=
mainGame
->
lstCategories
->
getSelected
();
const
wchar_t
*
oldcatename
=
mainGame
->
lstCategories
->
getListItem
(
catesel
);
const
wchar_t
*
newcatename
=
mainGame
->
ebDMName
->
getText
();
if
(
deckManager
.
RenameCategory
(
oldcatename
,
newcatename
))
{
mainGame
->
cbDBCategory
->
removeItem
(
catesel
);
mainGame
->
cbDBCategory
->
addItem
(
newcatename
);
mainGame
->
lstCategories
->
removeItem
(
catesel
);
mainGame
->
lstCategories
->
addItem
(
newcatename
);
catesel
=
mainGame
->
lstCategories
->
getItemCount
()
-
1
;
}
else
{
catesel
=
0
;
for
(
int
i
=
3
;
i
<
mainGame
->
lstCategories
->
getItemCount
();
i
++
)
{
if
(
!
mywcsncasecmp
(
mainGame
->
lstCategories
->
getListItem
(
i
),
newcatename
,
256
))
{
catesel
=
i
;
mainGame
->
stACMessage
->
setText
(
dataManager
.
GetSysString
(
1474
));
mainGame
->
PopupElement
(
mainGame
->
wACMessage
,
20
);
break
;
}
}
}
if
(
catesel
>
0
)
{
mainGame
->
lstCategories
->
setSelected
(
catesel
);
refreshDeckList
();
mainGame
->
lstDecks
->
setSelected
(
0
);
mainGame
->
cbDBCategory
->
setSelected
(
catesel
);
changeCategory
(
catesel
);
}
break
;
}
case
BUTTON_DELETE_CATEGORY
:
{
int
catesel
=
mainGame
->
lstCategories
->
getSelected
();
const
wchar_t
*
catename
=
mainGame
->
lstCategories
->
getListItem
(
catesel
);
if
(
deckManager
.
DeleteCategory
(
catename
))
{
mainGame
->
cbDBCategory
->
removeItem
(
catesel
);
mainGame
->
lstCategories
->
removeItem
(
catesel
);
catesel
=
2
;
mainGame
->
lstCategories
->
setSelected
(
catesel
);
refreshDeckList
();
mainGame
->
lstDecks
->
setSelected
(
0
);
mainGame
->
cbDBCategory
->
setSelected
(
catesel
);
changeCategory
(
catesel
);
}
else
{
mainGame
->
stACMessage
->
setText
(
dataManager
.
GetSysString
(
1476
));
mainGame
->
PopupElement
(
mainGame
->
wACMessage
,
20
);
}
break
;
}
case
BUTTON_NEW_DECK
:
{
const
wchar_t
*
deckname
=
mainGame
->
ebDMName
->
getText
();
wchar_t
catepath
[
256
];
deckManager
.
GetCategoryPath
(
catepath
,
mainGame
->
cbDBCategory
->
getSelected
(),
mainGame
->
cbDBCategory
->
getText
());
wchar_t
filepath
[
256
];
myswprintf
(
filepath
,
L"%ls/%ls.ydk"
,
catepath
,
deckname
);
bool
res
=
false
;
if
(
!
FileSystem
::
IsFileExists
(
filepath
))
{
deckManager
.
current_deck
.
main
.
clear
();
deckManager
.
current_deck
.
extra
.
clear
();
deckManager
.
current_deck
.
side
.
clear
();
res
=
deckManager
.
SaveDeck
(
deckManager
.
current_deck
,
filepath
);
refreshDeckList
();
changeCategory
(
mainGame
->
lstCategories
->
getSelected
());
}
for
(
int
i
=
0
;
i
<
mainGame
->
lstDecks
->
getItemCount
();
i
++
)
{
if
(
!
mywcsncasecmp
(
mainGame
->
lstDecks
->
getListItem
(
i
),
deckname
,
256
))
{
deckManager
.
LoadDeck
(
filepath
);
prev_deck
=
i
;
mainGame
->
cbDBDecks
->
setSelected
(
prev_deck
);
mainGame
->
lstDecks
->
setSelected
(
prev_deck
);
if
(
!
res
)
{
mainGame
->
stACMessage
->
setText
(
dataManager
.
GetSysString
(
1475
));
mainGame
->
PopupElement
(
mainGame
->
wACMessage
,
20
);
}
break
;
}
}
break
;
}
case
BUTTON_RENAME_DECK
:
{
int
catesel
=
mainGame
->
lstCategories
->
getSelected
();
int
decksel
=
mainGame
->
lstDecks
->
getSelected
();
const
wchar_t
*
catename
=
mainGame
->
lstCategories
->
getListItem
(
catesel
);
wchar_t
oldfilepath
[
256
];
deckManager
.
GetDeckFile
(
oldfilepath
,
mainGame
->
cbDBCategory
,
mainGame
->
cbDBDecks
);
const
wchar_t
*
newdeckname
=
mainGame
->
ebDMName
->
getText
();
wchar_t
newfilepath
[
256
];
if
(
catesel
==
2
)
{
myswprintf
(
newfilepath
,
L"./deck/%ls.ydk"
,
newdeckname
);
}
else
{
myswprintf
(
newfilepath
,
L"./deck/%ls/%ls.ydk"
,
catename
,
newdeckname
);
}
bool
res
=
false
;
if
(
!
FileSystem
::
IsFileExists
(
newfilepath
))
{
res
=
FileSystem
::
Rename
(
oldfilepath
,
newfilepath
);
}
refreshDeckList
();
changeCategory
(
catesel
);
for
(
int
i
=
0
;
i
<
mainGame
->
lstDecks
->
getItemCount
();
i
++
)
{
if
(
!
mywcsncasecmp
(
mainGame
->
lstDecks
->
getListItem
(
i
),
newdeckname
,
256
))
{
deckManager
.
LoadDeck
(
newfilepath
);
prev_deck
=
i
;
mainGame
->
cbDBDecks
->
setSelected
(
prev_deck
);
mainGame
->
lstDecks
->
setSelected
(
prev_deck
);
if
(
!
res
)
{
mainGame
->
stACMessage
->
setText
(
dataManager
.
GetSysString
(
1475
));
mainGame
->
PopupElement
(
mainGame
->
wACMessage
,
20
);
}
break
;
}
}
break
;
}
case
BUTTON_DELETE_DECK_DM
:
{
int
decksel
=
mainGame
->
lstDecks
->
getSelected
();
wchar_t
filepath
[
256
];
deckManager
.
GetDeckFile
(
filepath
,
mainGame
->
cbDBCategory
,
mainGame
->
cbDBDecks
);
if
(
deckManager
.
DeleteDeck
(
filepath
))
{
mainGame
->
lstDecks
->
removeItem
(
decksel
);
mainGame
->
cbDBDecks
->
removeItem
(
decksel
);
decksel
--
;
if
(
decksel
==
-
1
)
{
decksel
=
mainGame
->
lstDecks
->
getItemCount
()
-
1
;
}
if
(
decksel
!=
-
1
)
{
mainGame
->
lstDecks
->
setSelected
(
decksel
);
mainGame
->
cbDBDecks
->
setSelected
(
decksel
);
deckManager
.
LoadDeck
(
mainGame
->
cbDBCategory
,
mainGame
->
cbDBDecks
);
}
prev_deck
=
decksel
;
}
else
{
mainGame
->
stACMessage
->
setText
(
dataManager
.
GetSysString
(
1476
));
mainGame
->
PopupElement
(
mainGame
->
wACMessage
,
20
);
}
break
;
}
case
BUTTON_MOVE_DECK
:
{
int
oldcatesel
=
mainGame
->
lstCategories
->
getSelected
();
int
newcatesel
=
mainGame
->
cbDMCategory
->
getSelected
();
int
decksel
=
mainGame
->
lstDecks
->
getSelected
();
const
wchar_t
*
newcatename
=
mainGame
->
cbDMCategory
->
getText
();
const
wchar_t
*
olddeckname
=
mainGame
->
lstDecks
->
getListItem
(
decksel
);
wchar_t
deckname
[
256
];
BufferIO
::
CopyWStr
(
olddeckname
,
deckname
,
256
);
wchar_t
oldfilepath
[
256
];
deckManager
.
GetDeckFile
(
oldfilepath
,
mainGame
->
cbDBCategory
,
mainGame
->
cbDBDecks
);
wchar_t
newfilepath
[
256
];
if
(
oldcatesel
!=
2
&&
newcatesel
==
0
)
{
myswprintf
(
newfilepath
,
L"./deck/%ls.ydk"
,
deckname
);
}
else
{
myswprintf
(
newfilepath
,
L"./deck/%ls/%ls.ydk"
,
newcatename
,
deckname
);
}
bool
res
=
false
;
if
(
!
FileSystem
::
IsFileExists
(
newfilepath
))
{
res
=
FileSystem
::
Rename
(
oldfilepath
,
newfilepath
);
}
mainGame
->
lstCategories
->
setSelected
(
newcatename
);
int
catesel
=
mainGame
->
lstCategories
->
getSelected
();
refreshDeckList
();
mainGame
->
cbDBCategory
->
setSelected
(
catesel
);
changeCategory
(
catesel
);
for
(
int
i
=
0
;
i
<
mainGame
->
lstDecks
->
getItemCount
();
i
++
)
{
if
(
!
mywcsncasecmp
(
mainGame
->
lstDecks
->
getListItem
(
i
),
deckname
,
256
))
{
deckManager
.
LoadDeck
(
newfilepath
);
prev_deck
=
i
;
mainGame
->
cbDBDecks
->
setSelected
(
prev_deck
);
mainGame
->
lstDecks
->
setSelected
(
prev_deck
);
if
(
!
res
)
{
mainGame
->
stACMessage
->
setText
(
dataManager
.
GetSysString
(
1475
));
mainGame
->
PopupElement
(
mainGame
->
wACMessage
,
20
);
}
break
;
}
}
break
;
}
case
BUTTON_COPY_DECK
:
{
int
oldcatesel
=
mainGame
->
lstCategories
->
getSelected
();
int
newcatesel
=
mainGame
->
cbDMCategory
->
getSelected
();
int
decksel
=
mainGame
->
lstDecks
->
getSelected
();
const
wchar_t
*
newcatename
=
mainGame
->
cbDMCategory
->
getText
();
const
wchar_t
*
olddeckname
=
mainGame
->
lstDecks
->
getListItem
(
decksel
);
wchar_t
deckname
[
256
];
BufferIO
::
CopyWStr
(
olddeckname
,
deckname
,
256
);
wchar_t
newfilepath
[
256
];
if
(
oldcatesel
!=
2
&&
newcatesel
==
0
)
{
myswprintf
(
newfilepath
,
L"./deck/%ls.ydk"
,
deckname
);
}
else
{
myswprintf
(
newfilepath
,
L"./deck/%ls/%ls.ydk"
,
newcatename
,
deckname
);
}
bool
res
=
false
;
if
(
!
FileSystem
::
IsFileExists
(
newfilepath
))
{
res
=
deckManager
.
SaveDeck
(
deckManager
.
current_deck
,
newfilepath
);
}
mainGame
->
lstCategories
->
setSelected
(
newcatename
);
int
catesel
=
mainGame
->
lstCategories
->
getSelected
();
refreshDeckList
();
mainGame
->
cbDBCategory
->
setSelected
(
catesel
);
changeCategory
(
catesel
);
for
(
int
i
=
0
;
i
<
mainGame
->
lstDecks
->
getItemCount
();
i
++
)
{
if
(
!
mywcsncasecmp
(
mainGame
->
lstDecks
->
getListItem
(
i
),
deckname
,
256
))
{
deckManager
.
LoadDeck
(
newfilepath
);
prev_deck
=
i
;
mainGame
->
cbDBDecks
->
setSelected
(
prev_deck
);
mainGame
->
lstDecks
->
setSelected
(
prev_deck
);
if
(
!
res
)
{
mainGame
->
stACMessage
->
setText
(
dataManager
.
GetSysString
(
1475
));
mainGame
->
PopupElement
(
mainGame
->
wACMessage
,
20
);
}
break
;
}
}
break
;
}
default:
break
;
}
prev_operation
=
0
;
mainGame
->
HideElement
(
mainGame
->
wDMQuery
);
mainGame
->
stDMMessage2
->
setVisible
(
false
);
mainGame
->
ebDMName
->
setVisible
(
false
);
mainGame
->
cbDMCategory
->
setVisible
(
false
);
break
;
}
case
BUTTON_DM_CANCEL
:
{
mainGame
->
HideElement
(
mainGame
->
wDMQuery
);
mainGame
->
stDMMessage2
->
setVisible
(
false
);
mainGame
->
ebDMName
->
setVisible
(
false
);
mainGame
->
cbDMCategory
->
setVisible
(
false
);
break
;
}
case
BUTTON_SIDE_OK
:
{
case
BUTTON_SIDE_OK
:
{
if
(
deckManager
.
current_deck
.
main
.
size
()
!=
pre_mainc
||
deckManager
.
current_deck
.
extra
.
size
()
!=
pre_extrac
if
(
deckManager
.
current_deck
.
main
.
size
()
!=
pre_mainc
||
deckManager
.
current_deck
.
extra
.
size
()
!=
pre_extrac
||
deckManager
.
current_deck
.
side
.
size
()
!=
pre_sidec
)
{
||
deckManager
.
current_deck
.
side
.
size
()
!=
pre_sidec
)
{
...
@@ -333,7 +750,7 @@ bool DeckBuilder::OnEvent(const irr::SEvent& event) {
...
@@ -333,7 +750,7 @@ bool DeckBuilder::OnEvent(const irr::SEvent& event) {
break
;
break
;
}
}
case
BUTTON_SIDE_RELOAD
:
{
case
BUTTON_SIDE_RELOAD
:
{
deckManager
.
LoadDeck
(
mainGame
->
cb
DeckSelect
->
getItem
(
mainGame
->
cbDeckSelect
->
getSelected
())
);
deckManager
.
LoadDeck
(
mainGame
->
cb
CategorySelect
,
mainGame
->
cbDeckSelect
);
break
;
break
;
}
}
case
BUTTON_MSG_OK
:
{
case
BUTTON_MSG_OK
:
{
...
@@ -351,14 +768,17 @@ bool DeckBuilder::OnEvent(const irr::SEvent& event) {
...
@@ -351,14 +768,17 @@ bool DeckBuilder::OnEvent(const irr::SEvent& event) {
deckManager
.
current_deck
.
side
.
clear
();
deckManager
.
current_deck
.
side
.
clear
();
}
else
if
(
prev_operation
==
BUTTON_DELETE_DECK
)
{
}
else
if
(
prev_operation
==
BUTTON_DELETE_DECK
)
{
int
sel
=
prev_sel
;
int
sel
=
prev_sel
;
if
(
deckManager
.
DeleteDeck
(
deckManager
.
current_deck
,
mainGame
->
cbDBDecks
->
getItem
(
sel
)))
{
mainGame
->
cbDBDecks
->
setSelected
(
sel
);
wchar_t
filepath
[
256
];
deckManager
.
GetDeckFile
(
filepath
,
mainGame
->
cbDBCategory
,
mainGame
->
cbDBDecks
);
if
(
deckManager
.
DeleteDeck
(
filepath
))
{
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
->
cbDB
Decks
->
getItem
(
sel
)
);
deckManager
.
LoadDeck
(
mainGame
->
cbDB
Category
,
mainGame
->
cbDBDecks
);
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
;
prev_deck
=
sel
;
...
@@ -367,18 +787,26 @@ bool DeckBuilder::OnEvent(const irr::SEvent& event) {
...
@@ -367,18 +787,26 @@ bool DeckBuilder::OnEvent(const irr::SEvent& event) {
prev_sel
=
-
1
;
prev_sel
=
-
1
;
}
else
if
(
prev_operation
==
BUTTON_LEAVE_GAME
)
{
}
else
if
(
prev_operation
==
BUTTON_LEAVE_GAME
)
{
Terminate
();
Terminate
();
}
else
if
(
prev_operation
==
COMBOBOX_DBCATEGORY
)
{
int
catesel
=
mainGame
->
cbDBCategory
->
getSelected
();
changeCategory
(
catesel
);
}
else
if
(
prev_operation
==
COMBOBOX_DBDECKS
)
{
}
else
if
(
prev_operation
==
COMBOBOX_DBDECKS
)
{
int
sel
=
mainGame
->
cbDBDecks
->
getSelected
();
int
deck
sel
=
mainGame
->
cbDBDecks
->
getSelected
();
deckManager
.
LoadDeck
(
mainGame
->
cbDB
Decks
->
getItem
(
sel
)
);
deckManager
.
LoadDeck
(
mainGame
->
cbDB
Category
,
mainGame
->
cbDBDecks
);
prev_deck
=
sel
;
prev_deck
=
deck
sel
;
is_modified
=
false
;
is_modified
=
false
;
}
else
if
(
prev_operation
==
BUTTON_MANAGE_DECK
)
{
showDeckManage
();
}
}
prev_operation
=
0
;
prev_operation
=
0
;
break
;
break
;
}
}
case
BUTTON_NO
:
{
case
BUTTON_NO
:
{
mainGame
->
HideElement
(
mainGame
->
wQuery
);
mainGame
->
HideElement
(
mainGame
->
wQuery
);
if
(
prev_operation
==
COMBOBOX_DBDECKS
)
{
if
(
prev_operation
==
COMBOBOX_DBCATEGORY
)
{
mainGame
->
cbDBCategory
->
setSelected
(
prev_category
);
}
else
if
(
prev_operation
==
COMBOBOX_DBDECKS
)
{
mainGame
->
cbDBDecks
->
setSelected
(
prev_deck
);
mainGame
->
cbDBDecks
->
setSelected
(
prev_deck
);
}
}
prev_operation
=
0
;
prev_operation
=
0
;
...
@@ -443,12 +871,39 @@ bool DeckBuilder::OnEvent(const irr::SEvent& event) {
...
@@ -443,12 +871,39 @@ bool DeckBuilder::OnEvent(const irr::SEvent& event) {
}
}
case
irr
:
:
gui
::
EGET_COMBO_BOX_CHANGED
:
{
case
irr
:
:
gui
::
EGET_COMBO_BOX_CHANGED
:
{
switch
(
id
)
{
switch
(
id
)
{
case
COMBOBOX_DBLFLIST
:
{
case
COMBOBOX_LFLIST
:
{
filterList
=
deckManager
.
_lfList
[
mainGame
->
cbDBLFList
->
getSelected
()].
content
;
filterList
=
deckManager
.
_lfList
[
mainGame
->
cbLFList
->
getSelected
()].
content
;
break
;
}
case
COMBOBOX_DBCATEGORY
:
{
if
(
havePopupWindow
())
{
mainGame
->
cbDBCategory
->
setSelected
(
prev_category
);
break
;
}
int
catesel
=
mainGame
->
cbDBCategory
->
getSelected
();
if
(
catesel
==
3
)
{
catesel
=
2
;
mainGame
->
cbDBCategory
->
setSelected
(
2
);
if
(
prev_category
==
2
)
break
;
}
if
(
is_modified
&&
!
readonly
&&
!
mainGame
->
chkIgnoreDeckChanges
->
isChecked
())
{
mainGame
->
gMutex
.
Lock
();
mainGame
->
SetStaticText
(
mainGame
->
stQMessage
,
310
,
mainGame
->
guiFont
,
dataManager
.
GetSysString
(
1356
));
mainGame
->
PopupElement
(
mainGame
->
wQuery
);
mainGame
->
gMutex
.
Unlock
();
prev_operation
=
id
;
break
;
}
changeCategory
(
catesel
);
break
;
break
;
}
}
case
COMBOBOX_DBDECKS
:
{
case
COMBOBOX_DBDECKS
:
{
if
(
is_modified
&&
!
mainGame
->
chkIgnoreDeckChanges
->
isChecked
())
{
if
(
havePopupWindow
())
{
mainGame
->
cbDBDecks
->
setSelected
(
prev_deck
);
break
;
}
if
(
is_modified
&&
!
readonly
&&
!
mainGame
->
chkIgnoreDeckChanges
->
isChecked
())
{
mainGame
->
gMutex
.
Lock
();
mainGame
->
gMutex
.
Lock
();
mainGame
->
SetStaticText
(
mainGame
->
stQMessage
,
310
,
mainGame
->
guiFont
,
dataManager
.
GetSysString
(
1356
));
mainGame
->
SetStaticText
(
mainGame
->
stQMessage
,
310
,
mainGame
->
guiFont
,
dataManager
.
GetSysString
(
1356
));
mainGame
->
PopupElement
(
mainGame
->
wQuery
);
mainGame
->
PopupElement
(
mainGame
->
wQuery
);
...
@@ -456,10 +911,11 @@ bool DeckBuilder::OnEvent(const irr::SEvent& event) {
...
@@ -456,10 +911,11 @@ bool DeckBuilder::OnEvent(const irr::SEvent& event) {
prev_operation
=
id
;
prev_operation
=
id
;
break
;
break
;
}
}
int
sel
=
mainGame
->
cbDBDecks
->
getSelected
();
int
decksel
=
mainGame
->
cbDBDecks
->
getSelected
();
if
(
sel
>=
0
)
if
(
decksel
>=
0
)
{
deckManager
.
LoadDeck
(
mainGame
->
cbDBDecks
->
getItem
(
sel
));
deckManager
.
LoadDeck
(
mainGame
->
cbDBCategory
,
mainGame
->
cbDBDecks
);
prev_deck
=
sel
;
}
prev_deck
=
decksel
;
is_modified
=
false
;
is_modified
=
false
;
break
;
break
;
}
}
...
@@ -579,6 +1035,46 @@ bool DeckBuilder::OnEvent(const irr::SEvent& event) {
...
@@ -579,6 +1035,46 @@ bool DeckBuilder::OnEvent(const irr::SEvent& event) {
InstantSearch
();
InstantSearch
();
}
}
}
}
case
irr
:
:
gui
::
EGET_LISTBOX_CHANGED
:
{
switch
(
id
)
{
case
LISTBOX_CATEGORIES
:
{
if
(
mainGame
->
wDMQuery
->
isVisible
())
{
mainGame
->
lstCategories
->
setSelected
(
prev_category
);
break
;
}
int
catesel
=
mainGame
->
lstCategories
->
getSelected
();
if
(
catesel
==
3
)
{
catesel
=
2
;
mainGame
->
lstCategories
->
setSelected
(
catesel
);
if
(
prev_category
==
catesel
)
break
;
}
refreshDeckList
();
mainGame
->
lstDecks
->
setSelected
(
0
);
mainGame
->
cbDBCategory
->
setSelected
(
catesel
);
changeCategory
(
catesel
);
break
;
}
case
LISTBOX_DECKS
:
{
if
(
mainGame
->
wDMQuery
->
isVisible
())
{
mainGame
->
lstDecks
->
setSelected
(
prev_deck
);
break
;
}
int
decksel
=
mainGame
->
lstDecks
->
getSelected
();
mainGame
->
cbDBDecks
->
setSelected
(
decksel
);
if
(
decksel
==
-
1
)
break
;
wchar_t
filepath
[
256
];
wchar_t
catepath
[
256
];
deckManager
.
GetCategoryPath
(
catepath
,
mainGame
->
lstCategories
->
getSelected
(),
mainGame
->
lstCategories
->
getListItem
(
mainGame
->
lstCategories
->
getSelected
()));
myswprintf
(
filepath
,
L"%ls/%ls.ydk"
,
catepath
,
mainGame
->
lstDecks
->
getListItem
(
decksel
));
deckManager
.
LoadDeck
(
filepath
);
prev_deck
=
decksel
;
break
;
}
}
break
;
}
default:
break
;
default:
break
;
}
}
break
;
break
;
...
@@ -589,7 +1085,7 @@ bool DeckBuilder::OnEvent(const irr::SEvent& event) {
...
@@ -589,7 +1085,7 @@ bool DeckBuilder::OnEvent(const irr::SEvent& event) {
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
;
if
(
mainGame
->
wCategories
->
isVisible
()
||
mainGame
->
wQuery
->
isVisible
())
if
(
havePopupWindow
())
break
;
break
;
if
(
hovered_pos
==
0
||
hovered_seq
==
-
1
)
if
(
hovered_pos
==
0
||
hovered_seq
==
-
1
)
break
;
break
;
...
@@ -653,7 +1149,7 @@ bool DeckBuilder::OnEvent(const irr::SEvent& event) {
...
@@ -653,7 +1149,7 @@ bool DeckBuilder::OnEvent(const irr::SEvent& event) {
}
}
break
;
break
;
}
}
if
(
mainGame
->
wCategories
->
isVisible
()
||
mainGame
->
wQuery
->
isVisible
())
if
(
havePopupWindow
())
break
;
break
;
if
(
!
is_draging
)
{
if
(
!
is_draging
)
{
if
(
hovered_pos
==
0
||
hovered_seq
==
-
1
)
if
(
hovered_pos
==
0
||
hovered_seq
==
-
1
)
...
@@ -693,7 +1189,7 @@ bool DeckBuilder::OnEvent(const irr::SEvent& event) {
...
@@ -693,7 +1189,7 @@ bool DeckBuilder::OnEvent(const irr::SEvent& event) {
case
irr
:
:
EMIE_MMOUSE_LEFT_UP
:
{
case
irr
:
:
EMIE_MMOUSE_LEFT_UP
:
{
if
(
mainGame
->
is_siding
)
if
(
mainGame
->
is_siding
)
break
;
break
;
if
(
mainGame
->
wCategories
->
isVisible
()
||
mainGame
->
wQuery
->
isVisible
())
if
(
havePopupWindow
())
break
;
break
;
if
(
hovered_pos
==
0
||
hovered_seq
==
-
1
)
if
(
hovered_pos
==
0
||
hovered_seq
==
-
1
)
break
;
break
;
...
...
gframe/deck_con.h
View file @
55aa85c9
...
@@ -60,10 +60,12 @@ public:
...
@@ -60,10 +60,12 @@ public:
size_t
pre_extrac
;
size_t
pre_extrac
;
size_t
pre_sidec
;
size_t
pre_sidec
;
code_pointer
draging_pointer
;
code_pointer
draging_pointer
;
int
prev_category
;
int
prev_deck
;
int
prev_deck
;
s32
prev_operation
;
s32
prev_operation
;
int
prev_sel
;
int
prev_sel
;
bool
is_modified
;
bool
is_modified
;
bool
readonly
;
std
::
unordered_map
<
int
,
int
>*
filterList
;
std
::
unordered_map
<
int
,
int
>*
filterList
;
std
::
vector
<
code_pointer
>
results
;
std
::
vector
<
code_pointer
>
results
;
...
...
gframe/deck_manager.cpp
View file @
55aa85c9
...
@@ -59,23 +59,6 @@ void DeckManager::LoadLFList() {
...
@@ -59,23 +59,6 @@ void DeckManager::LoadLFList() {
nolimit
.
content
=
new
std
::
unordered_map
<
int
,
int
>
;
nolimit
.
content
=
new
std
::
unordered_map
<
int
,
int
>
;
_lfList
.
push_back
(
nolimit
);
_lfList
.
push_back
(
nolimit
);
}
}
bool
DeckManager
::
RenameDeck
(
const
wchar_t
*
oldname
,
const
wchar_t
*
newname
)
{
wchar_t
oldfname
[
256
];
wchar_t
newfname
[
256
];
myswprintf
(
oldfname
,
L"./deck/%ls.ydk"
,
oldname
);
myswprintf
(
newfname
,
L"./deck/%ls.ydk"
,
newname
);
#ifdef WIN32
BOOL
result
=
MoveFileW
(
oldfname
,
newfname
);
return
!!
result
;
#else
char
oldfilefn
[
256
];
char
newfilefn
[
256
];
BufferIO
::
EncodeUTF8
(
oldfname
,
oldfilefn
);
BufferIO
::
EncodeUTF8
(
newfname
,
newfilefn
);
int
result
=
rename
(
oldfilefn
,
newfilefn
);
return
result
==
0
;
#endif
}
wchar_t
*
DeckManager
::
GetLFListName
(
int
lfhash
)
{
wchar_t
*
DeckManager
::
GetLFListName
(
int
lfhash
)
{
for
(
size_t
i
=
0
;
i
<
_lfList
.
size
();
++
i
)
{
for
(
size_t
i
=
0
;
i
<
_lfList
.
size
();
++
i
)
{
if
(
_lfList
[
i
].
hash
==
(
unsigned
int
)
lfhash
)
{
if
(
_lfList
[
i
].
hash
==
(
unsigned
int
)
lfhash
)
{
...
@@ -209,6 +192,39 @@ bool DeckManager::LoadSide(Deck& deck, int* dbuf, int mainc, int sidec) {
...
@@ -209,6 +192,39 @@ bool DeckManager::LoadSide(Deck& deck, int* dbuf, int mainc, int sidec) {
deck
=
ndeck
;
deck
=
ndeck
;
return
true
;
return
true
;
}
}
#ifndef YGOPRO_SERVER_MODE
void
DeckManager
::
GetCategoryPath
(
wchar_t
*
ret
,
int
index
,
const
wchar_t
*
text
)
{
wchar_t
catepath
[
256
];
switch
(
index
)
{
case
0
:
myswprintf
(
catepath
,
L"./pack"
);
break
;
case
1
:
myswprintf
(
catepath
,
mainGame
->
gameConf
.
bot_deck_path
);
break
;
case
-
1
:
case
2
:
case
3
:
myswprintf
(
catepath
,
L"./deck"
);
break
;
default:
myswprintf
(
catepath
,
L"./deck/%ls"
,
text
);
}
BufferIO
::
CopyWStr
(
catepath
,
ret
,
256
);
}
void
DeckManager
::
GetDeckFile
(
wchar_t
*
ret
,
irr
::
gui
::
IGUIComboBox
*
cbCategory
,
irr
::
gui
::
IGUIComboBox
*
cbDeck
)
{
wchar_t
filepath
[
256
];
wchar_t
catepath
[
256
];
GetCategoryPath
(
catepath
,
cbCategory
->
getSelected
(),
cbCategory
->
getText
());
myswprintf
(
filepath
,
L"%ls/%ls.ydk"
,
catepath
,
cbDeck
->
getItem
(
cbDeck
->
getSelected
()));
BufferIO
::
CopyWStr
(
filepath
,
ret
,
256
);
}
bool
DeckManager
::
LoadDeck
(
irr
::
gui
::
IGUIComboBox
*
cbCategory
,
irr
::
gui
::
IGUIComboBox
*
cbDeck
)
{
wchar_t
filepath
[
256
];
GetDeckFile
(
filepath
,
cbCategory
,
cbDeck
);
return
LoadDeck
(
filepath
);
}
#endif
FILE
*
DeckManager
::
OpenDeckFile
(
const
wchar_t
*
file
,
const
char
*
mode
)
{
FILE
*
DeckManager
::
OpenDeckFile
(
const
wchar_t
*
file
,
const
char
*
mode
)
{
#ifdef WIN32
#ifdef WIN32
FILE
*
fp
=
_wfopen
(
file
,
(
wchar_t
*
)
mode
);
FILE
*
fp
=
_wfopen
(
file
,
(
wchar_t
*
)
mode
);
...
@@ -221,11 +237,11 @@ FILE* DeckManager::OpenDeckFile(const wchar_t* file, const char* mode) {
...
@@ -221,11 +237,11 @@ FILE* DeckManager::OpenDeckFile(const wchar_t* file, const char* mode) {
}
}
bool
DeckManager
::
LoadDeck
(
const
wchar_t
*
file
)
{
bool
DeckManager
::
LoadDeck
(
const
wchar_t
*
file
)
{
int
sp
=
0
,
ct
=
0
,
mainc
=
0
,
sidec
=
0
,
code
;
int
sp
=
0
,
ct
=
0
,
mainc
=
0
,
sidec
=
0
,
code
;
wchar_t
localfile
[
64
];
FILE
*
fp
=
OpenDeckFile
(
file
,
"r"
);
myswprintf
(
localfile
,
L"./deck/%ls.ydk"
,
file
);
FILE
*
fp
=
OpenDeckFile
(
localfile
,
"r"
);
if
(
!
fp
)
{
if
(
!
fp
)
{
fp
=
OpenDeckFile
(
file
,
"r"
);
wchar_t
localfile
[
64
];
myswprintf
(
localfile
,
L"./deck/%ls.ydk"
,
file
);
fp
=
OpenDeckFile
(
localfile
,
"r"
);
}
}
if
(
!
fp
)
if
(
!
fp
)
return
false
;
return
false
;
...
@@ -251,11 +267,9 @@ bool DeckManager::LoadDeck(const wchar_t* file) {
...
@@ -251,11 +267,9 @@ bool DeckManager::LoadDeck(const wchar_t* file) {
LoadDeck
(
current_deck
,
cardlist
,
mainc
,
sidec
);
LoadDeck
(
current_deck
,
cardlist
,
mainc
,
sidec
);
return
true
;
return
true
;
}
}
bool
DeckManager
::
SaveDeck
(
Deck
&
deck
,
const
wchar_t
*
nam
e
)
{
bool
DeckManager
::
SaveDeck
(
Deck
&
deck
,
const
wchar_t
*
fil
e
)
{
if
(
!
FileSystem
::
IsDirExists
(
L"./deck"
)
&&
!
FileSystem
::
MakeDir
(
L"./deck"
))
if
(
!
FileSystem
::
IsDirExists
(
L"./deck"
)
&&
!
FileSystem
::
MakeDir
(
L"./deck"
))
return
false
;
return
false
;
wchar_t
file
[
64
];
myswprintf
(
file
,
L"./deck/%ls.ydk"
,
name
);
FILE
*
fp
=
OpenDeckFile
(
file
,
"w"
);
FILE
*
fp
=
OpenDeckFile
(
file
,
"w"
);
if
(
!
fp
)
if
(
!
fp
)
return
false
;
return
false
;
...
@@ -271,9 +285,7 @@ bool DeckManager::SaveDeck(Deck& deck, const wchar_t* name) {
...
@@ -271,9 +285,7 @@ bool DeckManager::SaveDeck(Deck& deck, const wchar_t* name) {
fclose
(
fp
);
fclose
(
fp
);
return
true
;
return
true
;
}
}
bool
DeckManager
::
DeleteDeck
(
Deck
&
deck
,
const
wchar_t
*
name
)
{
bool
DeckManager
::
DeleteDeck
(
const
wchar_t
*
file
)
{
wchar_t
file
[
64
];
myswprintf
(
file
,
L"./deck/%ls.ydk"
,
name
);
#ifdef WIN32
#ifdef WIN32
BOOL
result
=
DeleteFileW
(
file
);
BOOL
result
=
DeleteFileW
(
file
);
return
!!
result
;
return
!!
result
;
...
@@ -318,4 +330,31 @@ int DeckManager::SaveDeckToCode(Deck& deck, char* code) {
...
@@ -318,4 +330,31 @@ int DeckManager::SaveDeckToCode(Deck& deck, char* code) {
Base64
::
Encode
(
deckbuf
,
len
,
code
,
encoded_len
);
Base64
::
Encode
(
deckbuf
,
len
,
code
,
encoded_len
);
return
encoded_len
;
return
encoded_len
;
}
}
bool
DeckManager
::
CreateCategory
(
const
wchar_t
*
name
)
{
if
(
!
FileSystem
::
IsDirExists
(
L"./deck"
)
&&
!
FileSystem
::
MakeDir
(
L"./deck"
))
return
false
;
if
(
name
[
0
]
==
0
)
return
false
;
wchar_t
localname
[
256
];
myswprintf
(
localname
,
L"./deck/%ls"
,
name
);
return
FileSystem
::
MakeDir
(
localname
);
}
bool
DeckManager
::
RenameCategory
(
const
wchar_t
*
oldname
,
const
wchar_t
*
newname
)
{
if
(
!
FileSystem
::
IsDirExists
(
L"./deck"
)
&&
!
FileSystem
::
MakeDir
(
L"./deck"
))
return
false
;
if
(
newname
[
0
]
==
0
)
return
false
;
wchar_t
oldlocalname
[
256
];
wchar_t
newlocalname
[
256
];
myswprintf
(
oldlocalname
,
L"./deck/%ls"
,
oldname
);
myswprintf
(
newlocalname
,
L"./deck/%ls"
,
newname
);
return
FileSystem
::
Rename
(
oldlocalname
,
newlocalname
);
}
bool
DeckManager
::
DeleteCategory
(
const
wchar_t
*
name
)
{
wchar_t
localname
[
256
];
myswprintf
(
localname
,
L"./deck/%ls"
,
name
);
if
(
!
FileSystem
::
IsDirExists
(
localname
))
return
false
;
return
FileSystem
::
DeleteDir
(
localname
);
}
}
}
gframe/deck_manager.h
View file @
55aa85c9
...
@@ -41,15 +41,22 @@ public:
...
@@ -41,15 +41,22 @@ public:
int
CheckDeck
(
Deck
&
deck
,
int
lfhash
,
bool
allow_ocg
,
bool
allow_tcg
);
int
CheckDeck
(
Deck
&
deck
,
int
lfhash
,
bool
allow_ocg
,
bool
allow_tcg
);
int
LoadDeck
(
Deck
&
deck
,
int
*
dbuf
,
int
mainc
,
int
sidec
);
int
LoadDeck
(
Deck
&
deck
,
int
*
dbuf
,
int
mainc
,
int
sidec
);
bool
LoadSide
(
Deck
&
deck
,
int
*
dbuf
,
int
mainc
,
int
sidec
);
bool
LoadSide
(
Deck
&
deck
,
int
*
dbuf
,
int
mainc
,
int
sidec
);
#ifndef YGOPRO_SERVER_MODE
void
GetCategoryPath
(
wchar_t
*
ret
,
int
index
,
const
wchar_t
*
text
);
void
GetDeckFile
(
wchar_t
*
ret
,
irr
::
gui
::
IGUIComboBox
*
cbCategory
,
irr
::
gui
::
IGUIComboBox
*
cbDeck
);
bool
LoadDeck
(
irr
::
gui
::
IGUIComboBox
*
cbCategory
,
irr
::
gui
::
IGUIComboBox
*
cbDeck
);
#endif
FILE
*
OpenDeckFile
(
const
wchar_t
*
file
,
const
char
*
mode
);
FILE
*
OpenDeckFile
(
const
wchar_t
*
file
,
const
char
*
mode
);
bool
LoadDeck
(
const
wchar_t
*
file
);
bool
LoadDeck
(
const
wchar_t
*
file
);
bool
SaveDeck
(
Deck
&
deck
,
const
wchar_t
*
name
);
bool
SaveDeck
(
Deck
&
deck
,
const
wchar_t
*
file
);
bool
DeleteDeck
(
Deck
&
deck
,
const
wchar_t
*
name
);
bool
DeleteDeck
(
const
wchar_t
*
file
);
static
bool
RenameDeck
(
const
wchar_t
*
oldname
,
const
wchar_t
*
newname
);
wchar_t
DeckFormatBuffer
[
128
];
wchar_t
DeckFormatBuffer
[
128
];
int
TypeCount
(
std
::
vector
<
code_pointer
>
list
,
unsigned
int
ctype
);
int
TypeCount
(
std
::
vector
<
code_pointer
>
list
,
unsigned
int
ctype
);
bool
LoadDeckFromCode
(
Deck
&
deck
,
const
char
*
code
,
int
len
);
bool
LoadDeckFromCode
(
Deck
&
deck
,
const
char
*
code
,
int
len
);
int
SaveDeckToCode
(
Deck
&
deck
,
char
*
code
);
int
SaveDeckToCode
(
Deck
&
deck
,
char
*
code
);
bool
CreateCategory
(
const
wchar_t
*
name
);
bool
RenameCategory
(
const
wchar_t
*
oldname
,
const
wchar_t
*
newname
);
bool
DeleteCategory
(
const
wchar_t
*
name
);
};
};
extern
DeckManager
deckManager
;
extern
DeckManager
deckManager
;
...
...
gframe/duelclient.cpp
View file @
55aa85c9
...
@@ -325,6 +325,7 @@ void DuelClient::HandleSTOCPacketLan(char* data, unsigned int len) {
...
@@ -325,6 +325,7 @@ void DuelClient::HandleSTOCPacketLan(char* data, unsigned int len) {
}
}
soundManager
.
PlaySoundEffect
(
SOUND_INFO
);
soundManager
.
PlaySoundEffect
(
SOUND_INFO
);
mainGame
->
env
->
addMessageBox
(
L""
,
msgbuf
);
mainGame
->
env
->
addMessageBox
(
L""
,
msgbuf
);
mainGame
->
cbCategorySelect
->
setEnabled
(
true
);
mainGame
->
cbDeckSelect
->
setEnabled
(
true
);
mainGame
->
cbDeckSelect
->
setEnabled
(
true
);
mainGame
->
gMutex
.
Unlock
();
mainGame
->
gMutex
.
Unlock
();
break
;
break
;
...
@@ -552,7 +553,8 @@ void DuelClient::HandleSTOCPacketLan(char* data, unsigned int len) {
...
@@ -552,7 +553,8 @@ void DuelClient::HandleSTOCPacketLan(char* data, unsigned int len) {
mainGame
->
stHostPrepDuelist
[
3
]
->
setText
(
L""
);
mainGame
->
stHostPrepDuelist
[
3
]
->
setText
(
L""
);
mainGame
->
stHostPrepOB
->
setText
(
L""
);
mainGame
->
stHostPrepOB
->
setText
(
L""
);
mainGame
->
SetStaticText
(
mainGame
->
stHostPrepRule
,
180
,
mainGame
->
guiFont
,
str
.
c_str
());
mainGame
->
SetStaticText
(
mainGame
->
stHostPrepRule
,
180
,
mainGame
->
guiFont
,
str
.
c_str
());
mainGame
->
RefreshDeck
(
mainGame
->
cbDeckSelect
);
mainGame
->
RefreshCategoryDeck
(
mainGame
->
cbCategorySelect
,
mainGame
->
cbDeckSelect
);
mainGame
->
cbCategorySelect
->
setEnabled
(
true
);
mainGame
->
cbDeckSelect
->
setEnabled
(
true
);
mainGame
->
cbDeckSelect
->
setEnabled
(
true
);
if
(
mainGame
->
wCreateHost
->
isVisible
())
if
(
mainGame
->
wCreateHost
->
isVisible
())
mainGame
->
HideElement
(
mainGame
->
wCreateHost
);
mainGame
->
HideElement
(
mainGame
->
wCreateHost
);
...
...
gframe/game.cpp
View file @
55aa85c9
...
@@ -257,10 +257,12 @@ bool Game::Initialize() {
...
@@ -257,10 +257,12 @@ bool Game::Initialize() {
}
}
btnHostPrepOB
=
env
->
addButton
(
rect
<
s32
>
(
10
,
180
,
110
,
205
),
wHostPrepare
,
BUTTON_HP_OBSERVER
,
dataManager
.
GetSysString
(
1252
));
btnHostPrepOB
=
env
->
addButton
(
rect
<
s32
>
(
10
,
180
,
110
,
205
),
wHostPrepare
,
BUTTON_HP_OBSERVER
,
dataManager
.
GetSysString
(
1252
));
myswprintf
(
dataManager
.
strBuffer
,
L"%ls%d"
,
dataManager
.
GetSysString
(
1253
),
0
);
myswprintf
(
dataManager
.
strBuffer
,
L"%ls%d"
,
dataManager
.
GetSysString
(
1253
),
0
);
stHostPrepOB
=
env
->
addStaticText
(
dataManager
.
strBuffer
,
rect
<
s32
>
(
10
,
2
10
,
270
,
230
),
false
,
false
,
wHostPrepare
);
stHostPrepOB
=
env
->
addStaticText
(
dataManager
.
strBuffer
,
rect
<
s32
>
(
10
,
2
85
,
270
,
305
),
false
,
false
,
wHostPrepare
);
stHostPrepRule
=
env
->
addStaticText
(
L""
,
rect
<
s32
>
(
280
,
30
,
460
,
230
),
false
,
true
,
wHostPrepare
);
stHostPrepRule
=
env
->
addStaticText
(
L""
,
rect
<
s32
>
(
280
,
30
,
460
,
230
),
false
,
true
,
wHostPrepare
);
env
->
addStaticText
(
dataManager
.
GetSysString
(
1254
),
rect
<
s32
>
(
10
,
235
,
110
,
255
),
false
,
false
,
wHostPrepare
);
env
->
addStaticText
(
dataManager
.
GetSysString
(
1254
),
rect
<
s32
>
(
10
,
210
,
110
,
230
),
false
,
false
,
wHostPrepare
);
cbDeckSelect
=
env
->
addComboBox
(
rect
<
s32
>
(
120
,
230
,
270
,
255
),
wHostPrepare
);
cbCategorySelect
=
env
->
addComboBox
(
rect
<
s32
>
(
10
,
230
,
138
,
255
),
wHostPrepare
,
COMBOBOX_HP_CATEGORY
);
cbCategorySelect
->
setMaxSelectionRows
(
10
);
cbDeckSelect
=
env
->
addComboBox
(
rect
<
s32
>
(
142
,
230
,
340
,
255
),
wHostPrepare
);
cbDeckSelect
->
setMaxSelectionRows
(
10
);
cbDeckSelect
->
setMaxSelectionRows
(
10
);
btnHostPrepReady
=
env
->
addButton
(
rect
<
s32
>
(
170
,
180
,
270
,
205
),
wHostPrepare
,
BUTTON_HP_READY
,
dataManager
.
GetSysString
(
1218
));
btnHostPrepReady
=
env
->
addButton
(
rect
<
s32
>
(
170
,
180
,
270
,
205
),
wHostPrepare
,
BUTTON_HP_READY
,
dataManager
.
GetSysString
(
1218
));
btnHostPrepNotReady
=
env
->
addButton
(
rect
<
s32
>
(
170
,
180
,
270
,
205
),
wHostPrepare
,
BUTTON_HP_NOTREADY
,
dataManager
.
GetSysString
(
1219
));
btnHostPrepNotReady
=
env
->
addButton
(
rect
<
s32
>
(
170
,
180
,
270
,
205
),
wHostPrepare
,
BUTTON_HP_NOTREADY
,
dataManager
.
GetSysString
(
1219
));
...
@@ -573,14 +575,56 @@ bool Game::Initialize() {
...
@@ -573,14 +575,56 @@ bool Game::Initialize() {
//deck edit
//deck edit
wDeckEdit
=
env
->
addStaticText
(
L""
,
rect
<
s32
>
(
309
,
5
,
605
,
130
),
true
,
false
,
0
,
-
1
,
true
);
wDeckEdit
=
env
->
addStaticText
(
L""
,
rect
<
s32
>
(
309
,
5
,
605
,
130
),
true
,
false
,
0
,
-
1
,
true
);
wDeckEdit
->
setVisible
(
false
);
wDeckEdit
->
setVisible
(
false
);
stBanlist
=
env
->
addStaticText
(
dataManager
.
GetSysString
(
1300
),
rect
<
s32
>
(
10
,
9
,
100
,
29
),
false
,
false
,
wDeckEdit
);
btnManageDeck
=
env
->
addButton
(
rect
<
s32
>
(
225
,
5
,
290
,
30
),
wDeckEdit
,
BUTTON_MANAGE_DECK
,
dataManager
.
GetSysString
(
1328
));
cbDBLFList
=
env
->
addComboBox
(
rect
<
s32
>
(
80
,
5
,
220
,
30
),
wDeckEdit
,
COMBOBOX_DBLFLIST
);
//deck manage
cbDBLFList
->
setMaxSelectionRows
(
10
);
wDeckManage
=
env
->
addWindow
(
rect
<
s32
>
(
310
,
135
,
800
,
465
),
false
,
dataManager
.
GetSysString
(
1460
),
0
,
WINDOW_DECK_MANAGE
);
wDeckManage
->
setVisible
(
false
);
lstCategories
=
env
->
addListBox
(
rect
<
s32
>
(
10
,
30
,
140
,
320
),
wDeckManage
,
LISTBOX_CATEGORIES
,
true
);
lstDecks
=
env
->
addListBox
(
rect
<
s32
>
(
150
,
30
,
340
,
320
),
wDeckManage
,
LISTBOX_DECKS
,
true
);
posY
=
30
;
btnNewCategory
=
env
->
addButton
(
rect
<
s32
>
(
350
,
posY
,
480
,
posY
+
25
),
wDeckManage
,
BUTTON_NEW_CATEGORY
,
dataManager
.
GetSysString
(
1461
));
posY
+=
30
;
btnRenameCategory
=
env
->
addButton
(
rect
<
s32
>
(
350
,
posY
,
480
,
posY
+
25
),
wDeckManage
,
BUTTON_RENAME_CATEGORY
,
dataManager
.
GetSysString
(
1462
));
posY
+=
30
;
btnDeleteCategory
=
env
->
addButton
(
rect
<
s32
>
(
350
,
posY
,
480
,
posY
+
25
),
wDeckManage
,
BUTTON_DELETE_CATEGORY
,
dataManager
.
GetSysString
(
1463
));
posY
+=
30
;
btnNewDeck
=
env
->
addButton
(
rect
<
s32
>
(
350
,
posY
,
480
,
posY
+
25
),
wDeckManage
,
BUTTON_NEW_DECK
,
dataManager
.
GetSysString
(
1464
));
posY
+=
30
;
btnRenameDeck
=
env
->
addButton
(
rect
<
s32
>
(
350
,
posY
,
480
,
posY
+
25
),
wDeckManage
,
BUTTON_RENAME_DECK
,
dataManager
.
GetSysString
(
1465
));
posY
+=
30
;
btnDMDeleteDeck
=
env
->
addButton
(
rect
<
s32
>
(
350
,
posY
,
480
,
posY
+
25
),
wDeckManage
,
BUTTON_DELETE_DECK_DM
,
dataManager
.
GetSysString
(
1466
));
posY
+=
30
;
btnMoveDeck
=
env
->
addButton
(
rect
<
s32
>
(
350
,
posY
,
480
,
posY
+
25
),
wDeckManage
,
BUTTON_MOVE_DECK
,
dataManager
.
GetSysString
(
1467
));
posY
+=
30
;
btnCopyDeck
=
env
->
addButton
(
rect
<
s32
>
(
350
,
posY
,
480
,
posY
+
25
),
wDeckManage
,
BUTTON_COPY_DECK
,
dataManager
.
GetSysString
(
1468
));
posY
+=
55
;
cbLFList
=
env
->
addComboBox
(
rect
<
s32
>
(
350
,
posY
,
480
,
posY
+
25
),
wDeckManage
,
COMBOBOX_LFLIST
);
cbLFList
->
setMaxSelectionRows
(
10
);
for
(
unsigned
int
i
=
0
;
i
<
deckManager
.
_lfList
.
size
();
++
i
)
cbLFList
->
addItem
(
deckManager
.
_lfList
[
i
].
listName
);
//deck manage query
wDMQuery
=
env
->
addWindow
(
rect
<
s32
>
(
400
,
200
,
710
,
320
),
false
,
dataManager
.
GetSysString
(
1460
));
wDMQuery
->
getCloseButton
()
->
setVisible
(
false
);
wDMQuery
->
setVisible
(
false
);
stDMMessage
=
env
->
addStaticText
(
L""
,
rect
<
s32
>
(
20
,
25
,
290
,
45
),
false
,
false
,
wDMQuery
);
stDMMessage2
=
env
->
addStaticText
(
L""
,
rect
<
s32
>
(
20
,
50
,
290
,
70
),
false
,
false
,
wDMQuery
,
-
1
,
true
);
stDMMessage2
->
setTextAlignment
(
irr
::
gui
::
EGUIA_CENTER
,
irr
::
gui
::
EGUIA_CENTER
);
ebDMName
=
env
->
addEditBox
(
L""
,
rect
<
s32
>
(
20
,
50
,
290
,
70
),
true
,
wDMQuery
,
-
1
);
ebDMName
->
setTextAlignment
(
irr
::
gui
::
EGUIA_CENTER
,
irr
::
gui
::
EGUIA_CENTER
);
cbDMCategory
=
env
->
addComboBox
(
rect
<
s32
>
(
20
,
50
,
290
,
70
),
wDMQuery
,
-
1
);
stDMMessage2
->
setVisible
(
false
);
ebDMName
->
setVisible
(
false
);
cbDMCategory
->
setVisible
(
false
);
cbDMCategory
->
setMaxSelectionRows
(
10
);
btnDMOK
=
env
->
addButton
(
rect
<
s32
>
(
70
,
80
,
140
,
105
),
wDMQuery
,
BUTTON_DM_OK
,
dataManager
.
GetSysString
(
1211
));
btnDMCancel
=
env
->
addButton
(
rect
<
s32
>
(
170
,
80
,
240
,
105
),
wDMQuery
,
BUTTON_DM_CANCEL
,
dataManager
.
GetSysString
(
1212
));
stDBCategory
=
env
->
addStaticText
(
dataManager
.
GetSysString
(
1300
),
rect
<
s32
>
(
10
,
9
,
100
,
29
),
false
,
false
,
wDeckEdit
);
cbDBCategory
=
env
->
addComboBox
(
rect
<
s32
>
(
80
,
5
,
220
,
30
),
wDeckEdit
,
COMBOBOX_DBCATEGORY
);
cbDBCategory
->
setMaxSelectionRows
(
15
);
stDeck
=
env
->
addStaticText
(
dataManager
.
GetSysString
(
1301
),
rect
<
s32
>
(
10
,
39
,
100
,
59
),
false
,
false
,
wDeckEdit
);
stDeck
=
env
->
addStaticText
(
dataManager
.
GetSysString
(
1301
),
rect
<
s32
>
(
10
,
39
,
100
,
59
),
false
,
false
,
wDeckEdit
);
cbDBDecks
=
env
->
addComboBox
(
rect
<
s32
>
(
80
,
35
,
220
,
60
),
wDeckEdit
,
COMBOBOX_DBDECKS
);
cbDBDecks
=
env
->
addComboBox
(
rect
<
s32
>
(
80
,
35
,
220
,
60
),
wDeckEdit
,
COMBOBOX_DBDECKS
);
cbDBDecks
->
setMaxSelectionRows
(
15
);
cbDBDecks
->
setMaxSelectionRows
(
15
);
for
(
unsigned
int
i
=
0
;
i
<
deckManager
.
_lfList
.
size
();
++
i
)
cbDBLFList
->
addItem
(
deckManager
.
_lfList
[
i
].
listName
);
btnSaveDeck
=
env
->
addButton
(
rect
<
s32
>
(
225
,
35
,
290
,
60
),
wDeckEdit
,
BUTTON_SAVE_DECK
,
dataManager
.
GetSysString
(
1302
));
btnSaveDeck
=
env
->
addButton
(
rect
<
s32
>
(
225
,
35
,
290
,
60
),
wDeckEdit
,
BUTTON_SAVE_DECK
,
dataManager
.
GetSysString
(
1302
));
ebDeckname
=
env
->
addEditBox
(
L""
,
rect
<
s32
>
(
80
,
65
,
220
,
90
),
true
,
wDeckEdit
,
-
1
);
ebDeckname
=
env
->
addEditBox
(
L""
,
rect
<
s32
>
(
80
,
65
,
220
,
90
),
true
,
wDeckEdit
,
-
1
);
ebDeckname
->
setTextAlignment
(
irr
::
gui
::
EGUIA_CENTER
,
irr
::
gui
::
EGUIA_CENTER
);
ebDeckname
->
setTextAlignment
(
irr
::
gui
::
EGUIA_CENTER
,
irr
::
gui
::
EGUIA_CENTER
);
...
@@ -597,22 +641,12 @@ bool Game::Initialize() {
...
@@ -597,22 +641,12 @@ bool Game::Initialize() {
btnSideSort
->
setVisible
(
false
);
btnSideSort
->
setVisible
(
false
);
btnSideReload
=
env
->
addButton
(
rect
<
s32
>
(
440
,
100
,
500
,
130
),
0
,
BUTTON_SIDE_RELOAD
,
dataManager
.
GetSysString
(
1309
));
btnSideReload
=
env
->
addButton
(
rect
<
s32
>
(
440
,
100
,
500
,
130
),
0
,
BUTTON_SIDE_RELOAD
,
dataManager
.
GetSysString
(
1309
));
btnSideReload
->
setVisible
(
false
);
btnSideReload
->
setVisible
(
false
);
btnRenameDeck
=
env
->
addButton
(
rect
<
s32
>
(
170
,
99
,
220
,
120
),
wDeckEdit
,
BUTTON_RENAME_DECK
,
dataManager
.
GetSysString
(
1362
));
btnDeckCode
=
env
->
addButton
(
rect
<
s32
>
(
5
,
65
,
75
,
90
),
wDeckEdit
,
BUTTON_DECK_CODE
,
dataManager
.
GetSysString
(
1387
));
btnDeckCode
=
env
->
addButton
(
rect
<
s32
>
(
5
,
65
,
75
,
90
),
wDeckEdit
,
BUTTON_DECK_CODE
,
dataManager
.
GetSysString
(
1387
));
//
//
scrFilter
=
env
->
addScrollBar
(
false
,
recti
(
999
,
161
,
1019
,
629
),
0
,
SCROLL_FILTER
);
scrFilter
=
env
->
addScrollBar
(
false
,
recti
(
999
,
161
,
1019
,
629
),
0
,
SCROLL_FILTER
);
scrFilter
->
setLargeStep
(
10
);
scrFilter
->
setLargeStep
(
10
);
scrFilter
->
setSmallStep
(
1
);
scrFilter
->
setSmallStep
(
1
);
scrFilter
->
setVisible
(
false
);
scrFilter
->
setVisible
(
false
);
//rename deck
wRenameDeck
=
env
->
addWindow
(
rect
<
s32
>
(
510
,
200
,
820
,
320
),
false
,
dataManager
.
GetSysString
(
1376
));
wRenameDeck
->
getCloseButton
()
->
setVisible
(
false
);
wRenameDeck
->
setVisible
(
false
);
env
->
addStaticText
(
dataManager
.
GetSysString
(
1377
),
rect
<
s32
>
(
20
,
25
,
290
,
45
),
false
,
false
,
wRenameDeck
);
ebREName
=
env
->
addEditBox
(
L""
,
rect
<
s32
>
(
20
,
50
,
290
,
70
),
true
,
wRenameDeck
,
-
1
);
ebREName
->
setTextAlignment
(
irr
::
gui
::
EGUIA_CENTER
,
irr
::
gui
::
EGUIA_CENTER
);
btnREYes
=
env
->
addButton
(
rect
<
s32
>
(
70
,
80
,
140
,
105
),
wRenameDeck
,
BUTTON_RENAME_DECK_SAVE
,
dataManager
.
GetSysString
(
1341
));
btnRENo
=
env
->
addButton
(
rect
<
s32
>
(
170
,
80
,
240
,
105
),
wRenameDeck
,
BUTTON_RENAME_DECK_CANCEL
,
dataManager
.
GetSysString
(
1212
));
//deck code
//deck code
wDeckCode
=
env
->
addWindow
(
rect
<
s32
>
(
510
,
200
,
820
,
320
),
false
,
dataManager
.
GetSysString
(
1387
));
wDeckCode
=
env
->
addWindow
(
rect
<
s32
>
(
510
,
200
,
820
,
320
),
false
,
dataManager
.
GetSysString
(
1387
));
wDeckCode
->
getCloseButton
()
->
setVisible
(
false
);
wDeckCode
->
getCloseButton
()
->
setVisible
(
false
);
...
@@ -1088,9 +1122,44 @@ void Game::LoadExpansions() {
...
@@ -1088,9 +1122,44 @@ void Game::LoadExpansions() {
#endif //YGOPRO_SERVER_MODE
#endif //YGOPRO_SERVER_MODE
}
}
#ifndef YGOPRO_SERVER_MODE
#ifndef YGOPRO_SERVER_MODE
void
Game
::
RefreshDeck
(
irr
::
gui
::
IGUIComboBox
*
cbDeck
)
{
void
Game
::
RefreshCategoryDeck
(
irr
::
gui
::
IGUIComboBox
*
cbCategory
,
irr
::
gui
::
IGUIComboBox
*
cbDeck
,
bool
selectlastused
)
{
cbCategory
->
clear
();
cbCategory
->
addItem
(
dataManager
.
GetSysString
(
1450
));
cbCategory
->
addItem
(
dataManager
.
GetSysString
(
1451
));
cbCategory
->
addItem
(
dataManager
.
GetSysString
(
1452
));
cbCategory
->
addItem
(
dataManager
.
GetSysString
(
1453
));
FileSystem
::
TraversalDir
(
L"./deck"
,
[
cbCategory
](
const
wchar_t
*
name
,
bool
isdir
)
{
if
(
isdir
)
{
cbCategory
->
addItem
(
name
);
}
});
cbCategory
->
setSelected
(
2
);
if
(
selectlastused
)
{
for
(
size_t
i
=
0
;
i
<
cbCategory
->
getItemCount
();
++
i
)
{
if
(
!
wcscmp
(
cbCategory
->
getItem
(
i
),
gameConf
.
lastcategory
))
{
cbCategory
->
setSelected
(
i
);
break
;
}
}
}
RefreshDeck
(
cbCategory
,
cbDeck
);
if
(
selectlastused
)
{
for
(
size_t
i
=
0
;
i
<
cbDeck
->
getItemCount
();
++
i
)
{
if
(
!
wcscmp
(
cbDeck
->
getItem
(
i
),
gameConf
.
lastdeck
))
{
cbDeck
->
setSelected
(
i
);
break
;
}
}
}
}
void
Game
::
RefreshDeck
(
irr
::
gui
::
IGUIComboBox
*
cbCategory
,
irr
::
gui
::
IGUIComboBox
*
cbDeck
)
{
wchar_t
catepath
[
256
];
deckManager
.
GetCategoryPath
(
catepath
,
cbCategory
->
getSelected
(),
cbCategory
->
getText
());
RefreshDeck
(
catepath
,
cbDeck
);
}
void
Game
::
RefreshDeck
(
const
wchar_t
*
deckpath
,
irr
::
gui
::
IGUIComboBox
*
cbDeck
)
{
cbDeck
->
clear
();
cbDeck
->
clear
();
FileSystem
::
TraversalDir
(
L"./deck"
,
[
cbDeck
](
const
wchar_t
*
name
,
bool
isdir
)
{
FileSystem
::
TraversalDir
(
deckpath
,
[
cbDeck
](
const
wchar_t
*
name
,
bool
isdir
)
{
if
(
!
isdir
&&
wcsrchr
(
name
,
'.'
)
&&
!
mywcsncasecmp
(
wcsrchr
(
name
,
'.'
),
L".ydk"
,
4
))
{
if
(
!
isdir
&&
wcsrchr
(
name
,
'.'
)
&&
!
mywcsncasecmp
(
wcsrchr
(
name
,
'.'
),
L".ydk"
,
4
))
{
size_t
len
=
wcslen
(
name
);
size_t
len
=
wcslen
(
name
);
wchar_t
deckname
[
256
];
wchar_t
deckname
[
256
];
...
@@ -1099,12 +1168,6 @@ void Game::RefreshDeck(irr::gui::IGUIComboBox* cbDeck) {
...
@@ -1099,12 +1168,6 @@ void Game::RefreshDeck(irr::gui::IGUIComboBox* cbDeck) {
cbDeck
->
addItem
(
deckname
);
cbDeck
->
addItem
(
deckname
);
}
}
});
});
for
(
size_t
i
=
0
;
i
<
cbDeck
->
getItemCount
();
++
i
)
{
if
(
!
wcscmp
(
cbDeck
->
getItem
(
i
),
gameConf
.
lastdeck
))
{
cbDeck
->
setSelected
(
i
);
break
;
}
}
}
}
void
Game
::
RefreshReplay
()
{
void
Game
::
RefreshReplay
()
{
lstReplayList
->
clear
();
lstReplayList
->
clear
();
...
@@ -1193,6 +1256,8 @@ void Game::LoadConfig() {
...
@@ -1193,6 +1256,8 @@ void Game::LoadConfig() {
gameConf
.
textfontsize
=
12
;
gameConf
.
textfontsize
=
12
;
gameConf
.
nickname
[
0
]
=
0
;
gameConf
.
nickname
[
0
]
=
0
;
gameConf
.
gamename
[
0
]
=
0
;
gameConf
.
gamename
[
0
]
=
0
;
gameConf
.
bot_deck_path
[
0
]
=
0
;
gameConf
.
lastcategory
[
0
]
=
0
;
gameConf
.
lastdeck
[
0
]
=
0
;
gameConf
.
lastdeck
[
0
]
=
0
;
gameConf
.
numfont
[
0
]
=
0
;
gameConf
.
numfont
[
0
]
=
0
;
gameConf
.
textfont
[
0
]
=
0
;
gameConf
.
textfont
[
0
]
=
0
;
...
@@ -1340,6 +1405,12 @@ void Game::LoadConfig() {
...
@@ -1340,6 +1405,12 @@ void Game::LoadConfig() {
}
else
if
(
!
strcmp
(
strbuf
,
"gamename"
))
{
}
else
if
(
!
strcmp
(
strbuf
,
"gamename"
))
{
BufferIO
::
DecodeUTF8
(
valbuf
,
wstr
);
BufferIO
::
DecodeUTF8
(
valbuf
,
wstr
);
BufferIO
::
CopyWStr
(
wstr
,
gameConf
.
gamename
,
20
);
BufferIO
::
CopyWStr
(
wstr
,
gameConf
.
gamename
,
20
);
}
else
if
(
!
strcmp
(
strbuf
,
"bot_deck_path"
))
{
BufferIO
::
DecodeUTF8
(
valbuf
,
wstr
);
BufferIO
::
CopyWStr
(
wstr
,
gameConf
.
bot_deck_path
,
64
);
}
else
if
(
!
strcmp
(
strbuf
,
"lastcategory"
))
{
BufferIO
::
DecodeUTF8
(
valbuf
,
wstr
);
BufferIO
::
CopyWStr
(
wstr
,
gameConf
.
lastcategory
,
64
);
}
else
if
(
!
strcmp
(
strbuf
,
"lastdeck"
))
{
}
else
if
(
!
strcmp
(
strbuf
,
"lastdeck"
))
{
BufferIO
::
DecodeUTF8
(
valbuf
,
wstr
);
BufferIO
::
DecodeUTF8
(
valbuf
,
wstr
);
BufferIO
::
CopyWStr
(
wstr
,
gameConf
.
lastdeck
,
64
);
BufferIO
::
CopyWStr
(
wstr
,
gameConf
.
lastdeck
,
64
);
...
@@ -1460,6 +1531,12 @@ void Game::LoadConfig() {
...
@@ -1460,6 +1531,12 @@ void Game::LoadConfig() {
}
else
if
(
!
strcmp
(
strbuf
,
"gamename"
))
{
}
else
if
(
!
strcmp
(
strbuf
,
"gamename"
))
{
BufferIO
::
DecodeUTF8
(
valbuf
,
wstr
);
BufferIO
::
DecodeUTF8
(
valbuf
,
wstr
);
BufferIO
::
CopyWStr
(
wstr
,
gameConf
.
gamename
,
20
);
BufferIO
::
CopyWStr
(
wstr
,
gameConf
.
gamename
,
20
);
}
else
if
(
!
strcmp
(
strbuf
,
"bot_deck_path"
))
{
BufferIO
::
DecodeUTF8
(
valbuf
,
wstr
);
BufferIO
::
CopyWStr
(
wstr
,
gameConf
.
bot_deck_path
,
64
);
}
else
if
(
!
strcmp
(
strbuf
,
"lastcategory"
))
{
BufferIO
::
DecodeUTF8
(
valbuf
,
wstr
);
BufferIO
::
CopyWStr
(
wstr
,
gameConf
.
lastcategory
,
64
);
}
else
if
(
!
strcmp
(
strbuf
,
"lastdeck"
))
{
}
else
if
(
!
strcmp
(
strbuf
,
"lastdeck"
))
{
BufferIO
::
DecodeUTF8
(
valbuf
,
wstr
);
BufferIO
::
DecodeUTF8
(
valbuf
,
wstr
);
BufferIO
::
CopyWStr
(
wstr
,
gameConf
.
lastdeck
,
64
);
BufferIO
::
CopyWStr
(
wstr
,
gameConf
.
lastdeck
,
64
);
...
@@ -1546,6 +1623,8 @@ void Game::SaveConfig() {
...
@@ -1546,6 +1623,8 @@ void Game::SaveConfig() {
fprintf
(
fp
,
"nickname = %s
\n
"
,
linebuf
);
fprintf
(
fp
,
"nickname = %s
\n
"
,
linebuf
);
BufferIO
::
EncodeUTF8
(
gameConf
.
gamename
,
linebuf
);
BufferIO
::
EncodeUTF8
(
gameConf
.
gamename
,
linebuf
);
fprintf
(
fp
,
"gamename = %s
\n
"
,
linebuf
);
fprintf
(
fp
,
"gamename = %s
\n
"
,
linebuf
);
BufferIO
::
EncodeUTF8
(
gameConf
.
lastcategory
,
linebuf
);
fprintf
(
fp
,
"lastcategory = %s
\n
"
,
linebuf
);
BufferIO
::
EncodeUTF8
(
gameConf
.
lastdeck
,
linebuf
);
BufferIO
::
EncodeUTF8
(
gameConf
.
lastdeck
,
linebuf
);
fprintf
(
fp
,
"lastdeck = %s
\n
"
,
linebuf
);
fprintf
(
fp
,
"lastdeck = %s
\n
"
,
linebuf
);
BufferIO
::
EncodeUTF8
(
gameConf
.
textfont
,
linebuf
);
BufferIO
::
EncodeUTF8
(
gameConf
.
textfont
,
linebuf
);
...
@@ -1579,6 +1658,8 @@ void Game::SaveConfig() {
...
@@ -1579,6 +1658,8 @@ void Game::SaveConfig() {
fprintf
(
fp
,
"ignore_deck_changes = %d
\n
"
,
(
chkIgnoreDeckChanges
->
isChecked
()
?
1
:
0
));
fprintf
(
fp
,
"ignore_deck_changes = %d
\n
"
,
(
chkIgnoreDeckChanges
->
isChecked
()
?
1
:
0
));
fprintf
(
fp
,
"default_ot = %d
\n
"
,
gameConf
.
defaultOT
);
fprintf
(
fp
,
"default_ot = %d
\n
"
,
gameConf
.
defaultOT
);
fprintf
(
fp
,
"enable_bot_mode = %d
\n
"
,
gameConf
.
enable_bot_mode
);
fprintf
(
fp
,
"enable_bot_mode = %d
\n
"
,
gameConf
.
enable_bot_mode
);
BufferIO
::
EncodeUTF8
(
gameConf
.
bot_deck_path
,
linebuf
);
fprintf
(
fp
,
"bot_deck_path = %s
\n
"
,
linebuf
);
fprintf
(
fp
,
"quick_animation = %d
\n
"
,
gameConf
.
quick_animation
);
fprintf
(
fp
,
"quick_animation = %d
\n
"
,
gameConf
.
quick_animation
);
fprintf
(
fp
,
"auto_save_replay = %d
\n
"
,
(
chkAutoSaveReplay
->
isChecked
()
?
1
:
0
));
fprintf
(
fp
,
"auto_save_replay = %d
\n
"
,
(
chkAutoSaveReplay
->
isChecked
()
?
1
:
0
));
fprintf
(
fp
,
"prefer_expansion_script = %d
\n
"
,
gameConf
.
prefer_expansion_script
);
fprintf
(
fp
,
"prefer_expansion_script = %d
\n
"
,
gameConf
.
prefer_expansion_script
);
...
@@ -1938,7 +2019,6 @@ void Game::OnResize() {
...
@@ -1938,7 +2019,6 @@ void Game::OnResize() {
wMainMenu
->
setRelativePosition
(
ResizeWin
(
370
,
200
,
650
,
415
));
wMainMenu
->
setRelativePosition
(
ResizeWin
(
370
,
200
,
650
,
415
));
wDeckEdit
->
setRelativePosition
(
Resize
(
309
,
5
,
605
,
130
));
wDeckEdit
->
setRelativePosition
(
Resize
(
309
,
5
,
605
,
130
));
cbDBLFList
->
setRelativePosition
(
Resize
(
80
,
5
,
220
,
30
));
cbDBDecks
->
setRelativePosition
(
Resize
(
80
,
35
,
220
,
60
));
cbDBDecks
->
setRelativePosition
(
Resize
(
80
,
35
,
220
,
60
));
btnClearDeck
->
setRelativePosition
(
Resize
(
115
,
99
,
165
,
120
));
btnClearDeck
->
setRelativePosition
(
Resize
(
115
,
99
,
165
,
120
));
btnSortDeck
->
setRelativePosition
(
Resize
(
60
,
99
,
110
,
120
));
btnSortDeck
->
setRelativePosition
(
Resize
(
60
,
99
,
110
,
120
));
...
@@ -1946,6 +2026,9 @@ void Game::OnResize() {
...
@@ -1946,6 +2026,9 @@ void Game::OnResize() {
btnSaveDeck
->
setRelativePosition
(
Resize
(
225
,
35
,
290
,
60
));
btnSaveDeck
->
setRelativePosition
(
Resize
(
225
,
35
,
290
,
60
));
btnSaveDeckAs
->
setRelativePosition
(
Resize
(
225
,
65
,
290
,
90
));
btnSaveDeckAs
->
setRelativePosition
(
Resize
(
225
,
65
,
290
,
90
));
ebDeckname
->
setRelativePosition
(
Resize
(
80
,
65
,
220
,
90
));
ebDeckname
->
setRelativePosition
(
Resize
(
80
,
65
,
220
,
90
));
cbDBCategory
->
setRelativePosition
(
Resize
(
80
,
5
,
220
,
30
));
btnManageDeck
->
setRelativePosition
(
Resize
(
225
,
5
,
290
,
30
));
wDeckManage
->
setRelativePosition
(
ResizeWin
(
310
,
135
,
800
,
465
));
wSort
->
setRelativePosition
(
Resize
(
930
,
132
,
1020
,
156
));
wSort
->
setRelativePosition
(
Resize
(
930
,
132
,
1020
,
156
));
cbSortType
->
setRelativePosition
(
Resize
(
10
,
2
,
85
,
22
));
cbSortType
->
setRelativePosition
(
Resize
(
10
,
2
,
85
,
22
));
...
@@ -1975,7 +2058,7 @@ void Game::OnResize() {
...
@@ -1975,7 +2058,7 @@ void Game::OnResize() {
btncatepos
.
LowerRightCorner
.
Y
-
btncatepos
.
getHeight
()
/
2
+
245
));
btncatepos
.
LowerRightCorner
.
Y
-
btncatepos
.
getHeight
()
/
2
+
245
));
wLinkMarks
->
setRelativePosition
(
ResizeWin
(
700
,
30
,
820
,
150
));
wLinkMarks
->
setRelativePosition
(
ResizeWin
(
700
,
30
,
820
,
150
));
st
Banlist
->
setRelativePosition
(
Resize
(
10
,
9
,
100
,
29
));
st
DBCategory
->
setRelativePosition
(
Resize
(
10
,
9
,
100
,
29
));
stDeck
->
setRelativePosition
(
Resize
(
10
,
39
,
100
,
59
));
stDeck
->
setRelativePosition
(
Resize
(
10
,
39
,
100
,
59
));
stCategory
->
setRelativePosition
(
Resize
(
10
,
2
+
25
/
6
,
70
,
22
+
25
/
6
));
stCategory
->
setRelativePosition
(
Resize
(
10
,
2
+
25
/
6
,
70
,
22
+
25
/
6
));
stLimit
->
setRelativePosition
(
Resize
(
205
,
2
+
25
/
6
,
280
,
22
+
25
/
6
));
stLimit
->
setRelativePosition
(
Resize
(
205
,
2
+
25
/
6
,
280
,
22
+
25
/
6
));
...
@@ -1991,7 +2074,6 @@ void Game::OnResize() {
...
@@ -1991,7 +2074,6 @@ void Game::OnResize() {
btnSideSort
->
setRelativePosition
(
Resize
(
375
,
100
,
435
,
130
));
btnSideSort
->
setRelativePosition
(
Resize
(
375
,
100
,
435
,
130
));
btnSideReload
->
setRelativePosition
(
Resize
(
440
,
100
,
500
,
130
));
btnSideReload
->
setRelativePosition
(
Resize
(
440
,
100
,
500
,
130
));
btnDeleteDeck
->
setRelativePosition
(
Resize
(
225
,
95
,
290
,
120
));
btnDeleteDeck
->
setRelativePosition
(
Resize
(
225
,
95
,
290
,
120
));
btnRenameDeck
->
setRelativePosition
(
Resize
(
170
,
99
,
220
,
120
));
btnDeckCode
->
setRelativePosition
(
Resize
(
5
,
65
,
75
,
90
));
btnDeckCode
->
setRelativePosition
(
Resize
(
5
,
65
,
75
,
90
));
wLanWindow
->
setRelativePosition
(
ResizeWin
(
220
,
100
,
800
,
520
));
wLanWindow
->
setRelativePosition
(
ResizeWin
(
220
,
100
,
800
,
520
));
...
@@ -2014,7 +2096,8 @@ void Game::OnResize() {
...
@@ -2014,7 +2096,8 @@ void Game::OnResize() {
wANAttribute
->
setRelativePosition
(
ResizeWin
(
500
,
200
,
830
,
285
));
wANAttribute
->
setRelativePosition
(
ResizeWin
(
500
,
200
,
830
,
285
));
wANRace
->
setRelativePosition
(
ResizeWin
(
480
,
200
,
850
,
410
));
wANRace
->
setRelativePosition
(
ResizeWin
(
480
,
200
,
850
,
410
));
wReplaySave
->
setRelativePosition
(
ResizeWin
(
510
,
200
,
820
,
320
));
wReplaySave
->
setRelativePosition
(
ResizeWin
(
510
,
200
,
820
,
320
));
wRenameDeck
->
setRelativePosition
(
ResizeWin
(
510
,
200
,
820
,
320
));
wDeckCode
->
setRelativePosition
(
ResizeWin
(
510
,
200
,
820
,
320
));
wDMQuery
->
setRelativePosition
(
ResizeWin
(
400
,
200
,
710
,
320
));
stHintMsg
->
setRelativePosition
(
ResizeWin
(
660
-
160
*
xScale
,
60
,
660
+
160
*
xScale
,
90
));
stHintMsg
->
setRelativePosition
(
ResizeWin
(
660
-
160
*
xScale
,
60
,
660
+
160
*
xScale
,
90
));
...
...
gframe/game.h
View file @
55aa85c9
...
@@ -27,11 +27,13 @@ struct Config {
...
@@ -27,11 +27,13 @@ struct Config {
wchar_t
lastport
[
10
];
wchar_t
lastport
[
10
];
wchar_t
nickname
[
20
];
wchar_t
nickname
[
20
];
wchar_t
gamename
[
20
];
wchar_t
gamename
[
20
];
wchar_t
lastcategory
[
64
];
wchar_t
lastdeck
[
64
];
wchar_t
lastdeck
[
64
];
wchar_t
textfont
[
256
];
wchar_t
textfont
[
256
];
wchar_t
numfont
[
256
];
wchar_t
numfont
[
256
];
wchar_t
roompass
[
20
];
wchar_t
roompass
[
20
];
wchar_t
locale
[
64
];
wchar_t
locale
[
64
];
wchar_t
bot_deck_path
[
64
];
//settings
//settings
int
chkMAutoPos
;
int
chkMAutoPos
;
int
chkSTAutoPos
;
int
chkSTAutoPos
;
...
@@ -142,7 +144,9 @@ public:
...
@@ -142,7 +144,9 @@ public:
void
InitStaticText
(
irr
::
gui
::
IGUIStaticText
*
pControl
,
u32
cWidth
,
u32
cHeight
,
irr
::
gui
::
CGUITTFont
*
font
,
const
wchar_t
*
text
);
void
InitStaticText
(
irr
::
gui
::
IGUIStaticText
*
pControl
,
u32
cWidth
,
u32
cHeight
,
irr
::
gui
::
CGUITTFont
*
font
,
const
wchar_t
*
text
);
void
SetStaticText
(
irr
::
gui
::
IGUIStaticText
*
pControl
,
u32
cWidth
,
irr
::
gui
::
CGUITTFont
*
font
,
const
wchar_t
*
text
,
u32
pos
=
0
);
void
SetStaticText
(
irr
::
gui
::
IGUIStaticText
*
pControl
,
u32
cWidth
,
irr
::
gui
::
CGUITTFont
*
font
,
const
wchar_t
*
text
,
u32
pos
=
0
);
void
LoadExpansions
();
void
LoadExpansions
();
void
RefreshDeck
(
irr
::
gui
::
IGUIComboBox
*
cbDeck
);
void
RefreshCategoryDeck
(
irr
::
gui
::
IGUIComboBox
*
cbCategory
,
irr
::
gui
::
IGUIComboBox
*
cbDeck
,
bool
selectlastused
=
true
);
void
RefreshDeck
(
irr
::
gui
::
IGUIComboBox
*
cbCategory
,
irr
::
gui
::
IGUIComboBox
*
cbDeck
);
void
RefreshDeck
(
const
wchar_t
*
deckpath
,
irr
::
gui
::
IGUIComboBox
*
cbDeck
);
void
RefreshReplay
();
void
RefreshReplay
();
void
RefreshSingleplay
();
void
RefreshSingleplay
();
void
RefreshBot
();
void
RefreshBot
();
...
@@ -377,6 +381,7 @@ public:
...
@@ -377,6 +381,7 @@ public:
irr
::
gui
::
IGUIStaticText
*
stHostPrepDuelist
[
4
];
irr
::
gui
::
IGUIStaticText
*
stHostPrepDuelist
[
4
];
irr
::
gui
::
IGUICheckBox
*
chkHostPrepReady
[
4
];
irr
::
gui
::
IGUICheckBox
*
chkHostPrepReady
[
4
];
irr
::
gui
::
IGUIButton
*
btnHostPrepKick
[
4
];
irr
::
gui
::
IGUIButton
*
btnHostPrepKick
[
4
];
irr
::
gui
::
IGUIComboBox
*
cbCategorySelect
;
irr
::
gui
::
IGUIComboBox
*
cbDeckSelect
;
irr
::
gui
::
IGUIComboBox
*
cbDeckSelect
;
irr
::
gui
::
IGUIStaticText
*
stHostPrepRule
;
irr
::
gui
::
IGUIStaticText
*
stHostPrepRule
;
irr
::
gui
::
IGUIStaticText
*
stHostPrepOB
;
irr
::
gui
::
IGUIStaticText
*
stHostPrepOB
;
...
@@ -500,8 +505,9 @@ public:
...
@@ -500,8 +505,9 @@ public:
irr
::
gui
::
IGUIButton
*
btnEP
;
irr
::
gui
::
IGUIButton
*
btnEP
;
//deck edit
//deck edit
irr
::
gui
::
IGUIStaticText
*
wDeckEdit
;
irr
::
gui
::
IGUIStaticText
*
wDeckEdit
;
irr
::
gui
::
IGUIComboBox
*
cbDB
LFList
;
irr
::
gui
::
IGUIComboBox
*
cbDB
Category
;
irr
::
gui
::
IGUIComboBox
*
cbDBDecks
;
irr
::
gui
::
IGUIComboBox
*
cbDBDecks
;
irr
::
gui
::
IGUIButton
*
btnManageDeck
;
irr
::
gui
::
IGUIButton
*
btnClearDeck
;
irr
::
gui
::
IGUIButton
*
btnClearDeck
;
irr
::
gui
::
IGUIButton
*
btnSortDeck
;
irr
::
gui
::
IGUIButton
*
btnSortDeck
;
irr
::
gui
::
IGUIButton
*
btnShuffleDeck
;
irr
::
gui
::
IGUIButton
*
btnShuffleDeck
;
...
@@ -513,7 +519,6 @@ public:
...
@@ -513,7 +519,6 @@ public:
irr
::
gui
::
IGUIButton
*
btnSideSort
;
irr
::
gui
::
IGUIButton
*
btnSideSort
;
irr
::
gui
::
IGUIButton
*
btnSideReload
;
irr
::
gui
::
IGUIButton
*
btnSideReload
;
irr
::
gui
::
IGUIEditBox
*
ebDeckname
;
irr
::
gui
::
IGUIEditBox
*
ebDeckname
;
irr
::
gui
::
IGUIButton
*
btnRenameDeck
;
irr
::
gui
::
IGUIButton
*
btnDeckCode
;
irr
::
gui
::
IGUIButton
*
btnDeckCode
;
//deck rename
//deck rename
irr
::
gui
::
IGUIWindow
*
wRenameDeck
;
irr
::
gui
::
IGUIWindow
*
wRenameDeck
;
...
@@ -526,7 +531,7 @@ public:
...
@@ -526,7 +531,7 @@ public:
irr
::
gui
::
IGUIButton
*
btnDeckCodeYes
;
irr
::
gui
::
IGUIButton
*
btnDeckCodeYes
;
irr
::
gui
::
IGUIButton
*
btnDeckCodeNo
;
irr
::
gui
::
IGUIButton
*
btnDeckCodeNo
;
//
//
irr
::
gui
::
IGUIStaticText
*
st
Banlist
;
irr
::
gui
::
IGUIStaticText
*
st
DBCategory
;
irr
::
gui
::
IGUIStaticText
*
stDeck
;
irr
::
gui
::
IGUIStaticText
*
stDeck
;
irr
::
gui
::
IGUIStaticText
*
stCategory
;
irr
::
gui
::
IGUIStaticText
*
stCategory
;
irr
::
gui
::
IGUIStaticText
*
stLimit
;
irr
::
gui
::
IGUIStaticText
*
stLimit
;
...
@@ -537,6 +542,26 @@ public:
...
@@ -537,6 +542,26 @@ public:
irr
::
gui
::
IGUIStaticText
*
stStar
;
irr
::
gui
::
IGUIStaticText
*
stStar
;
irr
::
gui
::
IGUIStaticText
*
stSearch
;
irr
::
gui
::
IGUIStaticText
*
stSearch
;
irr
::
gui
::
IGUIStaticText
*
stScale
;
irr
::
gui
::
IGUIStaticText
*
stScale
;
//deck manage
irr
::
gui
::
IGUIWindow
*
wDeckManage
;
irr
::
gui
::
IGUIListBox
*
lstCategories
;
irr
::
gui
::
IGUIListBox
*
lstDecks
;
irr
::
gui
::
IGUIButton
*
btnNewCategory
;
irr
::
gui
::
IGUIButton
*
btnRenameCategory
;
irr
::
gui
::
IGUIButton
*
btnDeleteCategory
;
irr
::
gui
::
IGUIButton
*
btnNewDeck
;
irr
::
gui
::
IGUIButton
*
btnRenameDeck
;
irr
::
gui
::
IGUIButton
*
btnDMDeleteDeck
;
irr
::
gui
::
IGUIButton
*
btnMoveDeck
;
irr
::
gui
::
IGUIButton
*
btnCopyDeck
;
irr
::
gui
::
IGUIWindow
*
wDMQuery
;
irr
::
gui
::
IGUIStaticText
*
stDMMessage
;
irr
::
gui
::
IGUIStaticText
*
stDMMessage2
;
irr
::
gui
::
IGUIEditBox
*
ebDMName
;
irr
::
gui
::
IGUIComboBox
*
cbDMCategory
;
irr
::
gui
::
IGUIButton
*
btnDMOK
;
irr
::
gui
::
IGUIButton
*
btnDMCancel
;
irr
::
gui
::
IGUIComboBox
*
cbLFList
;
//filter
//filter
irr
::
gui
::
IGUIStaticText
*
wFilter
;
irr
::
gui
::
IGUIStaticText
*
wFilter
;
irr
::
gui
::
IGUIScrollBar
*
scrFilter
;
irr
::
gui
::
IGUIScrollBar
*
scrFilter
;
...
@@ -640,6 +665,7 @@ extern HostInfo game_info;
...
@@ -640,6 +665,7 @@ extern HostInfo game_info;
#define CHECKBOX_HP_READY 125
#define CHECKBOX_HP_READY 125
#define BUTTON_HP_READY 126
#define BUTTON_HP_READY 126
#define BUTTON_HP_NOTREADY 127
#define BUTTON_HP_NOTREADY 127
#define COMBOBOX_HP_CATEGORY 128
#define LISTBOX_REPLAY_LIST 130
#define LISTBOX_REPLAY_LIST 130
#define BUTTON_LOAD_REPLAY 131
#define BUTTON_LOAD_REPLAY 131
#define BUTTON_CANCEL_REPLAY 132
#define BUTTON_CANCEL_REPLAY 132
...
@@ -729,7 +755,9 @@ extern HostInfo game_info;
...
@@ -729,7 +755,9 @@ extern HostInfo game_info;
#define BUTTON_SURRENDER_YES 297
#define BUTTON_SURRENDER_YES 297
#define BUTTON_SURRENDER_NO 298
#define BUTTON_SURRENDER_NO 298
#define COMBOBOX_DBLFLIST 301
#define BUTTON_MANAGE_DECK 300
#define COMBOBOX_DBCATEGORY 301
#define COMBOBOX_DBDECKS 302
#define COMBOBOX_DBDECKS 302
#define BUTTON_CLEAR_DECK 303
#define BUTTON_CLEAR_DECK 303
#define BUTTON_SAVE_DECK 304
#define BUTTON_SAVE_DECK 304
...
@@ -753,6 +781,22 @@ extern HostInfo game_info;
...
@@ -753,6 +781,22 @@ extern HostInfo game_info;
#define BUTTON_MARKS_FILTER 322
#define BUTTON_MARKS_FILTER 322
#define BUTTON_MARKERS_OK 323
#define BUTTON_MARKERS_OK 323
#define COMBOBOX_SORTTYPE 324
#define COMBOBOX_SORTTYPE 324
#define WINDOW_DECK_MANAGE 330
#define BUTTON_NEW_CATEGORY 331
#define BUTTON_RENAME_CATEGORY 332
#define BUTTON_DELETE_CATEGORY 333
#define BUTTON_NEW_DECK 334
#define BUTTON_RENAME_DECK 335
#define BUTTON_DELETE_DECK_DM 336
#define BUTTON_MOVE_DECK 337
#define BUTTON_COPY_DECK 338
#define LISTBOX_CATEGORIES 339
#define LISTBOX_DECKS 340
#define BUTTON_DM_OK 341
#define BUTTON_DM_CANCEL 342
#define COMBOBOX_LFLIST 349
#define CHECKBOX_AUTO_SEARCH 360
#define CHECKBOX_AUTO_SEARCH 360
#define CHECKBOX_ENABLE_SOUND 361
#define CHECKBOX_ENABLE_SOUND 361
#define CHECKBOX_ENABLE_MUSIC 362
#define CHECKBOX_ENABLE_MUSIC 362
...
@@ -770,10 +814,6 @@ extern HostInfo game_info;
...
@@ -770,10 +814,6 @@ extern HostInfo game_info;
#define CHECKBOX_REGEX 374
#define CHECKBOX_REGEX 374
#define COMBOBOX_LOCALE 375
#define COMBOBOX_LOCALE 375
#define BUTTON_RENAME_DECK 386
#define BUTTON_RENAME_DECK_SAVE 387
#define BUTTON_RENAME_DECK_CANCEL 388
#define BUTTON_DECK_CODE 389
#define BUTTON_DECK_CODE 389
#define BUTTON_DECK_CODE_SAVE 390
#define BUTTON_DECK_CODE_SAVE 390
#define BUTTON_DECK_CODE_CANCEL 391
#define BUTTON_DECK_CODE_CANCEL 391
...
...
gframe/gframe.cpp
View file @
55aa85c9
...
@@ -170,6 +170,7 @@ int main(int argc, char* argv[]) {
...
@@ -170,6 +170,7 @@ int main(int argc, char* argv[]) {
}
else
if
(
!
wcscmp
(
wargv
[
i
],
L"-d"
))
{
// Deck
}
else
if
(
!
wcscmp
(
wargv
[
i
],
L"-d"
))
{
// Deck
++
i
;
++
i
;
if
(
i
+
1
<
wargc
)
{
// select deck
if
(
i
+
1
<
wargc
)
{
// select deck
ygo
::
mainGame
->
gameConf
.
lastcategory
[
0
]
=
0
;
wcscpy
(
ygo
::
mainGame
->
gameConf
.
lastdeck
,
wargv
[
i
]);
wcscpy
(
ygo
::
mainGame
->
gameConf
.
lastdeck
,
wargv
[
i
]);
continue
;
continue
;
}
else
{
// open deck
}
else
{
// open deck
...
...
gframe/menu_handler.cpp
View file @
55aa85c9
...
@@ -12,6 +12,8 @@
...
@@ -12,6 +12,8 @@
namespace
ygo
{
namespace
ygo
{
void
UpdateDeck
()
{
void
UpdateDeck
()
{
BufferIO
::
CopyWStr
(
mainGame
->
cbCategorySelect
->
getItem
(
mainGame
->
cbCategorySelect
->
getSelected
()),
mainGame
->
gameConf
.
lastcategory
,
64
);
BufferIO
::
CopyWStr
(
mainGame
->
cbDeckSelect
->
getItem
(
mainGame
->
cbDeckSelect
->
getSelected
()),
BufferIO
::
CopyWStr
(
mainGame
->
cbDeckSelect
->
getItem
(
mainGame
->
cbDeckSelect
->
getSelected
()),
mainGame
->
gameConf
.
lastdeck
,
64
);
mainGame
->
gameConf
.
lastdeck
,
64
);
char
deckbuf
[
1024
];
char
deckbuf
[
1024
];
...
@@ -141,6 +143,7 @@ bool MenuHandler::OnEvent(const irr::SEvent& event) {
...
@@ -141,6 +143,7 @@ bool MenuHandler::OnEvent(const irr::SEvent& event) {
break
;
break
;
}
}
case
BUTTON_HP_DUELIST
:
{
case
BUTTON_HP_DUELIST
:
{
mainGame
->
cbCategorySelect
->
setEnabled
(
true
);
mainGame
->
cbDeckSelect
->
setEnabled
(
true
);
mainGame
->
cbDeckSelect
->
setEnabled
(
true
);
DuelClient
::
SendPacketToServer
(
CTOS_HS_TODUELIST
);
DuelClient
::
SendPacketToServer
(
CTOS_HS_TODUELIST
);
break
;
break
;
...
@@ -162,17 +165,19 @@ bool MenuHandler::OnEvent(const irr::SEvent& event) {
...
@@ -162,17 +165,19 @@ bool MenuHandler::OnEvent(const irr::SEvent& event) {
break
;
break
;
}
}
case
BUTTON_HP_READY
:
{
case
BUTTON_HP_READY
:
{
if
(
mainGame
->
cbDeckSelect
->
getSelected
()
==
-
1
||
if
(
mainGame
->
cb
CategorySelect
->
getSelected
()
==
-
1
||
mainGame
->
cb
DeckSelect
->
getSelected
()
==
-
1
||
!
deckManager
.
LoadDeck
(
mainGame
->
cb
DeckSelect
->
getItem
(
mainGame
->
cbDeckSelect
->
getSelected
())
))
{
!
deckManager
.
LoadDeck
(
mainGame
->
cb
CategorySelect
,
mainGame
->
cbDeckSelect
))
{
break
;
break
;
}
}
UpdateDeck
();
UpdateDeck
();
DuelClient
::
SendPacketToServer
(
CTOS_HS_READY
);
DuelClient
::
SendPacketToServer
(
CTOS_HS_READY
);
mainGame
->
cbCategorySelect
->
setEnabled
(
false
);
mainGame
->
cbDeckSelect
->
setEnabled
(
false
);
mainGame
->
cbDeckSelect
->
setEnabled
(
false
);
break
;
break
;
}
}
case
BUTTON_HP_NOTREADY
:
{
case
BUTTON_HP_NOTREADY
:
{
DuelClient
::
SendPacketToServer
(
CTOS_HS_NOTREADY
);
DuelClient
::
SendPacketToServer
(
CTOS_HS_NOTREADY
);
mainGame
->
cbCategorySelect
->
setEnabled
(
true
);
mainGame
->
cbDeckSelect
->
setEnabled
(
true
);
mainGame
->
cbDeckSelect
->
setEnabled
(
true
);
break
;
break
;
}
}
...
@@ -374,7 +379,7 @@ bool MenuHandler::OnEvent(const irr::SEvent& event) {
...
@@ -374,7 +379,7 @@ bool MenuHandler::OnEvent(const irr::SEvent& event) {
break
;
break
;
}
}
case
BUTTON_DECK_EDIT
:
{
case
BUTTON_DECK_EDIT
:
{
mainGame
->
Refresh
Deck
(
mainGame
->
cbDBDecks
);
mainGame
->
Refresh
CategoryDeck
(
mainGame
->
cbDBCategory
,
mainGame
->
cbDBDecks
);
if
(
open_file
&&
deckManager
.
LoadDeck
(
open_file_name
))
{
if
(
open_file
&&
deckManager
.
LoadDeck
(
open_file_name
))
{
#ifdef WIN32
#ifdef WIN32
wchar_t
*
dash
=
wcsrchr
(
open_file_name
,
L'\\'
);
wchar_t
*
dash
=
wcsrchr
(
open_file_name
,
L'\\'
);
...
@@ -397,8 +402,8 @@ bool MenuHandler::OnEvent(const irr::SEvent& event) {
...
@@ -397,8 +402,8 @@ bool MenuHandler::OnEvent(const irr::SEvent& event) {
}
}
}
}
open_file
=
false
;
open_file
=
false
;
}
else
if
(
mainGame
->
cbDBDecks
->
getSelected
()
!=
-
1
)
{
}
else
if
(
mainGame
->
cbDB
Category
->
getSelected
()
!=
-
1
&&
mainGame
->
cbDB
Decks
->
getSelected
()
!=
-
1
)
{
deckManager
.
LoadDeck
(
mainGame
->
cbDB
Decks
->
getItem
(
mainGame
->
cbDBDecks
->
getSelected
())
);
deckManager
.
LoadDeck
(
mainGame
->
cbDB
Category
,
mainGame
->
cbDBDecks
);
mainGame
->
ebDeckname
->
setText
(
L""
);
mainGame
->
ebDeckname
->
setText
(
L""
);
}
}
mainGame
->
HideElement
(
mainGame
->
wMainMenu
);
mainGame
->
HideElement
(
mainGame
->
wMainMenu
);
...
@@ -557,6 +562,23 @@ bool MenuHandler::OnEvent(const irr::SEvent& event) {
...
@@ -557,6 +562,23 @@ bool MenuHandler::OnEvent(const irr::SEvent& event) {
}
}
break
;
break
;
}
}
case
irr
:
:
gui
::
EGET_COMBO_BOX_CHANGED
:
{
switch
(
id
)
{
case
COMBOBOX_HP_CATEGORY
:
{
int
catesel
=
mainGame
->
cbCategorySelect
->
getSelected
();
if
(
catesel
==
3
)
{
catesel
=
2
;
mainGame
->
cbCategorySelect
->
setSelected
(
2
);
}
if
(
catesel
>=
0
)
{
mainGame
->
RefreshDeck
(
mainGame
->
cbCategorySelect
,
mainGame
->
cbDeckSelect
);
mainGame
->
cbDeckSelect
->
setSelected
(
0
);
}
break
;
}
}
break
;
}
case
irr
:
:
gui
::
EGET_CHECKBOX_CHANGED
:
{
case
irr
:
:
gui
::
EGET_CHECKBOX_CHANGED
:
{
switch
(
id
)
{
switch
(
id
)
{
case
CHECKBOX_HP_READY
:
{
case
CHECKBOX_HP_READY
:
{
...
@@ -564,16 +586,18 @@ bool MenuHandler::OnEvent(const irr::SEvent& event) {
...
@@ -564,16 +586,18 @@ bool MenuHandler::OnEvent(const irr::SEvent& event) {
break
;
break
;
mainGame
->
env
->
setFocus
(
mainGame
->
wHostPrepare
);
mainGame
->
env
->
setFocus
(
mainGame
->
wHostPrepare
);
if
(
static_cast
<
irr
::
gui
::
IGUICheckBox
*>
(
caller
)
->
isChecked
())
{
if
(
static_cast
<
irr
::
gui
::
IGUICheckBox
*>
(
caller
)
->
isChecked
())
{
if
(
mainGame
->
cbDeckSelect
->
getSelected
()
==
-
1
||
if
(
mainGame
->
cb
CategorySelect
->
getSelected
()
==
-
1
||
mainGame
->
cb
DeckSelect
->
getSelected
()
==
-
1
||
!
deckManager
.
LoadDeck
(
mainGame
->
cbDeckSelect
->
getItem
(
mainGame
->
cbDeckSelect
->
getSelected
())
))
{
!
deckManager
.
LoadDeck
(
mainGame
->
cbCategorySelect
,
mainGame
->
cbDeckSelect
))
{
static_cast
<
irr
::
gui
::
IGUICheckBox
*>
(
caller
)
->
setChecked
(
false
);
static_cast
<
irr
::
gui
::
IGUICheckBox
*>
(
caller
)
->
setChecked
(
false
);
break
;
break
;
}
}
UpdateDeck
();
UpdateDeck
();
DuelClient
::
SendPacketToServer
(
CTOS_HS_READY
);
DuelClient
::
SendPacketToServer
(
CTOS_HS_READY
);
mainGame
->
cbCategorySelect
->
setEnabled
(
false
);
mainGame
->
cbDeckSelect
->
setEnabled
(
false
);
mainGame
->
cbDeckSelect
->
setEnabled
(
false
);
}
else
{
}
else
{
DuelClient
::
SendPacketToServer
(
CTOS_HS_NOTREADY
);
DuelClient
::
SendPacketToServer
(
CTOS_HS_NOTREADY
);
mainGame
->
cbCategorySelect
->
setEnabled
(
true
);
mainGame
->
cbDeckSelect
->
setEnabled
(
true
);
mainGame
->
cbDeckSelect
->
setEnabled
(
true
);
}
}
break
;
break
;
...
...
gframe/myfilesystem.h
View file @
55aa85c9
...
@@ -50,6 +50,37 @@ public:
...
@@ -50,6 +50,37 @@ public:
return
MakeDir
(
wdir
);
return
MakeDir
(
wdir
);
}
}
static
bool
Rename
(
const
wchar_t
*
woldname
,
const
wchar_t
*
wnewname
)
{
return
MoveFileW
(
woldname
,
wnewname
);
}
static
bool
Rename
(
const
char
*
oldname
,
const
char
*
newname
)
{
wchar_t
woldname
[
1024
];
wchar_t
wnewname
[
1024
];
BufferIO
::
DecodeUTF8
(
oldname
,
woldname
);
BufferIO
::
DecodeUTF8
(
newname
,
wnewname
);
return
Rename
(
woldname
,
wnewname
);
}
static
bool
DeleteDir
(
const
wchar_t
*
wdir
)
{
wchar_t
pdir
[
256
];
BufferIO
::
CopyWStr
(
wdir
,
pdir
,
256
);
pdir
[
wcslen
(
wdir
)
+
1
]
=
0
;
SHFILEOPSTRUCTW
lpFileOp
;
lpFileOp
.
hwnd
=
NULL
;
lpFileOp
.
wFunc
=
FO_DELETE
;
lpFileOp
.
pFrom
=
pdir
;
lpFileOp
.
pTo
=
0
;
lpFileOp
.
fFlags
=
FOF_ALLOWUNDO
|
FOF_NOCONFIRMATION
|
FOF_NOERRORUI
|
FOF_SILENT
;
return
SHFileOperationW
(
&
lpFileOp
)
==
0
;
}
static
bool
DeleteDir
(
const
char
*
dir
)
{
wchar_t
wdir
[
1024
];
BufferIO
::
DecodeUTF8
(
dir
,
wdir
);
return
DeleteDir
(
wdir
);
}
static
void
TraversalDir
(
const
wchar_t
*
wpath
,
const
std
::
function
<
void
(
const
wchar_t
*
,
bool
)
>&
cb
)
{
static
void
TraversalDir
(
const
wchar_t
*
wpath
,
const
std
::
function
<
void
(
const
wchar_t
*
,
bool
)
>&
cb
)
{
wchar_t
findstr
[
1024
];
wchar_t
findstr
[
1024
];
wcscpy
(
findstr
,
wpath
);
wcscpy
(
findstr
,
wpath
);
...
@@ -59,7 +90,8 @@ public:
...
@@ -59,7 +90,8 @@ public:
if
(
fh
==
INVALID_HANDLE_VALUE
)
if
(
fh
==
INVALID_HANDLE_VALUE
)
return
;
return
;
do
{
do
{
cb
(
fdataw
.
cFileName
,
(
fdataw
.
dwFileAttributes
&
FILE_ATTRIBUTE_DIRECTORY
));
if
(
mywcsncasecmp
(
fdataw
.
cFileName
,
L"."
,
1
)
&&
mywcsncasecmp
(
fdataw
.
cFileName
,
L".."
,
2
))
cb
(
fdataw
.
cFileName
,
(
fdataw
.
dwFileAttributes
&
FILE_ATTRIBUTE_DIRECTORY
));
}
while
(
FindNextFileW
(
fh
,
&
fdataw
));
}
while
(
FindNextFileW
(
fh
,
&
fdataw
));
FindClose
(
fh
);
FindClose
(
fh
);
}
}
...
@@ -111,6 +143,45 @@ public:
...
@@ -111,6 +143,45 @@ public:
return
MakeDir
(
dir
);
return
MakeDir
(
dir
);
}
}
static
bool
Rename
(
const
wchar_t
*
woldname
,
const
wchar_t
*
wnewname
)
{
char
oldname
[
1024
];
char
newname
[
1024
];
BufferIO
::
EncodeUTF8
(
woldname
,
oldname
);
BufferIO
::
EncodeUTF8
(
wnewname
,
newname
);
return
Rename
(
oldname
,
newname
);
}
static
bool
Rename
(
const
char
*
oldname
,
const
char
*
newname
)
{
return
rename
(
oldname
,
newname
)
==
0
;
}
static
bool
DeleteDir
(
const
wchar_t
*
wdir
)
{
char
dir
[
1024
];
BufferIO
::
EncodeUTF8
(
wdir
,
dir
);
return
DeleteDir
(
dir
);
}
static
bool
DeleteDir
(
const
char
*
dir
)
{
bool
success
=
true
;
TraversalDir
(
dir
,
[
dir
,
&
success
](
const
char
*
name
,
bool
isdir
)
{
char
full_path
[
256
];
sprintf
(
full_path
,
"%s/%s"
,
dir
,
name
);
if
(
isdir
)
{
if
(
!
DeleteDir
(
full_path
))
success
=
false
;
}
else
{
if
(
unlink
(
full_path
)
!=
0
)
success
=
false
;
}
});
if
(
rmdir
(
dir
)
!=
0
)
success
=
false
;
return
success
;
}
#ifndef YGOPRO_SERVER_MODE
#ifndef YGOPRO_SERVER_MODE
struct
file_unit
{
struct
file_unit
{
std
::
string
filename
;
std
::
string
filename
;
...
@@ -138,10 +209,15 @@ public:
...
@@ -138,10 +209,15 @@ public:
strcat
(
fname
,
dirp
->
d_name
);
strcat
(
fname
,
dirp
->
d_name
);
stat
(
fname
,
&
fileStat
);
stat
(
fname
,
&
fileStat
);
#ifdef YGOPRO_SERVER_MODE
#ifdef YGOPRO_SERVER_MODE
cb
(
dirp
->
d_name
,
S_ISDIR
(
fileStat
.
st_mode
));
bool
is_dir
=
S_ISDIR
(
fileStat
.
st_mode
);
if
(
is_dir
&&
(
strcmp
(
dirp
->
d_name
,
"."
)
==
0
||
strcmp
(
dirp
->
d_name
,
".."
)
==
0
)
||
strcmp
(
dirp
->
d_name
,
".git"
)
==
0
)
continue
;
cb
(
dirp
->
d_name
,
is_dir
);
#else
#else
funit
.
filename
=
std
::
string
(
dirp
->
d_name
);
funit
.
filename
=
std
::
string
(
dirp
->
d_name
);
funit
.
is_dir
=
S_ISDIR
(
fileStat
.
st_mode
);
funit
.
is_dir
=
S_ISDIR
(
fileStat
.
st_mode
);
if
(
funit
.
is_dir
&&
(
strcmp
(
dirp
->
d_name
,
"."
)
==
0
||
strcmp
(
dirp
->
d_name
,
".."
)
==
0
)
||
strcmp
(
dirp
->
d_name
,
".git"
)
==
0
)
continue
;
file_list
.
push_back
(
funit
);
file_list
.
push_back
(
funit
);
#endif
#endif
}
}
...
...
strings.conf
View file @
55aa85c9
...
@@ -340,7 +340,7 @@
...
@@ -340,7 +340,7 @@
!
system
1297
切洗手卡
!
system
1297
切洗手卡
!
system
1298
辅助功能
!
system
1298
辅助功能
!
system
1299
加快动画效果
!
system
1299
加快动画效果
!
system
1300
禁限卡表
:
!
system
1300
卡组分类
:
!
system
1301
卡组列表:
!
system
1301
卡组列表:
!
system
1302
保存
!
system
1302
保存
!
system
1303
另存
!
system
1303
另存
...
@@ -367,6 +367,7 @@
...
@@ -367,6 +367,7 @@
!
system
1325
关键字:
!
system
1325
关键字:
!
system
1326
效果
!
system
1326
效果
!
system
1327
搜索
!
system
1327
搜索
!
system
1328
管理
!
system
1329
系列:
!
system
1329
系列:
!
system
1330
主卡组:
!
system
1330
主卡组:
!
system
1331
额外卡组:
!
system
1331
额外卡组:
...
@@ -410,9 +411,6 @@
...
@@ -410,9 +411,6 @@
!
system
1372
守备↑
!
system
1372
守备↑
!
system
1373
名称↓
!
system
1373
名称↓
!
system
1374
连接标记
!
system
1374
连接标记
!
system
1375
重命名成功
!
system
1376
重命名卡组
!
system
1377
卡组文件:
!
system
1378
使用多个关键词搜索卡片
!
system
1378
使用多个关键词搜索卡片
!
system
1379
启用扩展卡包调试模式
!
system
1379
启用扩展卡包调试模式
!
system
1380
人机模式
!
system
1380
人机模式
...
@@ -450,6 +448,27 @@
...
@@ -450,6 +448,27 @@
!
system
1419
副卡组数量应不超过
15
张,当前卡组数量为%
d
张。
!
system
1419
副卡组数量应不超过
15
张,当前卡组数量为%
d
张。
!
system
1420
有额外卡组卡片存在于主卡组,可能是额外卡组数量超过
15
张。
!
system
1420
有额外卡组卡片存在于主卡组,可能是额外卡组数量超过
15
张。
!
system
1421
宣言的卡不符合条件,或无法被主机识别。
!
system
1421
宣言的卡不符合条件,或无法被主机识别。
!
system
1450
卡包展示
!
system
1451
人机卡组
!
system
1452
未分类卡组
!
system
1453
--------
!
system
1460
卡组管理
!
system
1461
新建分类
!
system
1462
重命名分类
!
system
1463
删除分类
!
system
1464
新建卡组
!
system
1465
重命名卡组
!
system
1466
删除卡组
!
system
1467
移动到分类
!
system
1468
复制到分类
!
system
1469
请输入分类名:
!
system
1470
确实要删除此分类和分类下全部卡组吗?
!
system
1471
请输入卡组名:
!
system
1472
请选择要移动到的分类:
!
system
1473
请选择要复制到的分类:
!
system
1474
已存在同名分类
!
system
1475
已存在同名卡组
!
system
1476
删除失败
!
system
1500
决斗结束。
!
system
1500
决斗结束。
!
system
1501
录像结束。
!
system
1501
录像结束。
!
system
1502
连接已断开。
!
system
1502
连接已断开。
...
...
system.conf
View file @
55aa85c9
...
@@ -34,6 +34,7 @@ search_regex = 0
...
@@ -34,6 +34,7 @@ search_regex = 0
ignore_deck_changes
=
0
ignore_deck_changes
=
0
default_ot
=
1
default_ot
=
1
enable_bot_mode
=
1
enable_bot_mode
=
1
bot_deck_path
= ./
windbot
/
Decks
quick_animation
=
1
quick_animation
=
1
auto_save_replay
=
1
auto_save_replay
=
1
window_maximized
=
0
window_maximized
=
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