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
REIKAI
ygopro
Commits
dde4db12
Commit
dde4db12
authored
May 01, 2020
by
mercury233
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'master' of
https://github.com/Fluorohydride/ygopro
into server
parents
b33bd44e
2acbb946
Changes
11
Hide whitespace changes
Inline
Side-by-side
Showing
11 changed files
with
87 additions
and
15 deletions
+87
-15
gframe/deck_con.cpp
gframe/deck_con.cpp
+6
-0
gframe/duelclient.cpp
gframe/duelclient.cpp
+20
-0
gframe/game.cpp
gframe/game.cpp
+15
-13
gframe/game.h
gframe/game.h
+7
-0
gframe/menu_handler.cpp
gframe/menu_handler.cpp
+2
-0
gframe/network.h
gframe/network.h
+1
-0
gframe/single_duel.cpp
gframe/single_duel.cpp
+14
-0
gframe/tag_duel.cpp
gframe/tag_duel.cpp
+16
-0
ocgcore
ocgcore
+1
-1
script
script
+1
-1
strings.conf
strings.conf
+4
-0
No files found.
gframe/deck_con.cpp
View file @
dde4db12
...
...
@@ -343,6 +343,7 @@ bool DeckBuilder::OnEvent(const irr::SEvent& event) {
}
case
irr
:
:
gui
::
EGET_EDITBOX_ENTER
:
{
switch
(
id
)
{
case
EDITBOX_INPUTS
:
case
EDITBOX_KEYWORD
:
{
StartFilter
();
break
;
...
...
@@ -471,6 +472,7 @@ bool DeckBuilder::OnEvent(const irr::SEvent& event) {
break
;
}
}
mainGame
->
env
->
setFocus
(
0
);
InstantSearch
();
break
;
}
...
...
@@ -488,13 +490,16 @@ bool DeckBuilder::OnEvent(const irr::SEvent& event) {
mainGame
->
ebDefense
->
setEnabled
(
true
);
}
}
mainGame
->
env
->
setFocus
(
0
);
InstantSearch
();
break
;
}
case
COMBOBOX_ATTRIBUTE
:
case
COMBOBOX_RACE
:
case
COMBOBOX_LIMIT
:
mainGame
->
env
->
setFocus
(
0
);
InstantSearch
();
break
;
}
}
default:
break
;
...
...
@@ -1069,6 +1074,7 @@ bool DeckBuilder::CardNameContains(const wchar_t *haystack, const wchar_t *needl
return
true
;
}
}
else
{
i
-=
j
;
j
=
0
;
}
i
++
;
...
...
gframe/duelclient.cpp
View file @
dde4db12
...
...
@@ -408,6 +408,19 @@ void DuelClient::HandleSTOCPacketLan(char* data, unsigned int len) {
mainGame
->
gMutex
.
unlock
();
break
;
}
case
STOC_DECK_COUNT
:
{
mainGame
->
gMutex
.
lock
();
int
deckc
=
BufferIO
::
ReadInt16
(
pdata
);
int
extrac
=
BufferIO
::
ReadInt16
(
pdata
);
int
sidec
=
BufferIO
::
ReadInt16
(
pdata
);
mainGame
->
dField
.
Initial
(
0
,
deckc
,
extrac
);
deckc
=
BufferIO
::
ReadInt16
(
pdata
);
extrac
=
BufferIO
::
ReadInt16
(
pdata
);
sidec
=
BufferIO
::
ReadInt16
(
pdata
);
mainGame
->
dField
.
Initial
(
1
,
deckc
,
extrac
);
mainGame
->
gMutex
.
unlock
();
break
;
}
case
STOC_JOIN_GAME
:
{
STOC_JoinGame
*
pkt
=
(
STOC_JoinGame
*
)
pdata
;
std
::
wstring
str
;
...
...
@@ -1164,6 +1177,7 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) {
mainGame
->
WaitFrameSignal
(
40
);
mainGame
->
showcard
=
0
;
mainGame
->
gMutex
.
lock
();
mainGame
->
dField
.
Clear
();
int
playertype
=
BufferIO
::
ReadInt8
(
pbuf
);
mainGame
->
dInfo
.
isFirst
=
(
playertype
&
0xf
)
?
false
:
true
;
if
(
playertype
&
0xf0
)
...
...
@@ -1462,6 +1476,7 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) {
int
c
,
l
,
s
,
ss
;
unsigned
int
code
;
bool
panelmode
=
false
;
int
handcount
=
0
;
bool
select_ready
=
mainGame
->
dField
.
select_min
==
0
;
mainGame
->
dField
.
select_ready
=
select_ready
;
ClientCard
*
pcard
;
...
...
@@ -1483,6 +1498,11 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) {
pcard
->
is_selected
=
false
;
if
(
l
&
0xf1
)
panelmode
=
true
;
if
(
l
&
LOCATION_HAND
)
{
handcount
++
;
if
(
handcount
>=
10
)
panelmode
=
true
;
}
}
std
::
sort
(
mainGame
->
dField
.
selectable_cards
.
begin
(),
mainGame
->
dField
.
selectable_cards
.
end
(),
ClientCard
::
client_card_sort
);
if
(
select_hint
)
...
...
gframe/game.cpp
View file @
dde4db12
...
...
@@ -16,7 +16,7 @@
#include "single_mode.h"
#endif //YGOPRO_SERVER_MODE
const
unsigned
short
PRO_VERSION
=
0x135
0
;
const
unsigned
short
PRO_VERSION
=
0x135
1
;
namespace
ygo
{
...
...
@@ -484,10 +484,10 @@ bool Game::Initialize() {
wANNumber
->
setVisible
(
false
);
cbANNumber
=
env
->
addComboBox
(
rect
<
s32
>
(
40
,
30
,
190
,
50
),
wANNumber
,
-
1
);
cbANNumber
->
setTextAlignment
(
irr
::
gui
::
EGUIA_CENTER
,
irr
::
gui
::
EGUIA_CENTER
);
for
(
int
i
=
0
;
i
<
12
;
++
i
)
{
myswprintf
(
strbuf
,
L"%d"
,
i
+
1
);
btnANNumber
[
i
]
=
env
->
addButton
(
rect
<
s32
>
(
20
+
50
*
(
i
%
4
),
40
+
50
*
(
i
/
4
),
60
+
50
*
(
i
%
4
),
80
+
50
*
(
i
/
4
)),
wANNumber
,
BUTTON_ANNUMBER_1
+
i
,
strbuf
);
btnANNumber
[
i
]
->
setIsPushButton
(
true
);
for
(
int
i
=
0
;
i
<
12
;
++
i
)
{
myswprintf
(
strbuf
,
L"%d"
,
i
+
1
);
btnANNumber
[
i
]
=
env
->
addButton
(
rect
<
s32
>
(
20
+
50
*
(
i
%
4
),
40
+
50
*
(
i
/
4
),
60
+
50
*
(
i
%
4
),
80
+
50
*
(
i
/
4
)),
wANNumber
,
BUTTON_ANNUMBER_1
+
i
,
strbuf
);
btnANNumber
[
i
]
->
setIsPushButton
(
true
);
}
btnANNumberOK
=
env
->
addButton
(
rect
<
s32
>
(
80
,
60
,
150
,
85
),
wANNumber
,
BUTTON_ANNUMBER_OK
,
dataManager
.
GetSysString
(
1211
));
//announce card
...
...
@@ -607,16 +607,16 @@ bool Game::Initialize() {
for
(
int
filter
=
0x1
;
filter
!=
0x2000000
;
filter
<<=
1
)
cbRace
->
addItem
(
dataManager
.
FormatRace
(
filter
),
filter
);
stAttack
=
env
->
addStaticText
(
dataManager
.
GetSysString
(
1322
),
rect
<
s32
>
(
205
,
22
+
50
/
6
,
280
,
42
+
50
/
6
),
false
,
false
,
wFilter
);
ebAttack
=
env
->
addEditBox
(
L""
,
rect
<
s32
>
(
260
,
20
+
50
/
6
,
340
,
40
+
50
/
6
),
true
,
wFilter
);
ebAttack
=
env
->
addEditBox
(
L""
,
rect
<
s32
>
(
260
,
20
+
50
/
6
,
340
,
40
+
50
/
6
),
true
,
wFilter
,
EDITBOX_INPUTS
);
ebAttack
->
setTextAlignment
(
irr
::
gui
::
EGUIA_CENTER
,
irr
::
gui
::
EGUIA_CENTER
);
stDefense
=
env
->
addStaticText
(
dataManager
.
GetSysString
(
1323
),
rect
<
s32
>
(
205
,
42
+
75
/
6
,
280
,
62
+
75
/
6
),
false
,
false
,
wFilter
);
ebDefense
=
env
->
addEditBox
(
L""
,
rect
<
s32
>
(
260
,
40
+
75
/
6
,
340
,
60
+
75
/
6
),
true
,
wFilter
);
ebDefense
=
env
->
addEditBox
(
L""
,
rect
<
s32
>
(
260
,
40
+
75
/
6
,
340
,
60
+
75
/
6
),
true
,
wFilter
,
EDITBOX_INPUTS
);
ebDefense
->
setTextAlignment
(
irr
::
gui
::
EGUIA_CENTER
,
irr
::
gui
::
EGUIA_CENTER
);
stStar
=
env
->
addStaticText
(
dataManager
.
GetSysString
(
1324
),
rect
<
s32
>
(
10
,
62
+
100
/
6
,
80
,
82
+
100
/
6
),
false
,
false
,
wFilter
);
ebStar
=
env
->
addEditBox
(
L""
,
rect
<
s32
>
(
60
,
60
+
100
/
6
,
100
,
80
+
100
/
6
),
true
,
wFilter
);
ebStar
=
env
->
addEditBox
(
L""
,
rect
<
s32
>
(
60
,
60
+
100
/
6
,
100
,
80
+
100
/
6
),
true
,
wFilter
,
EDITBOX_INPUTS
);
ebStar
->
setTextAlignment
(
irr
::
gui
::
EGUIA_CENTER
,
irr
::
gui
::
EGUIA_CENTER
);
stScale
=
env
->
addStaticText
(
dataManager
.
GetSysString
(
1336
),
rect
<
s32
>
(
101
,
62
+
100
/
6
,
150
,
82
+
100
/
6
),
false
,
false
,
wFilter
);
ebScale
=
env
->
addEditBox
(
L""
,
rect
<
s32
>
(
150
,
60
+
100
/
6
,
190
,
80
+
100
/
6
),
true
,
wFilter
);
ebScale
=
env
->
addEditBox
(
L""
,
rect
<
s32
>
(
150
,
60
+
100
/
6
,
190
,
80
+
100
/
6
),
true
,
wFilter
,
EDITBOX_INPUTS
);
ebScale
->
setTextAlignment
(
irr
::
gui
::
EGUIA_CENTER
,
irr
::
gui
::
EGUIA_CENTER
);
stSearch
=
env
->
addStaticText
(
dataManager
.
GetSysString
(
1325
),
rect
<
s32
>
(
205
,
62
+
100
/
6
,
280
,
82
+
100
/
6
),
false
,
false
,
wFilter
);
ebCardName
=
env
->
addEditBox
(
L""
,
rect
<
s32
>
(
260
,
60
+
100
/
6
,
390
,
80
+
100
/
6
),
true
,
wFilter
,
EDITBOX_KEYWORD
);
...
...
@@ -932,7 +932,9 @@ void Game::SetStaticText(irr::gui::IGUIStaticText* pControl, u32 cWidth, irr::gu
wchar_t
c
=
text
[
i
];
u32
w
=
font
->
getCharDimension
(
c
).
Width
+
font
->
getKerningWidth
(
c
,
prev
);
prev
=
c
;
if
(
text
[
i
]
==
L'\n'
)
{
if
(
text
[
i
]
==
L'\r'
)
{
continue
;
}
else
if
(
text
[
i
]
==
L'\n'
)
{
dataManager
.
strBuffer
[
pbuffer
++
]
=
L'\n'
;
_width
=
0
;
_height
++
;
...
...
@@ -965,15 +967,15 @@ void Game::LoadExpansions() {
#ifdef YGOPRO_SERVER_MODE
});
#else
if
(
!
isdir
&&
wcsrchr
(
name
,
'.'
)
&&
!
mywcsncasecmp
(
wcsrchr
(
name
,
'.'
),
L".zip"
,
4
))
{
if
(
!
isdir
&&
wcsrchr
(
name
,
'.'
)
&&
(
!
mywcsncasecmp
(
wcsrchr
(
name
,
'.'
),
L".zip"
,
4
)
||
!
mywcsncasecmp
(
wcsrchr
(
name
,
'.'
),
L".ypk"
,
4
)
))
{
wchar_t
fpath
[
1024
];
myswprintf
(
fpath
,
L"./expansions/%ls"
,
name
);
#ifdef _WIN32
dataManager
.
FileSystem
->
addFileArchive
(
fpath
,
true
,
false
);
dataManager
.
FileSystem
->
addFileArchive
(
fpath
,
true
,
false
,
EFAT_ZIP
);
#else
char
upath
[
1024
];
BufferIO
::
EncodeUTF8
(
fpath
,
upath
);
dataManager
.
FileSystem
->
addFileArchive
(
upath
,
true
,
false
);
dataManager
.
FileSystem
->
addFileArchive
(
upath
,
true
,
false
,
EFAT_ZIP
);
#endif
}
});
...
...
gframe/game.h
View file @
dde4db12
...
...
@@ -171,6 +171,12 @@ public:
return
focus
&&
focus
->
hasType
(
type
);
}
void
TrimText
(
irr
::
gui
::
IGUIElement
*
editbox
)
const
{
irr
::
core
::
stringw
text
(
editbox
->
getText
());
text
.
trim
();
editbox
->
setText
(
text
.
c_str
());
}
void
OnResize
();
recti
Resize
(
s32
x
,
s32
y
,
s32
x2
,
s32
y2
);
recti
Resize
(
s32
x
,
s32
y
,
s32
x2
,
s32
y2
,
s32
dx
,
s32
dy
,
s32
dx2
,
s32
dy2
);
...
...
@@ -718,6 +724,7 @@ extern HostInfo game_info;
#define BUTTON_MARKS_FILTER 322
#define BUTTON_MARKERS_OK 323
#define COMBOBOX_SORTTYPE 324
#define EDITBOX_INPUTS 325
#define BUTTON_CLEAR_LOG 350
#define LISTBOX_LOG 351
#define SCROLL_CARDTEXT 352
...
...
gframe/menu_handler.cpp
View file @
dde4db12
...
...
@@ -62,6 +62,8 @@ bool MenuHandler::OnEvent(const irr::SEvent& event) {
}
case
BUTTON_JOIN_HOST
:
{
bot_mode
=
false
;
mainGame
->
TrimText
(
mainGame
->
ebJoinHost
);
mainGame
->
TrimText
(
mainGame
->
ebJoinPort
);
char
ip
[
20
];
const
wchar_t
*
pstr
=
mainGame
->
ebJoinHost
->
getText
();
BufferIO
::
CopyWStr
(
pstr
,
ip
,
16
);
...
...
gframe/network.h
View file @
dde4db12
...
...
@@ -191,6 +191,7 @@ public:
#define STOC_TP_RESULT 0x6
#define STOC_CHANGE_SIDE 0x7
#define STOC_WAITING_SIDE 0x8
#define STOC_DECK_COUNT 0x9
#define STOC_CREATE_GAME 0x11
#define STOC_JOIN_GAME 0x12
#define STOC_TYPE_CHANGE 0x13
...
...
gframe/single_duel.cpp
View file @
dde4db12
...
...
@@ -445,6 +445,20 @@ void SingleDuel::StartDuel(DuelPlayer* dp) {
replay_recorder
->
state
=
CTOS_LEAVE_GAME
;
NetServer
::
ReSendToPlayers
(
cache_recorder
,
replay_recorder
);
#endif
char
deckbuff
[
12
];
char
*
pbuf
=
deckbuff
;
BufferIO
::
WriteInt16
(
pbuf
,
pdeck
[
0
].
main
.
size
());
BufferIO
::
WriteInt16
(
pbuf
,
pdeck
[
0
].
extra
.
size
());
BufferIO
::
WriteInt16
(
pbuf
,
pdeck
[
0
].
side
.
size
());
BufferIO
::
WriteInt16
(
pbuf
,
pdeck
[
1
].
main
.
size
());
BufferIO
::
WriteInt16
(
pbuf
,
pdeck
[
1
].
extra
.
size
());
BufferIO
::
WriteInt16
(
pbuf
,
pdeck
[
1
].
side
.
size
());
NetServer
::
SendBufferToPlayer
(
players
[
0
],
STOC_DECK_COUNT
,
deckbuff
,
12
);
char
tempbuff
[
6
];
memcpy
(
tempbuff
,
deckbuff
,
6
);
memcpy
(
deckbuff
,
deckbuff
+
6
,
6
);
memcpy
(
deckbuff
+
6
,
tempbuff
,
6
);
NetServer
::
SendBufferToPlayer
(
players
[
1
],
STOC_DECK_COUNT
,
deckbuff
,
12
);
NetServer
::
SendPacketToPlayer
(
players
[
0
],
STOC_SELECT_HAND
);
NetServer
::
ReSendToPlayer
(
players
[
1
]);
hand_result
[
0
]
=
0
;
...
...
gframe/tag_duel.cpp
View file @
dde4db12
...
...
@@ -405,6 +405,22 @@ void TagDuel::StartDuel(DuelPlayer* dp) {
replay_recorder
->
state
=
CTOS_LEAVE_GAME
;
NetServer
::
ReSendToPlayers
(
cache_recorder
,
replay_recorder
);
#endif
char
deckbuff
[
12
];
char
*
pbuf
=
deckbuff
;
BufferIO
::
WriteInt16
(
pbuf
,
pdeck
[
0
].
main
.
size
());
BufferIO
::
WriteInt16
(
pbuf
,
pdeck
[
0
].
extra
.
size
());
BufferIO
::
WriteInt16
(
pbuf
,
pdeck
[
0
].
side
.
size
());
BufferIO
::
WriteInt16
(
pbuf
,
pdeck
[
2
].
main
.
size
());
BufferIO
::
WriteInt16
(
pbuf
,
pdeck
[
2
].
extra
.
size
());
BufferIO
::
WriteInt16
(
pbuf
,
pdeck
[
2
].
side
.
size
());
NetServer
::
SendBufferToPlayer
(
players
[
0
],
STOC_DECK_COUNT
,
deckbuff
,
12
);
NetServer
::
ReSendToPlayer
(
players
[
1
]);
char
tempbuff
[
6
];
memcpy
(
tempbuff
,
deckbuff
,
6
);
memcpy
(
deckbuff
,
deckbuff
+
6
,
6
);
memcpy
(
deckbuff
+
6
,
tempbuff
,
6
);
NetServer
::
SendBufferToPlayer
(
players
[
2
],
STOC_DECK_COUNT
,
deckbuff
,
12
);
NetServer
::
ReSendToPlayer
(
players
[
3
]);
NetServer
::
SendPacketToPlayer
(
players
[
0
],
STOC_SELECT_HAND
);
NetServer
::
ReSendToPlayer
(
players
[
2
]);
hand_result
[
0
]
=
0
;
...
...
ocgcore
@
80f1ced5
Subproject commit
4dbcb9e68d5f84677f55377977d2c40322860b6c
Subproject commit
80f1ced5a185d25d6a421f71a28caacc04e564f2
script
@
216c4754
Subproject commit
764a97f328856a495510c1707c2faee809b13cf8
Subproject commit
216c4754fb203fe2f598fee02ace05e54f7cea55
strings.conf
View file @
dde4db12
...
...
@@ -1008,3 +1008,7 @@
!
setname
0
x2142
黄金国永生药 エルドリクシル
!
setname
0
x143
黄金乡 黄金郷
!
setname
0
x144
幻魔
!
setname
0
x145
教导 ドラグマ
!
setname
0
x146
童话动物 メルフィー
!
setname
0
x147
波波 ポータン
!
setname
0
x148
罗兰 ローラン
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