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
a9a19353
Commit
a9a19353
authored
Aug 09, 2018
by
nanahira
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
update deck count with icon
parent
67857689
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
50 additions
and
39 deletions
+50
-39
gframe/drawing.cpp
gframe/drawing.cpp
+48
-39
gframe/image_manager.cpp
gframe/image_manager.cpp
+1
-0
gframe/image_manager.h
gframe/image_manager.h
+1
-0
textures/cardtype.png
textures/cardtype.png
+0
-0
No files found.
gframe/drawing.cpp
View file @
a9a19353
...
...
@@ -1130,22 +1130,25 @@ void Game::DrawThumb(code_pointer cp, position2di pos, std::unordered_map<int, i
void
Game
::
DrawDeckBd
()
{
wchar_t
textBuffer
[
64
];
//main deck
driver
->
draw2DRectangle
(
Resize
(
310
,
137
,
797
,
157
),
0x400000ff
,
0x400000ff
,
0x40000000
,
0x40000000
);
driver
->
draw2DRectangleOutline
(
Resize
(
309
,
136
,
797
,
157
));
driver
->
draw2DRectangle
(
Resize
(
310
,
137
,
410
,
157
),
0x400000ff
,
0x400000ff
,
0x40000000
,
0x40000000
);
driver
->
draw2DRectangleOutline
(
Resize
(
309
,
136
,
410
,
157
));
DrawShadowText
(
textFont
,
dataManager
.
GetSysString
(
1330
),
Resize
(
315
,
137
,
410
,
157
),
Resize
(
1
,
1
,
1
,
1
),
0xffffffff
,
0xff000000
,
false
,
true
);
DrawShadowText
(
numFont
,
dataManager
.
numStrings
[
deckManager
.
current_deck
.
main
.
size
()],
Resize
(
380
,
138
,
440
,
158
),
Resize
(
1
,
1
,
1
,
1
),
0xffffffff
,
0xff000000
,
false
,
true
);
//type count 2DRectangle
driver
->
draw2DRectangle
(
Resize
(
638
,
137
,
797
,
157
),
0x400000ff
,
0x400000ff
,
0x40000000
,
0x40000000
);
driver
->
draw2DRectangleOutline
(
Resize
(
637
,
136
,
797
,
157
));
//monster count
myswprintf
(
textBuffer
,
L"%ls:"
,
dataManager
.
GetSysString
(
1312
));
DrawShadowText
(
textFont
,
textBuffer
,
Resize
(
797
-
(
55
*
3
)
-
(
25
*
3
),
137
,
797
-
(
55
*
2
)
-
(
25
*
3
),
157
),
Resize
(
1
,
1
,
1
,
1
),
0xffffffff
,
0xff000000
,
false
,
true
);
DrawShadowText
(
numFont
,
dataManager
.
numStrings
[
deckManager
.
TypeCount
(
deckManager
.
current_deck
.
main
,
TYPE_MONSTER
)],
Resize
(
797
-
(
55
*
2
)
-
(
25
*
3
),
138
,
797
-
(
55
*
2
)
-
(
25
*
2
),
158
),
Resize
(
1
,
1
,
1
,
1
),
0xffffffff
,
0xff000000
,
false
,
tru
e
);
if
(
imageManager
.
tCardType
)
driver
->
draw2DImage
(
imageManager
.
tCardType
,
ResizeCardHint
(
645
,
136
,
645
+
14
+
3
/
8
,
156
),
recti
(
0
,
0
,
23
,
32
),
0
,
0
,
true
);
DrawShadowText
(
numFont
,
dataManager
.
numStrings
[
deckManager
.
TypeCount
(
deckManager
.
current_deck
.
main
,
TYPE_MONSTER
)],
Resize
(
670
,
137
,
690
,
157
),
Resize
(
0
,
1
,
2
,
0
),
0xffffffff
,
0xff000000
,
true
,
fals
e
);
//spell count
myswprintf
(
textBuffer
,
L"%ls:"
,
dataManager
.
GetSysString
(
1313
));
DrawShadowText
(
textFont
,
textBuffer
,
Resize
(
797
-
(
55
*
2
)
-
(
25
*
2
),
137
,
797
-
(
55
*
1
)
-
(
25
*
2
),
157
),
Resize
(
1
,
1
,
1
,
1
),
0xffffffff
,
0xff000000
,
false
,
true
);
DrawShadowText
(
numFont
,
dataManager
.
numStrings
[
deckManager
.
TypeCount
(
deckManager
.
current_deck
.
main
,
TYPE_SPELL
)],
Resize
(
7
97
-
(
55
*
1
)
-
(
25
*
2
),
138
,
797
-
(
55
*
1
)
-
(
25
*
1
),
158
),
Resize
(
1
,
1
,
1
,
1
),
0xffffffff
,
0xff000000
,
false
,
tru
e
);
//trap count
myswprintf
(
textBuffer
,
L"%ls:"
,
dataManager
.
GetSysString
(
1314
));
DrawShadowText
(
textFont
,
textBuffer
,
Resize
(
797
-
(
55
*
1
)
-
(
25
*
1
),
137
,
797
-
(
55
*
0
)
-
(
25
*
1
),
157
),
Resize
(
1
,
1
,
1
,
1
),
0xffffffff
,
0xff000000
,
false
,
true
);
DrawShadowText
(
numFont
,
dataManager
.
numStrings
[
deckManager
.
TypeCount
(
deckManager
.
current_deck
.
main
,
TYPE_TRAP
)],
Resize
(
7
97
-
(
55
*
0
)
-
(
25
*
1
),
138
,
797
-
(
55
*
0
)
-
(
25
*
0
),
158
),
Resize
(
1
,
1
,
1
,
1
),
0xffffffff
,
0xff000000
,
false
,
tru
e
);
if
(
imageManager
.
tCardType
)
driver
->
draw2DImage
(
imageManager
.
tCardType
,
ResizeCardHint
(
695
,
136
,
695
+
14
+
3
/
8
,
156
),
recti
(
23
,
0
,
46
,
32
),
0
,
0
,
true
);
DrawShadowText
(
numFont
,
dataManager
.
numStrings
[
deckManager
.
TypeCount
(
deckManager
.
current_deck
.
main
,
TYPE_SPELL
)],
Resize
(
7
20
,
137
,
740
,
157
),
Resize
(
0
,
1
,
2
,
0
),
0xffffffff
,
0xff000000
,
true
,
fals
e
);
//trap count
if
(
imageManager
.
tCardType
)
driver
->
draw2DImage
(
imageManager
.
tCardType
,
ResizeCardHint
(
745
,
136
,
745
+
14
+
3
/
8
,
156
),
recti
(
46
,
0
,
69
,
32
),
0
,
0
,
true
);
DrawShadowText
(
numFont
,
dataManager
.
numStrings
[
deckManager
.
TypeCount
(
deckManager
.
current_deck
.
main
,
TYPE_TRAP
)],
Resize
(
7
70
,
137
,
790
,
157
),
Resize
(
0
,
1
,
2
,
0
),
0xffffffff
,
0xff000000
,
true
,
fals
e
);
driver
->
draw2DRectangle
(
Resize
(
310
,
160
,
797
,
436
),
0x400000ff
,
0x400000ff
,
0x40000000
,
0x40000000
);
driver
->
draw2DRectangleOutline
(
Resize
(
309
,
159
,
797
,
436
));
...
...
@@ -1164,26 +1167,29 @@ void Game::DrawDeckBd() {
driver
->
draw2DRectangleOutline
(
Resize
(
313
+
(
i
%
lx
)
*
dx
,
163
+
(
i
/
lx
)
*
68
,
359
+
(
i
%
lx
)
*
dx
,
228
+
(
i
/
lx
)
*
68
));
}
//extra deck
driver
->
draw2DRectangle
(
Resize
(
310
,
440
,
797
,
460
),
0x400000ff
,
0x400000ff
,
0x40000000
,
0x40000000
);
driver
->
draw2DRectangleOutline
(
Resize
(
309
,
439
,
797
,
460
));
driver
->
draw2DRectangle
(
Resize
(
310
,
440
,
410
,
460
),
0x400000ff
,
0x400000ff
,
0x40000000
,
0x40000000
);
driver
->
draw2DRectangleOutline
(
Resize
(
309
,
439
,
410
,
460
));
DrawShadowText
(
textFont
,
dataManager
.
GetSysString
(
1331
),
Resize
(
315
,
440
,
410
,
460
),
Resize
(
1
,
1
,
1
,
1
),
0xffffffff
,
0xff000000
,
false
,
true
);
DrawShadowText
(
numFont
,
dataManager
.
numStrings
[
deckManager
.
current_deck
.
extra
.
size
()],
Resize
(
380
,
441
,
440
,
461
),
Resize
(
1
,
1
,
1
,
1
),
0xffffffff
,
0xff000000
,
false
,
true
);
//type count 2DRectangle
driver
->
draw2DRectangle
(
Resize
(
582
,
440
,
797
,
460
),
0x400000ff
,
0x400000ff
,
0x40000000
,
0x40000000
);
driver
->
draw2DRectangleOutline
(
Resize
(
581
,
439
,
797
,
460
));
//fusion count
myswprintf
(
textBuffer
,
L"%ls:"
,
dataManager
.
GetSysString
(
1056
));
DrawShadowText
(
textFont
,
textBuffer
,
Resize
(
797
-
(
55
*
4
)
-
(
25
*
4
),
440
,
797
-
(
55
*
3
)
-
(
25
*
4
),
460
),
Resize
(
1
,
1
,
1
,
1
),
0xffffffff
,
0xff000000
,
false
,
true
);
DrawShadowText
(
numFont
,
dataManager
.
numStrings
[
deckManager
.
TypeCount
(
deckManager
.
current_deck
.
extra
,
TYPE_FUSION
)],
Resize
(
797
-
(
55
*
3
)
-
(
25
*
4
),
441
,
797
-
(
55
*
3
)
-
(
25
*
3
),
461
),
Resize
(
1
,
1
,
1
,
1
),
0xffffffff
,
0xff000000
,
false
,
tru
e
);
if
(
imageManager
.
tCardType
)
driver
->
draw2DImage
(
imageManager
.
tCardType
,
ResizeCardHint
(
595
,
440
,
595
+
14
+
3
/
8
,
460
),
recti
(
0
,
32
,
23
,
64
),
0
,
0
,
true
);
DrawShadowText
(
numFont
,
dataManager
.
numStrings
[
deckManager
.
TypeCount
(
deckManager
.
current_deck
.
extra
,
TYPE_FUSION
)],
Resize
(
620
,
440
,
640
,
460
),
Resize
(
0
,
1
,
2
,
0
),
0xffffffff
,
0xff000000
,
true
,
fals
e
);
//synchro count
myswprintf
(
textBuffer
,
L"%ls:"
,
dataManager
.
GetSysString
(
1063
));
DrawShadowText
(
textFont
,
textBuffer
,
Resize
(
797
-
(
55
*
3
)
-
(
25
*
3
),
440
,
797
-
(
55
*
2
)
-
(
25
*
3
),
460
),
Resize
(
1
,
1
,
1
,
1
),
0xffffffff
,
0xff000000
,
false
,
true
);
DrawShadowText
(
numFont
,
dataManager
.
numStrings
[
deckManager
.
TypeCount
(
deckManager
.
current_deck
.
extra
,
TYPE_SYNCHRO
)],
Resize
(
797
-
(
55
*
2
)
-
(
25
*
3
),
441
,
797
-
(
55
*
2
)
-
(
25
*
2
),
461
),
Resize
(
1
,
1
,
1
,
1
),
0xffffffff
,
0xff000000
,
false
,
tru
e
);
//
xyz
count
myswprintf
(
textBuffer
,
L"%ls:"
,
dataManager
.
GetSysString
(
1073
));
DrawShadowText
(
textFont
,
textBuffer
,
Resize
(
797
-
(
55
*
2
)
-
(
25
*
2
),
440
,
797
-
(
55
*
1
)
-
(
25
*
2
),
460
),
Resize
(
1
,
1
,
1
,
1
),
0xffffffff
,
0xff000000
,
false
,
true
);
DrawShadowText
(
numFont
,
dataManager
.
numStrings
[
deckManager
.
TypeCount
(
deckManager
.
current_deck
.
extra
,
TYPE_XYZ
)],
Resize
(
7
97
-
(
55
*
1
)
-
(
25
*
2
),
441
,
797
-
(
55
*
1
)
-
(
25
*
1
),
461
),
Resize
(
1
,
1
,
1
,
1
),
0xffffffff
,
0xff000000
,
false
,
tru
e
);
if
(
imageManager
.
tCardType
)
driver
->
draw2DImage
(
imageManager
.
tCardType
,
ResizeCardHint
(
645
,
440
,
645
+
14
+
3
/
8
,
460
),
recti
(
23
,
32
,
46
,
64
),
0
,
0
,
true
);
DrawShadowText
(
numFont
,
dataManager
.
numStrings
[
deckManager
.
TypeCount
(
deckManager
.
current_deck
.
extra
,
TYPE_SYNCHRO
)],
Resize
(
670
,
440
,
690
,
460
),
Resize
(
0
,
1
,
2
,
0
),
0xffffffff
,
0xff000000
,
true
,
fals
e
);
//
XYZ
count
if
(
imageManager
.
tCardType
)
driver
->
draw2DImage
(
imageManager
.
tCardType
,
ResizeCardHint
(
695
,
440
,
695
+
14
+
3
/
8
,
460
),
recti
(
46
,
32
,
69
,
64
),
0
,
0
,
true
);
DrawShadowText
(
numFont
,
dataManager
.
numStrings
[
deckManager
.
TypeCount
(
deckManager
.
current_deck
.
extra
,
TYPE_XYZ
)],
Resize
(
7
20
,
440
,
740
,
460
),
Resize
(
0
,
1
,
2
,
0
),
0xffffffff
,
0xff000000
,
true
,
fals
e
);
//link count
myswprintf
(
textBuffer
,
L"%ls:"
,
dataManager
.
GetSysString
(
1076
));
DrawShadowText
(
textFont
,
textBuffer
,
Resize
(
797
-
(
55
*
1
)
-
(
25
*
1
),
440
,
797
-
(
55
*
0
)
-
(
25
*
1
),
460
),
Resize
(
1
,
1
,
1
,
1
),
0xffffffff
,
0xff000000
,
false
,
true
);
DrawShadowText
(
numFont
,
dataManager
.
numStrings
[
deckManager
.
TypeCount
(
deckManager
.
current_deck
.
extra
,
TYPE_LINK
)],
Resize
(
7
97
-
(
55
*
0
)
-
(
25
*
1
),
441
,
797
-
(
55
*
0
)
-
(
25
*
0
),
461
),
Resize
(
1
,
1
,
1
,
1
),
0xffffffff
,
0xff000000
,
false
,
tru
e
);
if
(
imageManager
.
tCardType
)
driver
->
draw2DImage
(
imageManager
.
tCardType
,
ResizeCardHint
(
745
,
440
,
745
+
14
+
3
/
8
,
460
),
recti
(
0
,
64
,
23
,
96
),
0
,
0
,
true
);
DrawShadowText
(
numFont
,
dataManager
.
numStrings
[
deckManager
.
TypeCount
(
deckManager
.
current_deck
.
extra
,
TYPE_LINK
)],
Resize
(
7
70
,
440
,
790
,
460
),
Resize
(
0
,
1
,
2
,
0
),
0xffffffff
,
0xff000000
,
true
,
fals
e
);
driver
->
draw2DRectangle
(
Resize
(
310
,
463
,
797
,
533
),
0x400000ff
,
0x400000ff
,
0x40000000
,
0x40000000
);
driver
->
draw2DRectangleOutline
(
Resize
(
309
,
462
,
797
,
533
));
...
...
@@ -1196,22 +1202,25 @@ void Game::DrawDeckBd() {
driver
->
draw2DRectangleOutline
(
Resize
(
313
+
i
*
dx
,
465
,
359
+
i
*
dx
,
531
));
}
//side deck
driver
->
draw2DRectangle
(
Resize
(
310
,
537
,
797
,
557
),
0x400000ff
,
0x400000ff
,
0x40000000
,
0x40000000
);
driver
->
draw2DRectangleOutline
(
Resize
(
309
,
536
,
797
,
557
));
driver
->
draw2DRectangle
(
Resize
(
310
,
537
,
410
,
557
),
0x400000ff
,
0x400000ff
,
0x40000000
,
0x40000000
);
driver
->
draw2DRectangleOutline
(
Resize
(
309
,
536
,
410
,
557
));
DrawShadowText
(
textFont
,
dataManager
.
GetSysString
(
1332
),
Resize
(
315
,
537
,
410
,
557
),
Resize
(
1
,
1
,
1
,
1
),
0xffffffff
,
0xff000000
,
false
,
true
);
DrawShadowText
(
numFont
,
dataManager
.
numStrings
[
deckManager
.
current_deck
.
side
.
size
()],
Resize
(
380
,
538
,
440
,
558
),
Resize
(
1
,
1
,
1
,
1
),
0xffffffff
,
0xff000000
,
false
,
true
);
//type count 2DRectangle
driver
->
draw2DRectangle
(
Resize
(
638
,
537
,
797
,
557
),
0x400000ff
,
0x400000ff
,
0x40000000
,
0x40000000
);
driver
->
draw2DRectangleOutline
(
Resize
(
637
,
536
,
797
,
557
));
//monster count
myswprintf
(
textBuffer
,
L"%ls:"
,
dataManager
.
GetSysString
(
1312
));
DrawShadowText
(
textFont
,
textBuffer
,
Resize
(
797
-
(
55
*
3
)
-
(
25
*
3
),
537
,
797
-
(
55
*
2
)
-
(
25
*
3
),
557
),
Resize
(
1
,
1
,
1
,
1
),
0xffffffff
,
0xff000000
,
false
,
true
);
DrawShadowText
(
numFont
,
dataManager
.
numStrings
[
deckManager
.
TypeCount
(
deckManager
.
current_deck
.
side
,
TYPE_MONSTER
)],
Resize
(
797
-
(
55
*
2
)
-
(
25
*
3
),
538
,
797
-
(
55
*
2
)
-
(
25
*
2
),
558
),
Resize
(
1
,
1
,
1
,
1
),
0xffffffff
,
0xff000000
,
false
,
tru
e
);
if
(
imageManager
.
tCardType
)
driver
->
draw2DImage
(
imageManager
.
tCardType
,
ResizeCardHint
(
645
,
537
,
645
+
14
+
3
/
8
,
557
),
recti
(
0
,
0
,
23
,
32
),
0
,
0
,
true
);
DrawShadowText
(
numFont
,
dataManager
.
numStrings
[
deckManager
.
TypeCount
(
deckManager
.
current_deck
.
side
,
TYPE_MONSTER
)],
Resize
(
670
,
537
,
690
,
557
),
Resize
(
0
,
1
,
2
,
0
),
0xffffffff
,
0xff000000
,
true
,
fals
e
);
//spell count
myswprintf
(
textBuffer
,
L"%ls:"
,
dataManager
.
GetSysString
(
1313
));
DrawShadowText
(
textFont
,
textBuffer
,
Resize
(
797
-
(
55
*
2
)
-
(
25
*
2
),
537
,
797
-
(
55
*
1
)
-
(
25
*
2
),
557
),
Resize
(
1
,
1
,
1
,
1
),
0xffffffff
,
0xff000000
,
false
,
true
);
DrawShadowText
(
numFont
,
dataManager
.
numStrings
[
deckManager
.
TypeCount
(
deckManager
.
current_deck
.
side
,
TYPE_SPELL
)],
Resize
(
7
97
-
(
55
*
1
)
-
(
25
*
2
),
538
,
797
-
(
55
*
1
)
-
(
25
*
1
),
558
),
Resize
(
1
,
1
,
1
,
1
),
0xffffffff
,
0xff000000
,
false
,
tru
e
);
//trap count
myswprintf
(
textBuffer
,
L"%ls:"
,
dataManager
.
GetSysString
(
1314
));
DrawShadowText
(
textFont
,
textBuffer
,
Resize
(
797
-
(
55
*
1
)
-
(
25
*
1
),
537
,
797
-
(
55
*
0
)
-
(
25
*
1
),
557
),
Resize
(
1
,
1
,
1
,
1
),
0xffffffff
,
0xff000000
,
false
,
true
);
DrawShadowText
(
numFont
,
dataManager
.
numStrings
[
deckManager
.
TypeCount
(
deckManager
.
current_deck
.
side
,
TYPE_TRAP
)],
Resize
(
7
97
-
(
55
*
0
)
-
(
25
*
1
),
538
,
797
-
(
55
*
0
)
-
(
25
*
0
),
558
),
Resize
(
1
,
1
,
1
,
1
),
0xffffffff
,
0xff000000
,
false
,
tru
e
);
if
(
imageManager
.
tCardType
)
driver
->
draw2DImage
(
imageManager
.
tCardType
,
ResizeCardHint
(
695
,
537
,
695
+
14
+
3
/
8
,
557
),
recti
(
23
,
0
,
46
,
32
),
0
,
0
,
true
);
DrawShadowText
(
numFont
,
dataManager
.
numStrings
[
deckManager
.
TypeCount
(
deckManager
.
current_deck
.
side
,
TYPE_SPELL
)],
Resize
(
7
20
,
537
,
740
,
557
),
Resize
(
0
,
1
,
2
,
0
),
0xffffffff
,
0xff000000
,
true
,
fals
e
);
//trap count
if
(
imageManager
.
tCardType
)
driver
->
draw2DImage
(
imageManager
.
tCardType
,
ResizeCardHint
(
745
,
537
,
745
+
14
+
3
/
8
,
557
),
recti
(
46
,
0
,
69
,
32
),
0
,
0
,
true
);
DrawShadowText
(
numFont
,
dataManager
.
numStrings
[
deckManager
.
TypeCount
(
deckManager
.
current_deck
.
side
,
TYPE_TRAP
)],
Resize
(
7
70
,
537
,
790
,
557
),
Resize
(
0
,
1
,
2
,
0
),
0xffffffff
,
0xff000000
,
true
,
fals
e
);
driver
->
draw2DRectangle
(
Resize
(
310
,
560
,
797
,
630
),
0x400000ff
,
0x400000ff
,
0x40000000
,
0x40000000
);
driver
->
draw2DRectangleOutline
(
Resize
(
309
,
559
,
797
,
630
));
...
...
gframe/image_manager.cpp
View file @
a9a19353
...
...
@@ -41,6 +41,7 @@ bool ImageManager::Initial() {
tBackGround
=
NULL
;
tBackGround_menu
=
NULL
;
tBackGround_deck
=
NULL
;
tCardType
=
driver
->
getTexture
(
"textures/cardtype.png"
);
tField
[
0
]
=
driver
->
getTexture
(
"textures/field2.png"
);
tFieldTransparent
[
0
]
=
driver
->
getTexture
(
"textures/field-transparent2.png"
);
tField
[
1
]
=
driver
->
getTexture
(
"textures/field3.png"
);
...
...
gframe/image_manager.h
View file @
a9a19353
...
...
@@ -51,6 +51,7 @@ public:
irr
::
video
::
ITexture
*
tBackGround
;
irr
::
video
::
ITexture
*
tBackGround_menu
;
irr
::
video
::
ITexture
*
tBackGround_deck
;
irr
::
video
::
ITexture
*
tCardType
;
irr
::
video
::
ITexture
*
tField
[
2
];
irr
::
video
::
ITexture
*
tFieldTransparent
[
2
];
irr
::
video
::
ITexture
*
tRScale
[
14
];
...
...
textures/cardtype.png
0 → 100644
View file @
a9a19353
3.03 KB
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