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
wind2009
ygopro
Commits
19c16c27
Commit
19c16c27
authored
May 20, 2024
by
wind2009
Browse files
Options
Browse Files
Download
Plain Diff
Merge remote-tracking branch '233/patch-tag-surrender' into server-develop
parents
79f36bf4
df19eabe
Changes
9
Hide whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
54 additions
and
5 deletions
+54
-5
gframe/client_field.cpp
gframe/client_field.cpp
+2
-0
gframe/client_field.h
gframe/client_field.h
+2
-0
gframe/drawing.cpp
gframe/drawing.cpp
+2
-0
gframe/duelclient.cpp
gframe/duelclient.cpp
+9
-2
gframe/event_handler.cpp
gframe/event_handler.cpp
+4
-1
gframe/network.h
gframe/network.h
+1
-0
gframe/tag_duel.cpp
gframe/tag_duel.cpp
+31
-1
gframe/tag_duel.h
gframe/tag_duel.h
+1
-0
strings.conf
strings.conf
+2
-1
No files found.
gframe/client_field.cpp
View file @
19c16c27
...
...
@@ -117,6 +117,8 @@ void ClientField::Clear() {
conti_act
=
false
;
deck_reversed
=
false
;
cant_check_grave
=
false
;
tag_surrender
=
false
;
tag_teammate_surrender
=
false
;
}
void
ClientField
::
Initial
(
int
player
,
int
deckc
,
int
extrac
)
{
ClientCard
*
pcard
;
...
...
gframe/client_field.h
View file @
19c16c27
...
...
@@ -85,6 +85,8 @@ public:
bool
deck_reversed
{
false
};
bool
conti_selecting
{
false
};
bool
cant_check_grave
{
false
};
bool
tag_surrender
{
false
};
bool
tag_teammate_surrender
{
false
};
mt19937
rnd
;
ClientField
();
...
...
gframe/drawing.cpp
View file @
19c16c27
...
...
@@ -520,6 +520,8 @@ void Game::DrawMisc() {
//finish button
if
(
btnCancelOrFinish
->
isVisible
()
&&
dField
.
select_ready
)
DrawSelectionLine
(
btnCancelOrFinish
,
2
,
0xffffff00
);
if
(
btnLeaveGame
->
isVisible
()
&&
dField
.
tag_teammate_surrender
)
DrawSelectionLine
(
btnLeaveGame
,
2
,
0xffffff00
);
//lp bar
if
((
dInfo
.
turn
%
2
&&
dInfo
.
isFirst
)
||
(
!
(
dInfo
.
turn
%
2
)
&&
!
dInfo
.
isFirst
))
{
driver
->
draw2DRectangle
(
0xa0000000
,
Resize
(
327
,
8
,
630
,
51
));
...
...
gframe/duelclient.cpp
View file @
19c16c27
...
...
@@ -631,7 +631,7 @@ void DuelClient::HandleSTOCPacketLan(unsigned char* data, unsigned int len) {
}
}
else
{
if
(
selftype
>
3
)
{
mainGame
->
dInfo
.
player_type
=
7
;
mainGame
->
dInfo
.
player_type
=
NETPLAYER_TYPE_OBSERVER
;
mainGame
->
btnLeaveGame
->
setText
(
dataManager
.
GetSysString
(
1350
));
mainGame
->
btnLeaveGame
->
setVisible
(
true
);
mainGame
->
btnSpectatorSwap
->
setVisible
(
true
);
...
...
@@ -877,6 +877,11 @@ void DuelClient::HandleSTOCPacketLan(unsigned char* data, unsigned int len) {
mainGame
->
gMutex
.
unlock
();
break
;
}
case
STOC_TEAMMATE_SURRENDER
:
{
if
(
!
mainGame
->
dField
.
tag_surrender
)
mainGame
->
dField
.
tag_teammate_surrender
=
true
;
mainGame
->
btnLeaveGame
->
setText
(
dataManager
.
GetSysString
(
1355
));
}
}
}
// Analyze STOC_GAME_MSG packet
...
...
@@ -2433,7 +2438,9 @@ int DuelClient::ClientAnalyze(unsigned char* msg, unsigned int len) {
case
MSG_NEW_TURN
:
{
int
player
=
mainGame
->
LocalPlayer
(
BufferIO
::
ReadUInt8
(
pbuf
));
mainGame
->
dInfo
.
turn
++
;
if
(
!
mainGame
->
dInfo
.
isTag
&&
!
mainGame
->
dInfo
.
isReplay
&&
mainGame
->
dInfo
.
player_type
<
7
)
{
if
(
!
mainGame
->
dInfo
.
isReplay
&&
mainGame
->
dInfo
.
player_type
<
7
)
{
mainGame
->
dField
.
tag_surrender
=
false
;
mainGame
->
dField
.
tag_teammate_surrender
=
false
;
mainGame
->
btnLeaveGame
->
setText
(
dataManager
.
GetSysString
(
1351
));
mainGame
->
btnLeaveGame
->
setVisible
(
true
);
}
...
...
gframe/event_handler.cpp
View file @
19c16c27
...
...
@@ -143,7 +143,8 @@ bool ClientField::OnEvent(const irr::SEvent& event) {
if
(
exit_on_return
)
mainGame
->
device
->
closeDevice
();
}
else
{
mainGame
->
PopupElement
(
mainGame
->
wSurrender
);
if
(
!
(
mainGame
->
dInfo
.
isTag
&&
mainGame
->
dField
.
tag_surrender
))
mainGame
->
PopupElement
(
mainGame
->
wSurrender
);
}
break
;
}
...
...
@@ -151,10 +152,12 @@ bool ClientField::OnEvent(const irr::SEvent& event) {
soundManager
.
PlaySoundEffect
(
SOUND_BUTTON
);
DuelClient
::
SendPacketToServer
(
CTOS_SURRENDER
);
mainGame
->
HideElement
(
mainGame
->
wSurrender
);
mainGame
->
dField
.
tag_surrender
=
true
;
break
;
}
case
BUTTON_SURRENDER_NO
:
{
soundManager
.
PlaySoundEffect
(
SOUND_BUTTON
);
mainGame
->
dField
.
tag_teammate_surrender
=
false
;
mainGame
->
HideElement
(
mainGame
->
wSurrender
);
break
;
}
...
...
gframe/network.h
View file @
19c16c27
...
...
@@ -200,6 +200,7 @@ public:
#define STOC_HS_PLAYER_ENTER 0x20
#define STOC_HS_PLAYER_CHANGE 0x21
#define STOC_HS_WATCH_CHANGE 0x22
#define STOC_TEAMMATE_SURRENDER 0x23
#ifdef YGOPRO_SERVER_MODE
#define STOC_FIELD_FINISH 0x30
#endif
...
...
gframe/tag_duel.cpp
View file @
19c16c27
...
...
@@ -14,6 +14,7 @@ TagDuel::TagDuel() {
for
(
int
i
=
0
;
i
<
4
;
++
i
)
{
players
[
i
]
=
0
;
ready
[
i
]
=
false
;
surrender
[
i
]
=
false
;
}
#ifdef YGOPRO_SERVER_MODE
cache_recorder
=
0
;
...
...
@@ -675,7 +676,33 @@ void TagDuel::DuelEndProc() {
#endif
}
void
TagDuel
::
Surrender
(
DuelPlayer
*
dp
)
{
return
;
if
(
dp
->
type
>
3
||
!
pduel
)
return
;
uint32
player
=
dp
->
type
;
if
(
surrender
[
player
])
return
;
static
const
uint32
teammatemap
[]
=
{
1
,
0
,
3
,
2
};
uint32
teammate
=
teammatemap
[
player
];
if
(
!
surrender
[
teammate
])
{
surrender
[
player
]
=
true
;
NetServer
::
SendPacketToPlayer
(
players
[
player
],
STOC_TEAMMATE_SURRENDER
);
NetServer
::
SendPacketToPlayer
(
players
[
teammate
],
STOC_TEAMMATE_SURRENDER
);
return
;
}
static
const
uint32
winplayermap
[]
=
{
1
,
1
,
0
,
0
};
unsigned
char
wbuf
[
3
];
wbuf
[
0
]
=
MSG_WIN
;
wbuf
[
1
]
=
winplayermap
[
player
];
wbuf
[
2
]
=
0
;
NetServer
::
SendBufferToPlayer
(
players
[
0
],
STOC_GAME_MSG
,
wbuf
,
3
);
NetServer
::
ReSendToPlayer
(
players
[
1
]);
NetServer
::
ReSendToPlayer
(
players
[
2
]);
NetServer
::
ReSendToPlayer
(
players
[
3
]);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
EndDuel
();
DuelEndProc
();
event_del
(
etimer
);
}
int
TagDuel
::
Analyze
(
unsigned
char
*
msgbuffer
,
unsigned
int
len
)
{
unsigned
char
*
offset
,
*
pbufw
,
*
pbuf
=
msgbuffer
;
...
...
@@ -1120,6 +1147,9 @@ int TagDuel::Analyze(unsigned char* msgbuffer, unsigned int len) {
}
}
turn_count
++
;
for
(
int
i
=
0
;
i
<
4
;
++
i
)
{
surrender
[
i
]
=
false
;
}
break
;
}
case
MSG_NEW_PHASE
:
{
...
...
gframe/tag_duel.h
View file @
19c16c27
...
...
@@ -68,6 +68,7 @@ protected:
int
phase
;
#endif
bool
ready
[
4
];
bool
surrender
[
4
];
Deck
pdeck
[
4
];
int
deck_error
[
4
];
unsigned
char
hand_result
[
2
];
...
...
strings.conf
View file @
19c16c27
...
...
@@ -404,6 +404,7 @@
!
system
1352
主要信息:
!
system
1353
播放起始于回合:
!
system
1354
开局默认显示所有时点
!
system
1355
投降(
1
/
2
)
!
system
1356
此操作将放弃对当前卡组的修改,是否继续?
!
system
1357
不提示保留对卡组的修改
!
system
1358
键入关键字后自动进行搜索
...
...
@@ -664,7 +665,7 @@
!
setname
0
x2
次世代 ジェネクス
!
setname
0
x1002
真次世代 レアル·ジェネクス
#!setname 0x2002 盟军·次世代 A・ジェネクス
#setname 0x3 N/A
!
setname
0
x3
魅惑的女王 魅惑の女王
!
setname
0
x4
亚马逊 アマゾネス
!
setname
0
x5
秘仪之力 アルカナフォース
!
setname
0
x6
暗黑界 暗黒界
...
...
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