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
636695b7
Commit
636695b7
authored
Mar 28, 2012
by
argon.sun
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
chat
parent
4f533571
Changes
11
Show whitespace changes
Inline
Side-by-side
Showing
11 changed files
with
156 additions
and
63 deletions
+156
-63
gframe/client_field.cpp
gframe/client_field.cpp
+8
-8
gframe/drawing.cpp
gframe/drawing.cpp
+41
-34
gframe/duelclient.cpp
gframe/duelclient.cpp
+20
-0
gframe/event_handler.cpp
gframe/event_handler.cpp
+30
-15
gframe/game.cpp
gframe/game.cpp
+19
-4
gframe/game.h
gframe/game.h
+4
-1
gframe/netserver.cpp
gframe/netserver.cpp
+6
-0
gframe/network.h
gframe/network.h
+7
-0
gframe/single_duel.cpp
gframe/single_duel.cpp
+18
-0
gframe/single_duel.h
gframe/single_duel.h
+1
-0
ocgcore/libcard.cpp
ocgcore/libcard.cpp
+2
-1
No files found.
gframe/client_field.cpp
View file @
636695b7
...
...
@@ -602,18 +602,18 @@ void ClientField::GetCardLocation(ClientCard* pcard, irr::core::vector3df* t, ir
else
t
->
X
=
1.9
f
+
sequence
*
4.0
f
/
(
count
-
1
);
if
(
pcard
->
is_hovered
)
{
t
->
Y
=
3.8
2
f
;
t
->
Z
=
0.6
4
f
+
0.001
f
*
sequence
;
t
->
Y
=
3.8
4
f
;
t
->
Z
=
0.6
56
f
+
0.001
f
*
sequence
;
}
else
{
t
->
Y
=
4.0
f
;
t
->
Z
=
0.5
f
+
0.001
f
*
sequence
;
}
if
(
pcard
->
code
)
{
r
->
X
=
-
0.
661
f
;
r
->
X
=
-
0.
798056
f
;
r
->
Y
=
0.0
f
;
r
->
Z
=
0.0
f
;
}
else
{
r
->
X
=
0.
661
f
;
r
->
X
=
0.
798056
f
;
r
->
Y
=
3.1415926
f
;
r
->
Z
=
0
;
}
...
...
@@ -623,18 +623,18 @@ void ClientField::GetCardLocation(ClientCard* pcard, irr::core::vector3df* t, ir
else
t
->
X
=
5.9
f
-
sequence
*
4.0
f
/
(
count
-
1
);
if
(
pcard
->
is_hovered
)
{
t
->
Y
=
-
3.5
8
f
;
t
->
Z
=
0.6
4
f
-
0.001
f
*
sequence
;
t
->
Y
=
-
3.5
6
f
;
t
->
Z
=
0.6
56
f
-
0.001
f
*
sequence
;
}
else
{
t
->
Y
=
-
3.4
f
;
t
->
Z
=
0.5
f
-
0.001
f
*
sequence
;
}
if
(
pcard
->
code
==
0
)
{
r
->
X
=
0.
661
f
;
r
->
X
=
0.
798056
f
;
r
->
Y
=
3.1415926
f
;
r
->
Z
=
0
;
}
else
{
r
->
X
=
-
0.
661
f
;
r
->
X
=
-
0.
798056
f
;
r
->
Y
=
0
;
r
->
Z
=
0
;
}
...
...
gframe/drawing.cpp
View file @
636695b7
...
...
@@ -315,72 +315,79 @@ void Game::DrawMisc() {
for
(
int
i
=
0
;
i
<
5
;
++
i
)
{
ClientCard
*
pcard
=
dField
.
mzone
[
0
][
i
];
if
(
pcard
)
{
int
m
=
4
91
+
i
*
86
;
adFont
->
draw
(
L"/"
,
recti
(
m
-
4
,
403
,
m
+
4
,
423
),
0xff000000
,
true
,
false
,
0
);
adFont
->
draw
(
L"/"
,
recti
(
m
-
3
,
404
,
m
+
5
,
424
),
0xffffffff
,
true
,
false
,
0
);
int
m
=
4
83
+
i
*
90
;
adFont
->
draw
(
L"/"
,
recti
(
m
-
4
,
396
,
m
+
4
,
416
),
0xff000000
,
true
,
false
,
0
);
adFont
->
draw
(
L"/"
,
recti
(
m
-
3
,
397
,
m
+
5
,
417
),
0xffffffff
,
true
,
false
,
0
);
int
w
=
adFont
->
getDimension
(
pcard
->
atkstring
).
Width
;
adFont
->
draw
(
pcard
->
atkstring
,
recti
(
m
-
5
-
w
,
403
,
m
-
5
,
423
),
0xff000000
,
false
,
false
,
0
);
adFont
->
draw
(
pcard
->
atkstring
,
recti
(
m
-
4
-
w
,
404
,
m
-
4
,
424
),
adFont
->
draw
(
pcard
->
atkstring
,
recti
(
m
-
5
-
w
,
396
,
m
-
5
,
416
),
0xff000000
,
false
,
false
,
0
);
adFont
->
draw
(
pcard
->
atkstring
,
recti
(
m
-
4
-
w
,
397
,
m
-
4
,
417
),
pcard
->
attack
>
pcard
->
base_attack
?
0xffffff00
:
pcard
->
attack
<
pcard
->
base_attack
?
0xffff2090
:
0xffffffff
,
false
,
false
,
0
);
w
=
adFont
->
getDimension
(
pcard
->
defstring
).
Width
;
adFont
->
draw
(
pcard
->
defstring
,
recti
(
m
+
4
,
403
,
m
+
4
+
w
,
423
),
0xff000000
,
false
,
false
,
0
);
adFont
->
draw
(
pcard
->
defstring
,
recti
(
m
+
5
,
404
,
m
+
5
+
w
,
424
),
adFont
->
draw
(
pcard
->
defstring
,
recti
(
m
+
4
,
396
,
m
+
4
+
w
,
416
),
0xff000000
,
false
,
false
,
0
);
adFont
->
draw
(
pcard
->
defstring
,
recti
(
m
+
5
,
397
,
m
+
5
+
w
,
417
),
pcard
->
defence
>
pcard
->
base_defence
?
0xffffff00
:
pcard
->
defence
<
pcard
->
base_defence
?
0xffff2090
:
0xffffffff
,
false
,
false
,
0
);
adFont
->
draw
(
pcard
->
lvstring
,
recti
(
46
8
+
i
*
83
,
347
,
500
+
i
*
83
,
367
),
0xff000000
,
false
,
false
,
0
);
adFont
->
draw
(
pcard
->
lvstring
,
recti
(
46
9
+
i
*
83
,
348
,
501
+
i
*
83
,
368
),
adFont
->
draw
(
pcard
->
lvstring
,
recti
(
46
3
+
i
*
85
,
346
,
495
+
i
*
85
,
366
),
0xff000000
,
false
,
false
,
0
);
adFont
->
draw
(
pcard
->
lvstring
,
recti
(
46
4
+
i
*
85
,
347
,
496
+
i
*
85
,
367
),
(
pcard
->
type
&
TYPE_XYZ
)
?
0xffff80ff
:
(
pcard
->
type
&
TYPE_TUNER
)
?
0xffffff00
:
0xffffffff
,
false
,
false
,
0
);
}
}
for
(
int
i
=
0
;
i
<
5
;
++
i
)
{
ClientCard
*
pcard
=
dField
.
mzone
[
1
][
i
];
if
(
pcard
&&
(
pcard
->
position
&
POS_FACEUP
))
{
int
m
=
8
08
-
i
*
72
;
adFont
->
draw
(
L"/"
,
recti
(
m
-
4
,
2
35
,
m
+
4
,
25
5
),
0xff000000
,
true
,
false
,
0
);
adFont
->
draw
(
L"/"
,
recti
(
m
-
3
,
2
36
,
m
+
5
,
25
6
),
0xffffffff
,
true
,
false
,
0
);
int
m
=
8
10
-
i
*
73
;
adFont
->
draw
(
L"/"
,
recti
(
m
-
4
,
2
45
,
m
+
4
,
26
5
),
0xff000000
,
true
,
false
,
0
);
adFont
->
draw
(
L"/"
,
recti
(
m
-
3
,
2
46
,
m
+
5
,
26
6
),
0xffffffff
,
true
,
false
,
0
);
int
w
=
adFont
->
getDimension
(
pcard
->
atkstring
).
Width
;
adFont
->
draw
(
pcard
->
atkstring
,
recti
(
m
-
5
-
w
,
2
35
,
m
-
5
,
25
5
),
0xff000000
,
false
,
false
,
0
);
adFont
->
draw
(
pcard
->
atkstring
,
recti
(
m
-
4
-
w
,
2
36
,
m
-
4
,
25
6
),
adFont
->
draw
(
pcard
->
atkstring
,
recti
(
m
-
5
-
w
,
2
45
,
m
-
5
,
26
5
),
0xff000000
,
false
,
false
,
0
);
adFont
->
draw
(
pcard
->
atkstring
,
recti
(
m
-
4
-
w
,
2
46
,
m
-
4
,
26
6
),
pcard
->
attack
>
pcard
->
base_attack
?
0xffffff00
:
pcard
->
attack
<
pcard
->
base_attack
?
0xffff2090
:
0xffffffff
,
false
,
false
,
0
);
w
=
adFont
->
getDimension
(
pcard
->
defstring
).
Width
;
adFont
->
draw
(
pcard
->
defstring
,
recti
(
m
+
4
,
2
35
,
m
+
4
+
w
,
25
5
),
0xff000000
,
false
,
false
,
0
);
adFont
->
draw
(
pcard
->
defstring
,
recti
(
m
+
5
,
2
36
,
m
+
5
+
w
,
25
6
),
adFont
->
draw
(
pcard
->
defstring
,
recti
(
m
+
4
,
2
45
,
m
+
4
+
w
,
26
5
),
0xff000000
,
false
,
false
,
0
);
adFont
->
draw
(
pcard
->
defstring
,
recti
(
m
+
5
,
2
46
,
m
+
5
+
w
,
26
6
),
pcard
->
defence
>
pcard
->
base_defence
?
0xffffff00
:
pcard
->
defence
<
pcard
->
base_defence
?
0xffff2090
:
0xffffffff
,
false
,
false
,
0
);
adFont
->
draw
(
pcard
->
lvstring
,
recti
(
789
-
i
*
76
,
28
0
,
820
-
i
*
76
,
300
),
0xff000000
,
false
,
false
,
0
);
adFont
->
draw
(
pcard
->
lvstring
,
recti
(
789
-
i
*
76
,
28
1
,
820
-
i
*
76
,
301
),
adFont
->
draw
(
pcard
->
lvstring
,
recti
(
789
-
i
*
76
,
28
2
,
820
-
i
*
76
,
302
),
0xff000000
,
false
,
false
,
0
);
adFont
->
draw
(
pcard
->
lvstring
,
recti
(
789
-
i
*
76
,
28
3
,
820
-
i
*
76
,
303
),
(
pcard
->
type
&
TYPE_XYZ
)
?
0xffff80ff
:
(
pcard
->
type
&
TYPE_TUNER
)
?
0xffffff00
:
0xffffffff
,
false
,
false
,
0
);
}
}
if
(
dField
.
extra
[
0
].
size
())
{
numFont
->
draw
(
dataManager
.
GetNumString
(
dField
.
extra
[
0
].
size
()),
recti
(
3
37
,
540
,
397
,
560
),
0xff000000
,
true
,
false
,
0
);
numFont
->
draw
(
dataManager
.
GetNumString
(
dField
.
extra
[
0
].
size
()),
recti
(
3
37
,
541
,
399
,
561
),
0xffffff00
,
true
,
false
,
0
);
numFont
->
draw
(
dataManager
.
GetNumString
(
dField
.
extra
[
0
].
size
()),
recti
(
3
05
,
532
,
381
,
552
),
0xff000000
,
true
,
false
,
0
);
numFont
->
draw
(
dataManager
.
GetNumString
(
dField
.
extra
[
0
].
size
()),
recti
(
3
05
,
533
,
383
,
553
),
0xffffff00
,
true
,
false
,
0
);
}
if
(
dField
.
deck
[
0
].
size
())
{
numFont
->
draw
(
dataManager
.
GetNumString
(
dField
.
deck
[
0
].
size
()),
recti
(
9
34
,
540
,
994
,
560
),
0xff000000
,
true
,
false
,
0
);
numFont
->
draw
(
dataManager
.
GetNumString
(
dField
.
deck
[
0
].
size
()),
recti
(
9
34
,
541
,
996
,
561
),
0xffffff00
,
true
,
false
,
0
);
numFont
->
draw
(
dataManager
.
GetNumString
(
dField
.
deck
[
0
].
size
()),
recti
(
9
42
,
532
,
1021
,
552
),
0xff000000
,
true
,
false
,
0
);
numFont
->
draw
(
dataManager
.
GetNumString
(
dField
.
deck
[
0
].
size
()),
recti
(
9
43
,
533
,
1023
,
553
),
0xffffff00
,
true
,
false
,
0
);
}
if
(
dField
.
grave
[
0
].
size
())
{
numFont
->
draw
(
dataManager
.
GetNumString
(
dField
.
grave
[
0
].
size
()),
recti
(
91
0
,
442
,
970
,
462
),
0xff000000
,
true
,
false
,
0
);
numFont
->
draw
(
dataManager
.
GetNumString
(
dField
.
grave
[
0
].
size
()),
recti
(
91
0
,
443
,
972
,
463
),
0xffffff00
,
true
,
false
,
0
);
numFont
->
draw
(
dataManager
.
GetNumString
(
dField
.
grave
[
0
].
size
()),
recti
(
91
7
,
436
,
984
,
456
),
0xff000000
,
true
,
false
,
0
);
numFont
->
draw
(
dataManager
.
GetNumString
(
dField
.
grave
[
0
].
size
()),
recti
(
91
7
,
437
,
986
,
457
),
0xffffff00
,
true
,
false
,
0
);
}
if
(
dField
.
remove
[
0
].
size
())
{
numFont
->
draw
(
dataManager
.
GetNumString
(
dField
.
remove
[
0
].
size
()),
recti
(
8
88
,
359
,
948
,
359
),
0xff000000
,
true
,
false
,
0
);
numFont
->
draw
(
dataManager
.
GetNumString
(
dField
.
remove
[
0
].
size
()),
recti
(
8
88
,
360
,
950
,
360
),
0xffffff00
,
true
,
false
,
0
);
numFont
->
draw
(
dataManager
.
GetNumString
(
dField
.
remove
[
0
].
size
()),
recti
(
8
95
,
360
,
957
,
380
),
0xff000000
,
true
,
false
,
0
);
numFont
->
draw
(
dataManager
.
GetNumString
(
dField
.
remove
[
0
].
size
()),
recti
(
8
95
,
361
,
959
,
381
),
0xffffff00
,
true
,
false
,
0
);
}
if
(
dField
.
extra
[
1
].
size
())
{
numFont
->
draw
(
dataManager
.
GetNumString
(
dField
.
extra
[
1
].
size
()),
recti
(
848
,
194
,
908
,
214
),
0xff000000
,
true
,
false
,
0
);
numFont
->
draw
(
dataManager
.
GetNumString
(
dField
.
extra
[
1
].
size
()),
recti
(
848
,
195
,
910
,
215
),
0xffffff00
,
true
,
false
,
0
);
numFont
->
draw
(
dataManager
.
GetNumString
(
dField
.
extra
[
1
].
size
()),
recti
(
848
,
212
,
908
,
232
),
0xff000000
,
true
,
false
,
0
);
numFont
->
draw
(
dataManager
.
GetNumString
(
dField
.
extra
[
1
].
size
()),
recti
(
848
,
213
,
910
,
233
),
0xffffff00
,
true
,
false
,
0
);
}
if
(
dField
.
deck
[
1
].
size
())
{
numFont
->
draw
(
dataManager
.
GetNumString
(
dField
.
deck
[
1
].
size
()),
recti
(
421
,
194
,
481
,
214
),
0xff000000
,
true
,
false
,
0
);
numFont
->
draw
(
dataManager
.
GetNumString
(
dField
.
deck
[
1
].
size
()),
recti
(
421
,
195
,
483
,
215
),
0xffffff00
,
true
,
false
,
0
);
numFont
->
draw
(
dataManager
.
GetNumString
(
dField
.
deck
[
1
].
size
()),
recti
(
421
,
212
,
481
,
232
),
0xff000000
,
true
,
false
,
0
);
numFont
->
draw
(
dataManager
.
GetNumString
(
dField
.
deck
[
1
].
size
()),
recti
(
421
,
213
,
483
,
233
),
0xffffff00
,
true
,
false
,
0
);
}
if
(
dField
.
grave
[
1
].
size
())
{
numFont
->
draw
(
dataManager
.
GetNumString
(
dField
.
grave
[
1
].
size
()),
recti
(
408
,
2
50
,
469
,
270
),
0xff000000
,
true
,
false
,
0
);
numFont
->
draw
(
dataManager
.
GetNumString
(
dField
.
grave
[
1
].
size
()),
recti
(
408
,
2
51
,
471
,
271
),
0xffffff00
,
true
,
false
,
0
);
numFont
->
draw
(
dataManager
.
GetNumString
(
dField
.
grave
[
1
].
size
()),
recti
(
408
,
2
61
,
462
,
281
),
0xff000000
,
true
,
false
,
0
);
numFont
->
draw
(
dataManager
.
GetNumString
(
dField
.
grave
[
1
].
size
()),
recti
(
408
,
2
62
,
464
,
282
),
0xffffff00
,
true
,
false
,
0
);
}
if
(
dField
.
remove
[
1
].
size
())
{
numFont
->
draw
(
dataManager
.
GetNumString
(
dField
.
remove
[
1
].
size
()),
recti
(
392
,
315
,
453
,
335
),
0xff000000
,
true
,
false
,
0
);
numFont
->
draw
(
dataManager
.
GetNumString
(
dField
.
remove
[
1
].
size
()),
recti
(
392
,
316
,
455
,
336
),
0xffffff00
,
true
,
false
,
0
);
numFont
->
draw
(
dataManager
.
GetNumString
(
dField
.
remove
[
1
].
size
()),
recti
(
386
,
320
,
443
,
340
),
0xff000000
,
true
,
false
,
0
);
numFont
->
draw
(
dataManager
.
GetNumString
(
dField
.
remove
[
1
].
size
()),
recti
(
386
,
321
,
445
,
341
),
0xffffff00
,
true
,
false
,
0
);
}
for
(
int
i
=
0
;
i
<
5
;
++
i
)
{
if
(
chatTiming
[
i
])
{
chatTiming
[
i
]
--
;
textFont
->
draw
(
chatMsg
[
i
].
c_str
(),
rect
<
s32
>
(
305
,
595
-
20
*
i
,
1020
,
615
-
20
*
i
),
0xff000000
,
false
,
false
);
textFont
->
draw
(
chatMsg
[
i
].
c_str
(),
rect
<
s32
>
(
306
,
596
-
20
*
i
,
1021
,
616
-
20
*
i
),
0xffffffff
,
false
,
false
);
}
}
}
void
Game
::
DrawGUI
()
{
...
...
gframe/duelclient.cpp
View file @
636695b7
...
...
@@ -465,6 +465,26 @@ void DuelClient::HandleSTOCPacketLan(char* data, unsigned int len) {
mainGame
->
dInfo
.
time_left
[
lplayer
]
=
pkt
->
left_time
;
break
;
}
case
STOC_CHAT
:
{
STOC_Chat
*
pkt
=
(
STOC_Chat
*
)
pdata
;
wchar_t
msg
[
256
];
if
(
pkt
->
player
<
2
)
{
if
(
mainGame
->
chkIgnore1
->
isChecked
())
break
;
BufferIO
::
CopyWStr
(
pkt
->
msg
,
msg
,
256
);
mainGame
->
gMutex
.
Lock
();
mainGame
->
AddChatMsg
(
msg
,
mainGame
->
LocalPlayer
(
pkt
->
player
));
mainGame
->
gMutex
.
Unlock
();
}
else
{
if
(
mainGame
->
chkIgnore2
->
isChecked
())
break
;
BufferIO
::
CopyWStr
(
pkt
->
msg
,
msg
,
256
);
mainGame
->
gMutex
.
Lock
();
mainGame
->
AddChatMsg
(
msg
,
2
);
mainGame
->
gMutex
.
Unlock
();
}
break
;
}
case
STOC_HS_PLAYER_ENTER
:
{
STOC_HS_PlayerEnter
*
pkt
=
(
STOC_HS_PlayerEnter
*
)
pdata
;
if
(
pkt
->
pos
>
1
)
...
...
gframe/event_handler.cpp
View file @
636695b7
...
...
@@ -762,6 +762,21 @@ bool ClientField::OnEvent(const irr::SEvent& event) {
}
break
;
}
case
EDITBOX_CHAT
:
{
if
(
mainGame
->
dInfo
.
isReplay
)
break
;
const
wchar_t
*
input
=
mainGame
->
ebChatInput
->
getText
();
if
(
input
[
0
])
{
unsigned
short
msgbuf
[
256
];
if
(
!
mainGame
->
dInfo
.
isObserver
)
mainGame
->
AddChatMsg
((
wchar_t
*
)
input
,
0
);
else
mainGame
->
AddChatMsg
((
wchar_t
*
)
input
,
2
);
int
len
=
BufferIO
::
CopyWStr
(
input
,
msgbuf
,
256
);
DuelClient
::
SendBufferToServer
(
CTOS_CHAT
,
msgbuf
,
len
*
sizeof
(
short
));
mainGame
->
ebChatInput
->
setText
(
L""
);
}
break
;
}
}
break
;
}
...
...
@@ -1357,21 +1372,21 @@ bool ClientField::OnEvent(const irr::SEvent& event) {
return
false
;
}
void
ClientField
::
GetHoverField
(
int
x
,
int
y
)
{
irr
::
core
::
recti
sfRect
(
4
33
,
528
,
883
,
618
);
irr
::
core
::
recti
ofRect
(
51
3
,
117
,
807
,
175
);
irr
::
core
::
recti
sfRect
(
4
16
,
504
,
900
,
600
);
irr
::
core
::
recti
ofRect
(
51
6
,
135
,
805
,
191
);
irr
::
core
::
position2di
pos
(
x
,
y
);
if
(
sfRect
.
isPointInside
(
pos
))
{
int
hc
=
hand
[
0
].
size
();
if
(
hc
==
0
)
hovered_location
=
0
;
else
if
(
hc
<
7
)
{
int
left
=
4
33
+
77
*
(
6
-
hc
)
/
2
;
int
left
=
4
16
+
82
*
(
6
-
hc
)
/
2
;
if
(
x
<
left
)
hovered_location
=
0
;
else
{
int
seq
=
(
x
-
left
)
/
77
;
int
seq
=
(
x
-
left
)
/
82
;
if
(
seq
>=
hc
)
seq
=
hc
-
1
;
if
(
x
-
left
-
77
*
seq
<
68
)
{
if
(
x
-
left
-
82
*
seq
<
71
)
{
hovered_controler
=
0
;
hovered_location
=
LOCATION_HAND
;
hovered_sequence
=
seq
;
...
...
@@ -1380,23 +1395,23 @@ void ClientField::GetHoverField(int x, int y) {
}
else
{
hovered_controler
=
0
;
hovered_location
=
LOCATION_HAND
;
if
(
x
>=
8
17
)
if
(
x
>=
8
29
)
hovered_sequence
=
hc
-
1
;
else
hovered_sequence
=
(
x
-
4
33
)
*
(
hc
-
1
)
/
384
;
hovered_sequence
=
(
x
-
4
16
)
*
(
hc
-
1
)
/
413
;
}
}
else
if
(
ofRect
.
isPointInside
(
pos
))
{
int
hc
=
hand
[
1
].
size
();
if
(
hc
==
0
)
hovered_location
=
0
;
else
if
(
hc
<
7
)
{
int
left
=
51
3
+
50
*
(
6
-
hc
)
/
2
;
int
left
=
51
6
+
49
*
(
6
-
hc
)
/
2
;
if
(
x
<
left
)
hovered_location
=
0
;
else
{
int
seq
=
(
x
-
left
)
/
50
;
int
seq
=
(
x
-
left
)
/
49
;
if
(
seq
>=
hc
)
seq
=
hc
-
1
;
if
(
x
-
left
-
50
*
seq
<
45
)
{
if
(
x
-
left
-
49
*
seq
<
42
)
{
hovered_controler
=
1
;
hovered_location
=
LOCATION_HAND
;
hovered_sequence
=
hc
-
1
-
seq
;
...
...
@@ -1405,18 +1420,18 @@ void ClientField::GetHoverField(int x, int y) {
}
else
{
hovered_controler
=
1
;
hovered_location
=
LOCATION_HAND
;
if
(
x
>=
7
63
)
if
(
x
>=
7
56
)
hovered_sequence
=
0
;
else
hovered_sequence
=
hc
-
1
-
(
x
-
51
3
)
*
(
hc
-
1
)
/
250
;
hovered_sequence
=
hc
-
1
-
(
x
-
51
6
)
*
(
hc
-
1
)
/
247
;
}
}
else
{
double
screenx
=
x
/
1024.0
*
1.25
-
0.81
;
double
screeny
=
y
/
640.0
*
0.84
-
0.42
;
double
angle
=
0.
66104316885
-
atan
(
screeny
);
//0.66104316885 = arctan(7.0/9.0
)
double
angle
=
0.
798056
-
atan
(
screeny
);
//0.798056 = arctan(8.0/7.8
)
double
vlen
=
sqrt
(
1.0
+
screeny
*
screeny
);
double
boardx
=
3.95
+
9.0
*
screenx
/
vlen
/
cos
(
angle
);
double
boardy
=
7.0
-
9.0
*
tan
(
angle
);
double
boardx
=
3.95
+
7.8
*
screenx
/
vlen
/
cos
(
angle
);
double
boardy
=
8.0
-
7.8
*
tan
(
angle
);
hovered_location
=
0
;
if
(
boardx
>=
0.2
&&
boardx
<=
1.0
)
{
if
(
boardy
>=
2.4
&&
boardy
<=
3.6
)
{
...
...
gframe/game.cpp
View file @
636695b7
...
...
@@ -464,7 +464,7 @@ void Game::MainLoop() {
irr
::
core
::
matrix4
mProjection
;
BuildProjectionMatrix
(
mProjection
,
-
0.81
f
,
0.44
f
,
-
0.42
f
,
0.42
f
,
1.0
f
,
100.0
f
);
camera
->
setProjectionMatrix
(
mProjection
);
mProjection
.
buildCameraLookAtMatrixLH
(
vector3df
(
3.95
f
,
7.0
f
,
9.0
f
),
vector3df
(
3.95
f
,
0
,
0
),
vector3df
(
0
,
0
,
1
));
mProjection
.
buildCameraLookAtMatrixLH
(
vector3df
(
3.95
f
,
8.0
f
,
7.8
f
),
vector3df
(
3.95
f
,
0
,
0
),
vector3df
(
0
,
0
,
1
));
camera
->
setViewMatrixAffector
(
mProjection
);
irr
::
scene
::
ILightSceneNode
*
light
=
smgr
->
addLightSceneNode
(
0
,
vector3df
(
0
,
0
,
100
));
light
->
getLightData
().
AmbientColor
=
SColorf
(
1.0
f
,
1.0
f
,
1.0
f
);
...
...
@@ -752,6 +752,21 @@ void Game::ShowCardInfo(int code) {
}
SetStaticText
(
stText
,
270
,
textFont
,
(
wchar_t
*
)
dataManager
.
GetText
(
code
));
}
void
Game
::
AddChatMsg
(
wchar_t
*
msg
,
int
player
)
{
for
(
int
i
=
4
;
i
>
0
;
--
i
)
{
chatMsg
[
i
]
=
chatMsg
[
i
-
1
];
chatTiming
[
i
]
=
chatTiming
[
i
-
1
];
}
chatMsg
[
0
].
clear
();
chatTiming
[
0
]
=
600
;
if
(
player
==
0
)
chatMsg
[
0
].
append
(
dInfo
.
hostname
);
else
if
(
player
==
1
)
chatMsg
[
0
].
append
(
dInfo
.
clientname
);
else
chatMsg
[
0
].
append
(
L"[***]"
);
chatMsg
[
0
].
append
(
L": "
);
chatMsg
[
0
].
append
(
msg
);
}
void
Game
::
ClearTextures
()
{
matManager
.
mCard
.
setTexture
(
0
,
0
);
mainGame
->
imgCard
->
setImage
(
0
);
...
...
gframe/game.h
View file @
636695b7
...
...
@@ -81,6 +81,7 @@ public:
void
LoadConfig
();
void
SaveConfig
();
void
ShowCardInfo
(
int
code
);
void
AddChatMsg
(
wchar_t
*
msg
,
int
player
);
void
ClearTextures
();
void
CloseDuelWindow
();
...
...
@@ -97,6 +98,8 @@ public:
std
::
list
<
FadingUnit
>
fadingList
;
std
::
vector
<
int
>
logParam
;
std
::
wstring
chatMsg
[
5
];
int
chatTiming
[
5
];
unsigned
short
linePattern
;
int
waitFrame
;
int
signalFrame
;
...
...
gframe/netserver.cpp
View file @
636695b7
...
...
@@ -186,6 +186,12 @@ void NetServer::HandleCTOSPacket(DuelPlayer* dp, char* data, unsigned int len) {
duel_mode
->
TimeConfirm
(
dp
);
break
;
}
case
CTOS_CHAT
:
{
if
(
!
dp
->
game
)
return
;
duel_mode
->
Chat
(
dp
,
data
,
len
);
break
;
}
case
CTOS_UPDATE_DECK
:
{
if
(
!
dp
->
game
)
return
;
...
...
gframe/network.h
View file @
636695b7
...
...
@@ -80,6 +80,10 @@ struct STOC_TimeLimit {
unsigned
char
player
;
unsigned
short
left_time
;
};
struct
STOC_Chat
{
unsigned
char
player
;
unsigned
short
msg
[
256
];
};
struct
STOC_HS_PlayerEnter
{
unsigned
short
name
[
20
];
unsigned
char
pos
;
...
...
@@ -112,6 +116,7 @@ class DuelMode {
public:
DuelMode
()
:
host_player
(
0
),
pduel
(
0
)
{}
virtual
~
DuelMode
()
{}
virtual
void
Chat
(
DuelPlayer
*
dp
,
void
*
pdata
,
int
len
)
{}
virtual
void
JoinGame
(
DuelPlayer
*
dp
,
void
*
pdata
,
bool
is_creater
)
{}
virtual
void
LeaveGame
(
DuelPlayer
*
dp
)
{}
virtual
void
ToDuelist
(
DuelPlayer
*
dp
)
{}
...
...
@@ -163,6 +168,7 @@ public:
#define CTOS_LEAVE_GAME 0x13
#define CTOS_SURRENDER 0x14
#define CTOS_TIME_CONFIRM 0x15
#define CTOS_CHAT 0x16
#define CTOS_HS_TODUELIST 0x20
#define CTOS_HS_TOOBSERVER 0x21
#define CTOS_HS_READY 0x22
...
...
@@ -186,6 +192,7 @@ public:
#define STOC_DUEL_END 0x16
#define STOC_REPLAY 0x17
#define STOC_TIME_LIMIT 0x18
#define STOC_CHAT 0x19
#define STOC_HS_PLAYER_ENTER 0x20
#define STOC_HS_PLAYER_CHANGE 0x21
#define STOC_HS_WATCH_CHANGE 0x22
...
...
gframe/single_duel.cpp
View file @
636695b7
...
...
@@ -18,6 +18,24 @@ SingleDuel::SingleDuel(bool is_match) {
memset
(
match_result
,
0
,
3
);
}
SingleDuel
::~
SingleDuel
()
{
}
void
SingleDuel
::
Chat
(
DuelPlayer
*
dp
,
void
*
pdata
,
int
len
)
{
STOC_Chat
scc
;
scc
.
player
=
dp
->
type
;
unsigned
short
*
msg
=
(
unsigned
short
*
)
pdata
;
int
msglen
=
BufferIO
::
CopyWStr
(
msg
,
scc
.
msg
,
256
);
if
(
dp
->
type
<
2
)
{
NetServer
::
SendBufferToPlayer
(
players
[
0
],
STOC_CHAT
,
&
scc
,
1
+
msglen
*
2
);
NetServer
::
SendBufferToPlayer
(
players
[
1
],
STOC_CHAT
,
&
scc
,
1
+
msglen
*
2
);
for
(
auto
pit
=
observers
.
begin
();
pit
!=
observers
.
end
();
++
pit
)
if
((
*
pit
)
!=
dp
)
NetServer
::
ReSendToPlayer
(
*
pit
);
}
else
{
NetServer
::
SendBufferToPlayer
(
players
[
1
-
dp
->
type
],
STOC_CHAT
,
&
scc
,
1
+
msglen
*
2
);
for
(
auto
pit
=
observers
.
begin
();
pit
!=
observers
.
end
();
++
pit
)
NetServer
::
ReSendToPlayer
(
*
pit
);
}
}
void
SingleDuel
::
JoinGame
(
DuelPlayer
*
dp
,
void
*
pdata
,
bool
is_creater
)
{
if
(
!
is_creater
)
{
...
...
gframe/single_duel.h
View file @
636695b7
...
...
@@ -11,6 +11,7 @@ class SingleDuel: public DuelMode {
public:
SingleDuel
(
bool
is_match
);
virtual
~
SingleDuel
();
virtual
void
Chat
(
DuelPlayer
*
dp
,
void
*
pdata
,
int
len
);
virtual
void
JoinGame
(
DuelPlayer
*
dp
,
void
*
pdata
,
bool
is_creater
);
virtual
void
LeaveGame
(
DuelPlayer
*
dp
);
virtual
void
ToDuelist
(
DuelPlayer
*
dp
);
...
...
ocgcore/libcard.cpp
View file @
636695b7
...
...
@@ -921,6 +921,7 @@ int32 scriptlib::card_enable_revive_limit(lua_State *L) {
check_param_count
(
L
,
1
);
check_param
(
L
,
PARAM_TYPE_CARD
,
1
);
card
*
pcard
=
*
(
card
**
)
lua_touserdata
(
L
,
1
);
if
(
!
pcard
->
is_status
(
STATUS_COPYING_EFFECT
))
pcard
->
set_status
(
STATUS_REVIVE_LIMIT
,
TRUE
);
return
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