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
1
Merge Requests
1
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
Commits
c37acb84
Commit
c37acb84
authored
Jun 14, 2021
by
nanahira
Browse files
Options
Browse Files
Download
Plain Diff
Merge remote-tracking branch 'fh/master' into mc
parents
721a3f7a
5090fc0f
Pipeline
#3677
passed with stages
in 5 minutes and 52 seconds
Changes
7
Pipelines
1
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
1204 additions
and
1012 deletions
+1204
-1012
gframe/client_field.cpp
gframe/client_field.cpp
+12
-0
gframe/drawing.cpp
gframe/drawing.cpp
+5
-2
gframe/duelclient.cpp
gframe/duelclient.cpp
+47
-58
gframe/game.cpp
gframe/game.cpp
+2
-0
gframe/single_mode.cpp
gframe/single_mode.cpp
+2
-1
lflist.conf
lflist.conf
+1129
-945
strings.conf
strings.conf
+7
-6
No files found.
gframe/client_field.cpp
View file @
c37acb84
...
...
@@ -371,6 +371,18 @@ void ClientField::ClearSelect() {
(
*
cit
)
->
is_selectable
=
false
;
(
*
cit
)
->
is_selected
=
false
;
}
for
(
auto
cit
=
selected_cards
.
begin
();
cit
!=
selected_cards
.
end
();
++
cit
)
{
(
*
cit
)
->
is_selectable
=
false
;
(
*
cit
)
->
is_selected
=
false
;
}
for
(
auto
cit
=
selectsum_all
.
begin
();
cit
!=
selectsum_all
.
end
();
++
cit
)
{
(
*
cit
)
->
is_selectable
=
false
;
(
*
cit
)
->
is_selected
=
false
;
}
for
(
auto
cit
=
selectsum_cards
.
begin
();
cit
!=
selectsum_cards
.
end
();
++
cit
)
{
(
*
cit
)
->
is_selectable
=
false
;
(
*
cit
)
->
is_selected
=
false
;
}
}
void
ClientField
::
ClearChainSelect
()
{
for
(
auto
cit
=
activatable_cards
.
begin
();
cit
!=
activatable_cards
.
end
();
++
cit
)
{
...
...
gframe/drawing.cpp
View file @
c37acb84
...
...
@@ -921,8 +921,11 @@ void Game::DrawSpec() {
}
else
if
(
showcardp
<
showcarddif
)
{
DrawShadowText
(
lpcFont
,
lstr
,
ResizePhaseHint
(
660
,
290
,
960
,
370
,
pos
.
Width
),
Resize
(
-
1
,
-
1
,
0
,
0
),
0xffffffff
);
if
(
dInfo
.
vic_string
&&
(
showcardcode
==
1
||
showcardcode
==
2
))
{
driver
->
draw2DRectangle
(
0xa0000000
,
Resize
(
540
,
320
,
790
,
340
));
DrawShadowText
(
guiFont
,
dInfo
.
vic_string
,
Resize
(
490
,
320
,
840
,
340
),
Resize
(
-
2
,
-
1
,
0
,
0
),
0xffffffff
,
0xff000000
,
true
,
true
,
0
);
int
w
=
guiFont
->
getDimension
(
dInfo
.
vic_string
).
Width
;
if
(
w
<
200
)
w
=
200
;
driver
->
draw2DRectangle
(
0xa0000000
,
ResizeWin
(
640
-
w
/
2
,
320
,
690
+
w
/
2
,
340
));
DrawShadowText
(
guiFont
,
dInfo
.
vic_string
,
ResizeWin
(
640
-
w
/
2
,
320
,
690
+
w
/
2
,
340
),
Resize
(
-
2
,
-
1
,
0
,
0
),
0xffffffff
,
0xff000000
,
true
,
true
,
0
);
}
}
else
if
(
showcardp
<
showcarddif
+
10
)
{
int
alpha
=
((
showcarddif
+
10
-
showcardp
)
*
25
)
<<
24
;
...
...
gframe/duelclient.cpp
View file @
c37acb84
...
...
@@ -2577,6 +2577,12 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) {
pcard
->
SetCode
(
code
);
pcard
->
counters
.
clear
();
pcard
->
ClearTarget
();
if
(
pcard
->
equipTarget
)
{
pcard
->
equipTarget
->
is_showequip
=
false
;
pcard
->
equipTarget
->
equipped
.
erase
(
pcard
);
pcard
->
equipTarget
=
0
;
}
pcard
->
is_showequip
=
false
;
pcard
->
is_showtarget
=
false
;
pcard
->
is_showchaintarget
=
false
;
ClientCard
*
olcard
=
mainGame
->
dField
.
GetCard
(
cc
,
cl
&
0x7f
,
cs
);
...
...
@@ -3827,47 +3833,45 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) {
mainGame
->
dField
.
extra_p_count
[
p
]
=
val
;
}
mainGame
->
dField
.
RefreshAllCards
();
val
=
BufferIO
::
ReadInt8
(
pbuf
);
//chains, always 0 in single mode
if
(
!
mainGame
->
dInfo
.
isSingleMode
)
{
for
(
int
i
=
0
;
i
<
val
;
++
i
)
{
unsigned
int
code
=
(
unsigned
int
)
BufferIO
::
ReadInt32
(
pbuf
);
int
pcc
=
mainGame
->
LocalPlayer
(
BufferIO
::
ReadInt8
(
pbuf
));
int
pcl
=
BufferIO
::
ReadInt8
(
pbuf
);
int
pcs
=
BufferIO
::
ReadInt8
(
pbuf
);
int
subs
=
BufferIO
::
ReadInt8
(
pbuf
);
int
cc
=
mainGame
->
LocalPlayer
(
BufferIO
::
ReadInt8
(
pbuf
));
int
cl
=
BufferIO
::
ReadInt8
(
pbuf
);
int
cs
=
BufferIO
::
ReadInt8
(
pbuf
);
int
desc
=
BufferIO
::
ReadInt32
(
pbuf
);
ClientCard
*
pcard
=
mainGame
->
dField
.
GetCard
(
pcc
,
pcl
,
pcs
,
subs
);
mainGame
->
dField
.
current_chain
.
chain_card
=
pcard
;
mainGame
->
dField
.
current_chain
.
code
=
code
;
mainGame
->
dField
.
current_chain
.
desc
=
desc
;
mainGame
->
dField
.
current_chain
.
controler
=
cc
;
mainGame
->
dField
.
current_chain
.
location
=
cl
;
mainGame
->
dField
.
current_chain
.
sequence
=
cs
;
mainGame
->
dField
.
GetChainLocation
(
cc
,
cl
,
cs
,
&
mainGame
->
dField
.
current_chain
.
chain_pos
);
mainGame
->
dField
.
current_chain
.
solved
=
false
;
int
chc
=
0
;
for
(
auto
chit
=
mainGame
->
dField
.
chains
.
begin
();
chit
!=
mainGame
->
dField
.
chains
.
end
();
++
chit
)
{
if
(
cl
==
0x10
||
cl
==
0x20
)
{
if
(
chit
->
controler
==
cc
&&
chit
->
location
==
cl
)
chc
++
;
}
else
{
if
(
chit
->
controler
==
cc
&&
chit
->
location
==
cl
&&
chit
->
sequence
==
cs
)
chc
++
;
}
val
=
BufferIO
::
ReadInt8
(
pbuf
);
//chains
for
(
int
i
=
0
;
i
<
val
;
++
i
)
{
unsigned
int
code
=
(
unsigned
int
)
BufferIO
::
ReadInt32
(
pbuf
);
int
pcc
=
mainGame
->
LocalPlayer
(
BufferIO
::
ReadInt8
(
pbuf
));
int
pcl
=
BufferIO
::
ReadInt8
(
pbuf
);
int
pcs
=
BufferIO
::
ReadInt8
(
pbuf
);
int
subs
=
BufferIO
::
ReadInt8
(
pbuf
);
int
cc
=
mainGame
->
LocalPlayer
(
BufferIO
::
ReadInt8
(
pbuf
));
int
cl
=
BufferIO
::
ReadInt8
(
pbuf
);
int
cs
=
BufferIO
::
ReadInt8
(
pbuf
);
int
desc
=
BufferIO
::
ReadInt32
(
pbuf
);
ClientCard
*
pcard
=
mainGame
->
dField
.
GetCard
(
pcc
,
pcl
,
pcs
,
subs
);
mainGame
->
dField
.
current_chain
.
chain_card
=
pcard
;
mainGame
->
dField
.
current_chain
.
code
=
code
;
mainGame
->
dField
.
current_chain
.
desc
=
desc
;
mainGame
->
dField
.
current_chain
.
controler
=
cc
;
mainGame
->
dField
.
current_chain
.
location
=
cl
;
mainGame
->
dField
.
current_chain
.
sequence
=
cs
;
mainGame
->
dField
.
GetChainLocation
(
cc
,
cl
,
cs
,
&
mainGame
->
dField
.
current_chain
.
chain_pos
);
mainGame
->
dField
.
current_chain
.
solved
=
false
;
int
chc
=
0
;
for
(
auto
chit
=
mainGame
->
dField
.
chains
.
begin
();
chit
!=
mainGame
->
dField
.
chains
.
end
();
++
chit
)
{
if
(
cl
==
0x10
||
cl
==
0x20
)
{
if
(
chit
->
controler
==
cc
&&
chit
->
location
==
cl
)
chc
++
;
}
else
{
if
(
chit
->
controler
==
cc
&&
chit
->
location
==
cl
&&
chit
->
sequence
==
cs
)
chc
++
;
}
if
(
cl
==
LOCATION_HAND
)
mainGame
->
dField
.
current_chain
.
chain_pos
.
X
+=
0.35
f
;
else
mainGame
->
dField
.
current_chain
.
chain_pos
.
Y
+=
chc
*
0.25
f
;
mainGame
->
dField
.
chains
.
push_back
(
mainGame
->
dField
.
current_chain
);
}
if
(
val
)
{
myswprintf
(
event_string
,
dataManager
.
GetSysString
(
1609
),
dataManager
.
GetName
(
mainGame
->
dField
.
current_chain
.
code
));
mainGame
->
dField
.
last_chain
=
true
;
}
if
(
cl
==
LOCATION_HAND
)
mainGame
->
dField
.
current_chain
.
chain_pos
.
X
+=
0.35
f
;
else
mainGame
->
dField
.
current_chain
.
chain_pos
.
Y
+=
chc
*
0.25
f
;
mainGame
->
dField
.
chains
.
push_back
(
mainGame
->
dField
.
current_chain
);
}
if
(
val
)
{
myswprintf
(
event_string
,
dataManager
.
GetSysString
(
1609
),
dataManager
.
GetName
(
mainGame
->
dField
.
current_chain
.
code
));
mainGame
->
dField
.
last_chain
=
true
;
}
mainGame
->
gMutex
.
unlock
();
break
;
...
...
@@ -3902,7 +3906,10 @@ void DuelClient::SendResponse() {
break
;
}
case
MSG_SELECT_CARD
:
case
MSG_SELECT_UNSELECT_CARD
:
{
case
MSG_SELECT_UNSELECT_CARD
:
case
MSG_SELECT_TRIBUTE
:
case
MSG_SELECT_SUM
:
case
MSG_SELECT_COUNTER
:
{
mainGame
->
dField
.
ClearSelect
();
break
;
}
...
...
@@ -3910,24 +3917,6 @@ void DuelClient::SendResponse() {
mainGame
->
dField
.
ClearChainSelect
();
break
;
}
case
MSG_SELECT_TRIBUTE
:
{
mainGame
->
dField
.
ClearSelect
();
break
;
}
case
MSG_SELECT_COUNTER
:
{
mainGame
->
dField
.
ClearSelect
();
break
;
}
case
MSG_SELECT_SUM
:
{
for
(
int
i
=
0
;
i
<
mainGame
->
dField
.
must_select_count
;
++
i
)
{
mainGame
->
dField
.
selected_cards
[
i
]
->
is_selected
=
false
;
}
for
(
size_t
i
=
0
;
i
<
mainGame
->
dField
.
selectsum_all
.
size
();
++
i
)
{
mainGame
->
dField
.
selectsum_all
[
i
]
->
is_selectable
=
false
;
mainGame
->
dField
.
selectsum_all
[
i
]
->
is_selected
=
false
;
}
break
;
}
}
if
(
mainGame
->
dInfo
.
isSingleMode
)
{
SingleMode
::
SetResponse
(
response_buf
,
response_len
);
...
...
gframe/game.cpp
View file @
c37acb84
...
...
@@ -77,6 +77,7 @@ bool Game::Initialize() {
L"/usr/share/fonts/truetype/DroidSansFallbackFull.ttf"
,
L"/usr/share/fonts/opentype/noto/NotoSansCJK-Bold.ttc"
,
L"/usr/share/fonts/google-noto-cjk/NotoSansCJK-Bold.ttc"
,
L"/usr/share/fonts/noto-cjk/NotoSansCJK-Bold.ttc"
,
L"/System/Library/Fonts/SFNSTextCondensed-Bold.otf"
,
L"/System/Library/Fonts/SFNS.ttf"
,
L"./fonts/numFont.ttf"
,
...
...
@@ -99,6 +100,7 @@ bool Game::Initialize() {
L"/usr/share/fonts/truetype/DroidSansFallbackFull.ttf"
,
L"/usr/share/fonts/opentype/noto/NotoSansCJK-Regular.ttc"
,
L"/usr/share/fonts/google-noto-cjk/NotoSansCJK-Regular.ttc"
,
L"/usr/share/fonts/noto-cjk/NotoSansCJK-Regular.ttc"
,
L"/System/Library/Fonts/PingFang.ttc"
,
L"./fonts/textFont.ttf"
,
L"./fonts/textFont.ttc"
,
...
...
gframe/single_mode.cpp
View file @
c37acb84
...
...
@@ -728,7 +728,8 @@ bool SingleMode::SinglePlayAnalyze(char* msg, unsigned int len) {
}
pbuf
+=
6
;
}
pbuf
++
;
count
=
BufferIO
::
ReadInt8
(
pbuf
);
pbuf
+=
count
*
15
;
DuelClient
::
ClientAnalyze
(
offset
,
pbuf
-
offset
);
SinglePlayReload
();
mainGame
->
gMutex
.
lock
();
...
...
lflist.conf
View file @
c37acb84
This source diff could not be displayed because it is too large. You can
view the blob
instead.
strings.conf
View file @
c37acb84
...
...
@@ -525,13 +525,13 @@
!
victory
0
x4
失去连接
!
victory
0
x10
「被封印的艾克佐迪亚」特殊胜利
!
victory
0
x11
「终焉的倒计时」特殊胜利
!
victory
0
x12
「毒蛇神
维诺米纳迦」特殊胜利
!
victory
0
x13
「光之创造神
哈拉克提」特殊胜利
!
victory
0
x14
「究极封印神
艾克佐迪奥斯」特殊胜利
!
victory
0
x12
「毒蛇神
维诺米纳迦」特殊胜利
!
victory
0
x13
「光之创造神
哈拉克提」特殊胜利
!
victory
0
x14
「究极封印神
艾克佐迪奥斯」特殊胜利
!
victory
0
x15
「通灵盘」特殊胜利
!
victory
0
x16
「最终一战!」特殊胜利
!
victory
0
x17
「
No
.
88
机关傀儡-命运狮子」特殊胜利
!
victory
0
x18
「混沌
No
.
88
机关傀儡-灾厄狮子」特殊胜利
!
victory
0
x17
「
No
.
88
机关傀儡-命运狮子」特殊胜利
!
victory
0
x18
「混沌
No
.
88
机关傀儡-灾厄狮子」特殊胜利
!
victory
0
x19
「头奖壶
7
」特殊胜利
!
victory
0
x1a
「魂之接力」特殊胜利
!
victory
0
x1b
「鬼计惰天使」特殊胜利
...
...
@@ -540,6 +540,7 @@
!
victory
0
x1e
「飞行象」特殊胜利
!
victory
0
x1f
「守护神 艾克佐迪亚」特殊胜利
!
victory
0
x20
「真艾克佐迪亚」特殊胜利
!
victory
0
x21
「混沌虚数
No
.
1000
梦幻虚光神 原数天灵·原数天地」特殊胜利
!
victory
0
xffff
由于「%
ls
」获得比赛胜利
#counters
!
counter
0
x1
魔力指示物
...
...
@@ -593,7 +594,7 @@
!
counter
0
x31
希望剑指示物
!
counter
0
x32
气球指示物
!
counter
0
x33
妖仙指示物
!
counter
0
x34
指示物(
BOX
)
!
counter
0
x34
指示物(
纸箱拳击手
)
!
counter
0
x35
音响指示物
!
counter
0
x36
娱乐法师指示物
!
counter
0
x37
坏兽指示物
...
...
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