Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Y
ygopro
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Locked Files
Issues
0
Issues
0
List
Boards
Labels
Service Desk
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Security & Compliance
Security & Compliance
Dependency List
License Compliance
Packages
Packages
List
Container Registry
Analytics
Analytics
CI / CD
Code Review
Insights
Issues
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
wyykak
ygopro
Commits
d0abf558
Commit
d0abf558
authored
Jul 28, 2019
by
DailyShana
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
update struct LFList
use std::wstring and std::unordered_map directly
parent
f23019eb
Changes
8
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
43 additions
and
45 deletions
+43
-45
gframe/deck_con.cpp
gframe/deck_con.cpp
+3
-3
gframe/deck_con.h
gframe/deck_con.h
+1
-1
gframe/deck_manager.cpp
gframe/deck_manager.cpp
+27
-27
gframe/deck_manager.h
gframe/deck_manager.h
+4
-3
gframe/drawing.cpp
gframe/drawing.cpp
+2
-2
gframe/duelclient.cpp
gframe/duelclient.cpp
+3
-6
gframe/game.cpp
gframe/game.cpp
+2
-2
gframe/game.h
gframe/game.h
+1
-1
No files found.
gframe/deck_con.cpp
View file @
d0abf558
...
...
@@ -74,7 +74,7 @@ void DeckBuilder::Initialize() {
mainGame
->
btnSideShuffle
->
setVisible
(
false
);
mainGame
->
btnSideSort
->
setVisible
(
false
);
mainGame
->
btnSideReload
->
setVisible
(
false
);
filterList
=
deckManager
.
_lfList
[
0
].
content
;
filterList
=
&
deckManager
.
_lfList
[
0
].
content
;
mainGame
->
cbDBLFList
->
setSelected
(
0
);
ClearSearch
();
mouse_pos
.
set
(
0
,
0
);
...
...
@@ -363,7 +363,7 @@ bool DeckBuilder::OnEvent(const irr::SEvent& event) {
case
irr
:
:
gui
::
EGET_COMBO_BOX_CHANGED
:
{
switch
(
id
)
{
case
COMBOBOX_DBLFLIST
:
{
filterList
=
deckManager
.
_lfList
[
mainGame
->
cbDBLFList
->
getSelected
()].
content
;
filterList
=
&
deckManager
.
_lfList
[
mainGame
->
cbDBLFList
->
getSelected
()].
content
;
break
;
}
case
COMBOBOX_DBDECKS
:
{
...
...
@@ -917,7 +917,7 @@ void DeckBuilder::FilterCards() {
if
(
filter_marks
&&
(
data
.
link_marker
&
filter_marks
)
!=
filter_marks
)
continue
;
if
(
filter_lm
)
{
if
(
filter_lm
<=
3
&&
(
!
filterList
->
count
(
ptr
->
first
)
||
(
*
filterList
)
[
ptr
->
first
]
!=
filter_lm
-
1
))
if
(
filter_lm
<=
3
&&
(
!
filterList
->
count
(
ptr
->
first
)
||
(
*
filterList
)
.
at
(
ptr
->
first
)
!=
filter_lm
-
1
))
continue
;
if
(
filter_lm
==
4
&&
data
.
ot
!=
1
)
continue
;
...
...
gframe/deck_con.h
View file @
d0abf558
...
...
@@ -65,7 +65,7 @@ public:
int
prev_sel
;
bool
is_modified
;
std
::
unordered_map
<
int
,
int
>*
filterList
;
const
std
::
unordered_map
<
int
,
int
>*
filterList
;
std
::
vector
<
code_pointer
>
results
;
wchar_t
result_string
[
8
];
};
...
...
gframe/deck_manager.cpp
View file @
d0abf558
...
...
@@ -9,7 +9,7 @@ namespace ygo {
DeckManager
deckManager
;
void
DeckManager
::
LoadLFListSingle
(
const
char
*
path
)
{
LFList
*
cur
=
NULL
;
LFList
*
cur
=
nullptr
;
FILE
*
fp
=
fopen
(
path
,
"r"
);
char
linebuf
[
256
];
wchar_t
strBuffer
[
256
];
...
...
@@ -17,33 +17,32 @@ void DeckManager::LoadLFListSingle(const char* path) {
while
(
fgets
(
linebuf
,
256
,
fp
))
{
if
(
linebuf
[
0
]
==
'#'
)
continue
;
int
p
=
0
,
sa
=
0
,
code
,
count
;
if
(
linebuf
[
0
]
==
'!'
)
{
sa
=
BufferIO
::
DecodeUTF8
((
const
char
*
)(
&
linebuf
[
1
])
,
strBuffer
);
int
sa
=
BufferIO
::
DecodeUTF8
(
&
linebuf
[
1
]
,
strBuffer
);
while
(
strBuffer
[
sa
-
1
]
==
L'\r'
||
strBuffer
[
sa
-
1
]
==
L'\n'
)
sa
--
;
strBuffer
[
sa
]
=
0
;
LFList
newlist
;
_lfList
.
push_back
(
newlist
);
cur
=
&
_lfList
[
_lfList
.
size
()
-
1
];
memcpy
(
cur
->
listName
,
(
const
void
*
)
strBuffer
,
20
*
sizeof
(
wchar_t
));
cur
->
listName
[
sa
]
=
0
;
cur
->
content
=
new
std
::
unordered_map
<
int
,
int
>
;
cur
->
listName
=
strBuffer
;
cur
->
hash
=
0x7dfcee6a
;
continue
;
}
int
p
=
0
;
while
(
linebuf
[
p
]
!=
' '
&&
linebuf
[
p
]
!=
'\t'
&&
linebuf
[
p
]
!=
0
)
p
++
;
if
(
linebuf
[
p
]
==
0
)
continue
;
linebuf
[
p
++
]
=
0
;
sa
=
p
;
code
=
atoi
(
linebuf
);
int
sa
=
p
;
int
code
=
atoi
(
linebuf
);
if
(
code
==
0
)
continue
;
while
(
linebuf
[
p
]
==
' '
||
linebuf
[
p
]
==
'\t'
)
p
++
;
while
(
linebuf
[
p
]
!=
' '
&&
linebuf
[
p
]
!=
'\t'
&&
linebuf
[
p
]
!=
0
)
p
++
;
linebuf
[
p
]
=
0
;
count
=
atoi
(
&
linebuf
[
sa
]);
if
(
cur
==
NULL
)
continue
;
(
*
cur
->
content
)
[
code
]
=
count
;
int
count
=
atoi
(
&
linebuf
[
sa
]);
if
(
!
cur
)
continue
;
cur
->
content
[
code
]
=
count
;
cur
->
hash
=
cur
->
hash
^
((
code
<<
18
)
|
(
code
>>
14
))
^
((
code
<<
(
27
+
count
))
|
(
code
>>
(
5
-
count
)));
}
fclose
(
fp
);
...
...
@@ -53,28 +52,29 @@ void DeckManager::LoadLFList() {
LoadLFListSingle
(
"expansions/lflist.conf"
);
LoadLFListSingle
(
"lflist.conf"
);
LFList
nolimit
;
myswprintf
(
nolimit
.
listName
,
L"N/A"
)
;
nolimit
.
listName
=
L"N/A"
;
nolimit
.
hash
=
0
;
nolimit
.
content
=
new
std
::
unordered_map
<
int
,
int
>
;
_lfList
.
push_back
(
nolimit
);
}
wchar_t
*
DeckManager
::
GetLFListName
(
int
lfhash
)
{
for
(
size_t
i
=
0
;
i
<
_lfList
.
size
();
++
i
)
{
if
(
_lfList
[
i
].
hash
==
(
unsigned
int
)
lfhash
)
{
return
_lfList
[
i
].
listName
;
}
}
return
(
wchar_t
*
)
dataManager
.
unknown_string
;
const
wchar_t
*
DeckManager
::
GetLFListName
(
int
lfhash
)
{
auto
lit
=
std
::
find_if
(
_lfList
.
begin
(),
_lfList
.
end
(),
[
lfhash
](
const
ygo
::
LFList
&
list
)
{
return
list
.
hash
==
lfhash
;
});
if
(
lit
!=
_lfList
.
end
())
return
lit
->
listName
.
c_str
();
return
dataManager
.
unknown_string
;
}
const
std
::
unordered_map
<
int
,
int
>*
DeckManager
::
GetLFListContent
(
int
lfhash
)
{
auto
lit
=
std
::
find_if
(
_lfList
.
begin
(),
_lfList
.
end
(),
[
lfhash
](
const
ygo
::
LFList
&
list
)
{
return
list
.
hash
==
lfhash
;
});
if
(
lit
!=
_lfList
.
end
())
return
&
lit
->
content
;
return
nullptr
;
}
int
DeckManager
::
CheckDeck
(
Deck
&
deck
,
int
lfhash
,
bool
allow_ocg
,
bool
allow_tcg
)
{
std
::
unordered_map
<
int
,
int
>
ccount
;
std
::
unordered_map
<
int
,
int
>*
list
=
0
;
for
(
size_t
i
=
0
;
i
<
_lfList
.
size
();
++
i
)
{
if
(
_lfList
[
i
].
hash
==
(
unsigned
int
)
lfhash
)
{
list
=
_lfList
[
i
].
content
;
break
;
}
}
auto
list
=
GetLFListContent
(
lfhash
);
if
(
!
list
)
return
0
;
int
dc
=
0
;
...
...
gframe/deck_manager.h
View file @
d0abf558
...
...
@@ -10,8 +10,8 @@ namespace ygo {
struct
LFList
{
unsigned
int
hash
;
wchar_t
listName
[
20
]
;
std
::
unordered_map
<
int
,
int
>
*
content
;
std
::
wstring
listName
;
std
::
unordered_map
<
int
,
int
>
content
;
};
struct
Deck
{
std
::
vector
<
code_pointer
>
main
;
...
...
@@ -37,7 +37,8 @@ public:
void
LoadLFListSingle
(
const
char
*
path
);
void
LoadLFList
();
wchar_t
*
GetLFListName
(
int
lfhash
);
const
wchar_t
*
GetLFListName
(
int
lfhash
);
const
std
::
unordered_map
<
int
,
int
>*
GetLFListContent
(
int
lfhash
);
int
CheckDeck
(
Deck
&
deck
,
int
lfhash
,
bool
allow_ocg
,
bool
allow_tcg
);
int
LoadDeck
(
Deck
&
deck
,
int
*
dbuf
,
int
mainc
,
int
sidec
);
bool
LoadSide
(
Deck
&
deck
,
int
*
dbuf
,
int
mainc
,
int
sidec
);
...
...
gframe/drawing.cpp
View file @
d0abf558
...
...
@@ -1037,7 +1037,7 @@ void Game::WaitFrameSignal(int frame) {
signalFrame
=
(
gameConf
.
quick_animation
&&
frame
>=
12
)
?
12
:
frame
;
frameSignal
.
Wait
();
}
void
Game
::
DrawThumb
(
code_pointer
cp
,
position2di
pos
,
std
::
unordered_map
<
int
,
int
>*
lflist
,
bool
drag
)
{
void
Game
::
DrawThumb
(
code_pointer
cp
,
position2di
pos
,
const
std
::
unordered_map
<
int
,
int
>*
lflist
,
bool
drag
)
{
int
code
=
cp
->
first
;
int
lcode
=
cp
->
second
.
alias
;
if
(
lcode
==
0
)
...
...
@@ -1056,7 +1056,7 @@ void Game::DrawThumb(code_pointer cp, position2di pos, std::unordered_map<int, i
}
driver
->
draw2DImage
(
img
,
dragloc
,
rect
<
s32
>
(
0
,
0
,
size
.
Width
,
size
.
Height
));
if
(
lflist
->
count
(
lcode
))
{
switch
((
*
lflist
)
[
lcode
]
)
{
switch
((
*
lflist
)
.
at
(
lcode
)
)
{
case
0
:
driver
->
draw2DImage
(
imageManager
.
tLim
,
limitloc
,
recti
(
0
,
0
,
64
,
64
),
0
,
0
,
true
);
break
;
...
...
gframe/duelclient.cpp
View file @
d0abf558
...
...
@@ -463,12 +463,9 @@ void DuelClient::HandleSTOCPacketLan(char* data, unsigned int len) {
mainGame
->
dInfo
.
time_limit
=
pkt
->
info
.
time_limit
;
mainGame
->
dInfo
.
time_left
[
0
]
=
0
;
mainGame
->
dInfo
.
time_left
[
1
]
=
0
;
mainGame
->
deckBuilder
.
filterList
=
0
;
for
(
auto
lit
=
deckManager
.
_lfList
.
begin
();
lit
!=
deckManager
.
_lfList
.
end
();
++
lit
)
if
(
lit
->
hash
==
pkt
->
info
.
lflist
)
mainGame
->
deckBuilder
.
filterList
=
lit
->
content
;
if
(
mainGame
->
deckBuilder
.
filterList
==
0
)
mainGame
->
deckBuilder
.
filterList
=
deckManager
.
_lfList
[
0
].
content
;
mainGame
->
deckBuilder
.
filterList
=
deckManager
.
GetLFListContent
(
pkt
->
info
.
lflist
);
if
(
mainGame
->
deckBuilder
.
filterList
==
nullptr
)
mainGame
->
deckBuilder
.
filterList
=
&
deckManager
.
_lfList
[
0
].
content
;
mainGame
->
stHostPrepDuelist
[
0
]
->
setText
(
L""
);
mainGame
->
stHostPrepDuelist
[
1
]
->
setText
(
L""
);
mainGame
->
stHostPrepDuelist
[
2
]
->
setText
(
L""
);
...
...
gframe/game.cpp
View file @
d0abf558
...
...
@@ -131,7 +131,7 @@ bool Game::Initialize() {
env
->
addStaticText
(
dataManager
.
GetSysString
(
1226
),
rect
<
s32
>
(
20
,
30
,
220
,
50
),
false
,
false
,
wCreateHost
);
cbLFlist
=
env
->
addComboBox
(
rect
<
s32
>
(
140
,
25
,
300
,
50
),
wCreateHost
);
for
(
unsigned
int
i
=
0
;
i
<
deckManager
.
_lfList
.
size
();
++
i
)
cbLFlist
->
addItem
(
deckManager
.
_lfList
[
i
].
listName
,
deckManager
.
_lfList
[
i
].
hash
);
cbLFlist
->
addItem
(
deckManager
.
_lfList
[
i
].
listName
.
c_str
()
,
deckManager
.
_lfList
[
i
].
hash
);
env
->
addStaticText
(
dataManager
.
GetSysString
(
1225
),
rect
<
s32
>
(
20
,
60
,
220
,
80
),
false
,
false
,
wCreateHost
);
cbRule
=
env
->
addComboBox
(
rect
<
s32
>
(
140
,
55
,
300
,
80
),
wCreateHost
);
cbRule
->
addItem
(
dataManager
.
GetSysString
(
1240
));
...
...
@@ -510,7 +510,7 @@ bool Game::Initialize() {
cbDBDecks
=
env
->
addComboBox
(
rect
<
s32
>
(
80
,
35
,
220
,
60
),
wDeckEdit
,
COMBOBOX_DBDECKS
);
cbDBDecks
->
setMaxSelectionRows
(
15
);
for
(
unsigned
int
i
=
0
;
i
<
deckManager
.
_lfList
.
size
();
++
i
)
cbDBLFList
->
addItem
(
deckManager
.
_lfList
[
i
].
listName
);
cbDBLFList
->
addItem
(
deckManager
.
_lfList
[
i
].
listName
.
c_str
()
);
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
->
setTextAlignment
(
irr
::
gui
::
EGUIA_CENTER
,
irr
::
gui
::
EGUIA_CENTER
);
...
...
gframe/game.h
View file @
d0abf558
...
...
@@ -134,7 +134,7 @@ public:
void
HideElement
(
irr
::
gui
::
IGUIElement
*
element
,
bool
set_action
=
false
);
void
PopupElement
(
irr
::
gui
::
IGUIElement
*
element
,
int
hideframe
=
0
);
void
WaitFrameSignal
(
int
frame
);
void
DrawThumb
(
code_pointer
cp
,
position2di
pos
,
std
::
unordered_map
<
int
,
int
>*
lflist
,
bool
drag
=
false
);
void
DrawThumb
(
code_pointer
cp
,
position2di
pos
,
const
std
::
unordered_map
<
int
,
int
>*
lflist
,
bool
drag
=
false
);
void
DrawDeckBd
();
void
LoadConfig
();
void
SaveConfig
();
...
...
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