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
d18f6c10
Commit
d18f6c10
authored
Jun 29, 2019
by
mycard
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'server' of
https://github.com/purerosefallen/ygopro
parents
80865aca
cac6f09b
Changes
22
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
22 changed files
with
343 additions
and
116 deletions
+343
-116
.gitignore
.gitignore
+3
-0
README.md
README.md
+4
-1
cards.cdb
cards.cdb
+0
-0
gframe/CGUIImageButton.cpp
gframe/CGUIImageButton.cpp
+23
-0
gframe/CGUIImageButton.h
gframe/CGUIImageButton.h
+4
-0
gframe/data_manager.cpp
gframe/data_manager.cpp
+2
-2
gframe/duelclient.cpp
gframe/duelclient.cpp
+44
-33
gframe/event_handler.cpp
gframe/event_handler.cpp
+2
-0
gframe/game.cpp
gframe/game.cpp
+12
-14
gframe/netserver.cpp
gframe/netserver.cpp
+1
-1
gframe/network.h
gframe/network.h
+1
-1
gframe/single_duel.cpp
gframe/single_duel.cpp
+10
-6
gframe/single_duel.h
gframe/single_duel.h
+1
-1
gframe/single_mode.cpp
gframe/single_mode.cpp
+5
-7
gframe/tag_duel.cpp
gframe/tag_duel.cpp
+9
-1
gframe/tag_duel.h
gframe/tag_duel.h
+1
-1
lflist.conf
lflist.conf
+212
-39
ocgcore
ocgcore
+1
-1
premake/gframe/ygopro.rc
premake/gframe/ygopro.rc
+4
-4
script
script
+1
-1
strings.conf
strings.conf
+2
-2
system.conf
system.conf
+1
-1
No files found.
.gitignore
View file @
d18f6c10
...
@@ -56,6 +56,9 @@
...
@@ -56,6 +56,9 @@
/sound/*.wav
/sound/*.wav
/sound/custom
/sound/custom
/sound/BGM
/sound/BGM
/sound/README.md
/sound/LICENSE
/sound/,*
/update
/update
/update*
/update*
/locales
/locales
...
...
README.md
View file @
d18f6c10
...
@@ -27,7 +27,7 @@
...
@@ -27,7 +27,7 @@
### 运行
### 运行
*
使用
[
ygopro-server
](
https://github.com/mycard/ygopro-server
)
运行
*
使用
[
ygopro-server
](
https://github.com/mycard/ygopro-server
)
运行
*
手动运行的参数是
*
手动运行的参数是
*
./ygopro 0 0 0 1 F F F 8000 5 1 180 0
*
`./ygopro 0 0 0 1 F F F 8000 5 1 180 0`
*
端口(0为随机)
*
端口(0为随机)
*
禁卡表编号
*
禁卡表编号
*
卡片允许
*
卡片允许
...
@@ -40,6 +40,9 @@
...
@@ -40,6 +40,9 @@
*
每回合抽卡
*
每回合抽卡
*
每回合时间
*
每回合时间
*
录像保存模式
*
录像保存模式
*
特殊选项,按位选择
*
0x1: 保存录像到
`./replay`
文件夹
*
0x2: 不向观战者发送录像
### 特殊编译参数
### 特殊编译参数
执行
`premake5 gmake`
之前,可以通过设置一些环境变量,来改变一些编译参数。
执行
`premake5 gmake`
之前,可以通过设置一些环境变量,来改变一些编译参数。
...
...
cards.cdb
View file @
d18f6c10
No preview for this file type
gframe/CGUIImageButton.cpp
View file @
d18f6c10
...
@@ -97,8 +97,10 @@ void Draw2DImageQuad(video::IVideoDriver* driver, video::ITexture* image, core::
...
@@ -97,8 +97,10 @@ void Draw2DImageQuad(video::IVideoDriver* driver, video::ITexture* image, core::
CGUIImageButton
::
CGUIImageButton
(
IGUIEnvironment
*
environment
,
IGUIElement
*
parent
,
s32
id
,
core
::
rect
<
s32
>
rectangle
)
CGUIImageButton
::
CGUIImageButton
(
IGUIEnvironment
*
environment
,
IGUIElement
*
parent
,
s32
id
,
core
::
rect
<
s32
>
rectangle
)
:
CGUIButton
(
environment
,
parent
,
id
,
rectangle
)
{
:
CGUIButton
(
environment
,
parent
,
id
,
rectangle
)
{
isDrawImage
=
true
;
isDrawImage
=
true
;
isFixedSize
=
false
;
imageRotation
=
0.0
f
;
imageRotation
=
0.0
f
;
imageScale
=
core
::
vector2df
(
1.0
f
,
1.0
f
);
imageScale
=
core
::
vector2df
(
1.0
f
,
1.0
f
);
imageSize
=
core
::
dimension2di
(
rectangle
.
getWidth
(),
rectangle
.
getHeight
());
}
}
CGUIImageButton
*
CGUIImageButton
::
addImageButton
(
IGUIEnvironment
*
env
,
const
core
::
rect
<
s32
>&
rectangle
,
IGUIElement
*
parent
,
s32
id
)
{
CGUIImageButton
*
CGUIImageButton
::
addImageButton
(
IGUIEnvironment
*
env
,
const
core
::
rect
<
s32
>&
rectangle
,
IGUIElement
*
parent
,
s32
id
)
{
CGUIImageButton
*
button
=
new
CGUIImageButton
(
env
,
parent
?
parent
:
0
,
id
,
rectangle
);
CGUIImageButton
*
button
=
new
CGUIImageButton
(
env
,
parent
?
parent
:
0
,
id
,
rectangle
);
...
@@ -129,6 +131,23 @@ void CGUIImageButton::draw() {
...
@@ -129,6 +131,23 @@ void CGUIImageButton::draw() {
irr
::
gui
::
Draw2DImageRotation
(
driver
,
Image
,
ImageRect
,
pos
,
center
,
imageRotation
,
imageScale
);
irr
::
gui
::
Draw2DImageRotation
(
driver
,
Image
,
ImageRect
,
pos
,
center
,
imageRotation
,
imageScale
);
IGUIElement
::
draw
();
IGUIElement
::
draw
();
}
}
void
CGUIImageButton
::
setImage
(
video
::
ITexture
*
image
)
{
if
(
image
)
image
->
grab
();
if
(
Image
)
Image
->
drop
();
Image
=
image
;
if
(
image
)
{
ImageRect
=
core
::
rect
<
s32
>
(
core
::
position2d
<
s32
>
(
0
,
0
),
image
->
getOriginalSize
());
if
(
isFixedSize
)
imageScale
=
core
::
vector2df
((
irr
::
f32
)
imageSize
.
Width
/
image
->
getSize
().
Width
,
(
irr
::
f32
)
imageSize
.
Height
/
image
->
getSize
().
Height
);
}
if
(
!
PressedImage
)
setPressedImage
(
Image
);
}
void
CGUIImageButton
::
setDrawImage
(
bool
b
)
{
void
CGUIImageButton
::
setDrawImage
(
bool
b
)
{
isDrawImage
=
b
;
isDrawImage
=
b
;
}
}
...
@@ -138,6 +157,10 @@ void CGUIImageButton::setImageRotation(f32 r) {
...
@@ -138,6 +157,10 @@ void CGUIImageButton::setImageRotation(f32 r) {
void
CGUIImageButton
::
setImageScale
(
core
::
vector2df
s
)
{
void
CGUIImageButton
::
setImageScale
(
core
::
vector2df
s
)
{
imageScale
=
s
;
imageScale
=
s
;
}
}
void
CGUIImageButton
::
setImageSize
(
core
::
dimension2di
s
)
{
isFixedSize
=
true
;
imageSize
=
s
;
}
IGUIFont
*
CGUIImageButton
::
getOverrideFont
(
void
)
const
IGUIFont
*
CGUIImageButton
::
getOverrideFont
(
void
)
const
{
{
...
...
gframe/CGUIImageButton.h
View file @
d18f6c10
...
@@ -17,16 +17,20 @@ public:
...
@@ -17,16 +17,20 @@ public:
CGUIImageButton
(
IGUIEnvironment
*
environment
,
IGUIElement
*
parent
,
s32
id
,
core
::
rect
<
s32
>
rectangle
);
CGUIImageButton
(
IGUIEnvironment
*
environment
,
IGUIElement
*
parent
,
s32
id
,
core
::
rect
<
s32
>
rectangle
);
static
CGUIImageButton
*
addImageButton
(
IGUIEnvironment
*
env
,
const
core
::
rect
<
s32
>&
rectangle
,
IGUIElement
*
parent
,
s32
id
);
static
CGUIImageButton
*
addImageButton
(
IGUIEnvironment
*
env
,
const
core
::
rect
<
s32
>&
rectangle
,
IGUIElement
*
parent
,
s32
id
);
virtual
void
draw
();
virtual
void
draw
();
virtual
void
setImage
(
video
::
ITexture
*
image
=
0
);
virtual
void
setDrawImage
(
bool
b
);
virtual
void
setDrawImage
(
bool
b
);
virtual
void
setImageRotation
(
f32
r
);
virtual
void
setImageRotation
(
f32
r
);
virtual
void
setImageScale
(
core
::
vector2df
s
);
virtual
void
setImageScale
(
core
::
vector2df
s
);
virtual
void
setImageSize
(
core
::
dimension2di
s
);
virtual
IGUIFont
*
getOverrideFont
(
void
)
const
;
virtual
IGUIFont
*
getOverrideFont
(
void
)
const
;
virtual
IGUIFont
*
getActiveFont
()
const
;
virtual
IGUIFont
*
getActiveFont
()
const
;
private:
private:
bool
isDrawImage
;
bool
isDrawImage
;
bool
isFixedSize
;
f32
imageRotation
;
f32
imageRotation
;
core
::
vector2df
imageScale
;
core
::
vector2df
imageScale
;
core
::
dimension2di
imageSize
;
};
};
}
}
...
...
gframe/data_manager.cpp
View file @
d18f6c10
...
@@ -260,8 +260,8 @@ const wchar_t* DataManager::GetSetName(int code) {
...
@@ -260,8 +260,8 @@ const wchar_t* DataManager::GetSetName(int code) {
}
}
unsigned
int
DataManager
::
GetSetCode
(
const
wchar_t
*
setname
)
{
unsigned
int
DataManager
::
GetSetCode
(
const
wchar_t
*
setname
)
{
for
(
auto
csit
=
_setnameStrings
.
begin
();
csit
!=
_setnameStrings
.
end
();
++
csit
)
{
for
(
auto
csit
=
_setnameStrings
.
begin
();
csit
!=
_setnameStrings
.
end
();
++
csit
)
{
auto
xpos
=
csit
->
second
.
find_first_of
(
L'|'
);
//setname|extra info
auto
xpos
=
csit
->
second
.
find_first_of
(
L'|'
);
//setname|
another setname or
extra info
if
(
csit
->
second
.
compare
(
0
,
xpos
,
setname
)
==
0
if
(
csit
->
second
.
compare
(
0
,
xpos
,
setname
)
==
0
||
csit
->
second
.
compare
(
xpos
+
1
,
csit
->
second
.
length
(),
setname
)
==
0
#ifndef YGOPRO_SERVER_MODE
#ifndef YGOPRO_SERVER_MODE
||
mainGame
->
CheckRegEx
(
csit
->
second
,
setname
,
true
)
||
mainGame
->
CheckRegEx
(
csit
->
second
,
setname
,
true
)
#endif
#endif
...
...
gframe/duelclient.cpp
View file @
d18f6c10
...
@@ -778,8 +778,11 @@ void DuelClient::HandleSTOCPacketLan(char* data, unsigned int len) {
...
@@ -778,8 +778,11 @@ void DuelClient::HandleSTOCPacketLan(char* data, unsigned int len) {
mainGame
->
btnChainWhenAvail
->
setVisible
(
false
);
mainGame
->
btnChainWhenAvail
->
setVisible
(
false
);
mainGame
->
btnCancelOrFinish
->
setVisible
(
false
);
mainGame
->
btnCancelOrFinish
->
setVisible
(
false
);
mainGame
->
btnShuffle
->
setVisible
(
false
);
mainGame
->
btnShuffle
->
setVisible
(
false
);
time_t
nowtime
=
time
(
NULL
);
char
*
prep
=
pdata
;
tm
*
localedtime
=
localtime
(
&
nowtime
);
Replay
new_replay
;
memcpy
(
&
new_replay
.
pheader
,
prep
,
sizeof
(
ReplayHeader
));
time_t
starttime
=
new_replay
.
pheader
.
seed
;
tm
*
localedtime
=
localtime
(
&
starttime
);
wchar_t
timetext
[
40
];
wchar_t
timetext
[
40
];
wcsftime
(
timetext
,
40
,
L"%Y-%m-%d %H-%M-%S"
,
localedtime
);
wcsftime
(
timetext
,
40
,
L"%Y-%m-%d %H-%M-%S"
,
localedtime
);
mainGame
->
ebRSName
->
setText
(
timetext
);
mainGame
->
ebRSName
->
setText
(
timetext
);
...
@@ -800,9 +803,6 @@ void DuelClient::HandleSTOCPacketLan(char* data, unsigned int len) {
...
@@ -800,9 +803,6 @@ void DuelClient::HandleSTOCPacketLan(char* data, unsigned int len) {
mainGame
->
WaitFrameSignal
(
30
);
mainGame
->
WaitFrameSignal
(
30
);
}
}
if
(
mainGame
->
actionParam
||
!
is_host
)
{
if
(
mainGame
->
actionParam
||
!
is_host
)
{
char
*
prep
=
pdata
;
Replay
new_replay
;
memcpy
(
&
new_replay
.
pheader
,
prep
,
sizeof
(
ReplayHeader
));
prep
+=
sizeof
(
ReplayHeader
);
prep
+=
sizeof
(
ReplayHeader
);
memcpy
(
new_replay
.
comp_data
,
prep
,
len
-
sizeof
(
ReplayHeader
)
-
1
);
memcpy
(
new_replay
.
comp_data
,
prep
,
len
-
sizeof
(
ReplayHeader
)
-
1
);
new_replay
.
comp_size
=
len
-
sizeof
(
ReplayHeader
)
-
1
;
new_replay
.
comp_size
=
len
-
sizeof
(
ReplayHeader
)
-
1
;
...
@@ -962,7 +962,7 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len, bool retry) {
...
@@ -962,7 +962,7 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len, bool retry) {
char
*
pbuf
=
msg
;
char
*
pbuf
=
msg
;
wchar_t
textBuffer
[
256
];
wchar_t
textBuffer
[
256
];
mainGame
->
dInfo
.
curMsg
=
BufferIO
::
ReadUInt8
(
pbuf
);
mainGame
->
dInfo
.
curMsg
=
BufferIO
::
ReadUInt8
(
pbuf
);
if
(
mainGame
->
dInfo
.
curMsg
!=
MSG_RETRY
&&
!
retry
)
{
if
(
mainGame
->
dInfo
.
curMsg
!=
MSG_RETRY
)
{
memcpy
(
last_successful_msg
,
msg
,
len
);
memcpy
(
last_successful_msg
,
msg
,
len
);
last_successful_msg_length
=
len
;
last_successful_msg_length
=
len
;
}
}
...
@@ -987,16 +987,26 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len, bool retry) {
...
@@ -987,16 +987,26 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len, bool retry) {
mainGame
->
dInfo
.
time_player
=
2
;
mainGame
->
dInfo
.
time_player
=
2
;
switch
(
mainGame
->
dInfo
.
curMsg
)
{
switch
(
mainGame
->
dInfo
.
curMsg
)
{
case
MSG_RETRY
:
{
case
MSG_RETRY
:
{
if
(
!
retry
&&
last_successful_msg_length
)
{
if
(
last_successful_msg_length
)
{
char
*
p
=
last_successful_msg
;
auto
last_msg
=
BufferIO
::
ReadUInt8
(
p
);
int
err_desc
=
1422
;
switch
(
last_msg
)
{
case
MSG_ANNOUNCE_CARD
:
case
MSG_ANNOUNCE_CARD_FILTER
:
err_desc
=
1421
;
//TODO: other cases
default:
break
;
}
mainGame
->
gMutex
.
Lock
();
mainGame
->
gMutex
.
Lock
();
mainGame
->
stMessage
->
setText
(
dataManager
.
GetDesc
(
1422
));
mainGame
->
stMessage
->
setText
(
dataManager
.
GetDesc
(
err_desc
));
mainGame
->
PopupElement
(
mainGame
->
wMessage
);
mainGame
->
PopupElement
(
mainGame
->
wMessage
);
mainGame
->
gMutex
.
Unlock
();
mainGame
->
gMutex
.
Unlock
();
mainGame
->
actionSignal
.
Reset
();
mainGame
->
actionSignal
.
Reset
();
mainGame
->
actionSignal
.
Wait
();
mainGame
->
actionSignal
.
Wait
();
select_hint
=
last_select_hint
;
select_hint
=
last_select_hint
;
ClientAnalyze
(
last_successful_msg
,
last_successful_msg_length
,
true
);
return
ClientAnalyze
(
last_successful_msg
,
last_successful_msg_length
);
break
;
}
}
mainGame
->
gMutex
.
Lock
();
mainGame
->
gMutex
.
Lock
();
mainGame
->
stMessage
->
setText
(
L"Error occurs."
);
mainGame
->
stMessage
->
setText
(
L"Error occurs."
);
...
@@ -1004,27 +1014,29 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len, bool retry) {
...
@@ -1004,27 +1014,29 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len, bool retry) {
mainGame
->
gMutex
.
Unlock
();
mainGame
->
gMutex
.
Unlock
();
mainGame
->
actionSignal
.
Reset
();
mainGame
->
actionSignal
.
Reset
();
mainGame
->
actionSignal
.
Wait
();
mainGame
->
actionSignal
.
Wait
();
mainGame
->
closeDoneSignal
.
Reset
();
if
(
!
mainGame
->
dInfo
.
isSingleMode
)
{
mainGame
->
closeSignal
.
Set
();
mainGame
->
closeDoneSignal
.
Reset
();
mainGame
->
closeDoneSignal
.
Wait
();
mainGame
->
closeSignal
.
Set
();
mainGame
->
gMutex
.
Lock
();
mainGame
->
closeDoneSignal
.
Wait
();
mainGame
->
dInfo
.
isStarted
=
false
;
mainGame
->
gMutex
.
Lock
();
mainGame
->
dInfo
.
isFinished
=
false
;
mainGame
->
dInfo
.
isStarted
=
false
;
mainGame
->
btnCreateHost
->
setEnabled
(
true
);
mainGame
->
dInfo
.
isFinished
=
false
;
mainGame
->
btnJoinHost
->
setEnabled
(
true
);
mainGame
->
btnCreateHost
->
setEnabled
(
true
);
mainGame
->
btnJoinCancel
->
setEnabled
(
true
);
mainGame
->
btnJoinHost
->
setEnabled
(
true
);
mainGame
->
btnStartBot
->
setEnabled
(
true
);
mainGame
->
btnJoinCancel
->
setEnabled
(
true
);
mainGame
->
btnBotCancel
->
setEnabled
(
true
);
mainGame
->
btnStartBot
->
setEnabled
(
true
);
mainGame
->
stTip
->
setVisible
(
false
);
mainGame
->
btnBotCancel
->
setEnabled
(
true
);
mainGame
->
device
->
setEventReceiver
(
&
mainGame
->
menuHandler
);
mainGame
->
stTip
->
setVisible
(
false
);
if
(
bot_mode
)
mainGame
->
device
->
setEventReceiver
(
&
mainGame
->
menuHandler
);
mainGame
->
ShowElement
(
mainGame
->
wSinglePlay
);
if
(
bot_mode
)
else
mainGame
->
ShowElement
(
mainGame
->
wSinglePlay
);
mainGame
->
ShowElement
(
mainGame
->
wLanWindow
);
else
mainGame
->
gMutex
.
Unlock
();
mainGame
->
ShowElement
(
mainGame
->
wLanWindow
);
event_base_loopbreak
(
client_base
);
mainGame
->
gMutex
.
Unlock
();
if
(
exit_on_return
)
event_base_loopbreak
(
client_base
);
mainGame
->
device
->
closeDevice
();
if
(
exit_on_return
)
mainGame
->
device
->
closeDevice
();
}
return
false
;
return
false
;
}
}
case
MSG_HINT
:
{
case
MSG_HINT
:
{
...
@@ -1242,8 +1254,7 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len, bool retry) {
...
@@ -1242,8 +1254,7 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len, bool retry) {
select_unselect_hint
=
0
;
select_unselect_hint
=
0
;
last_select_hint
=
0
;
last_select_hint
=
0
;
last_successful_msg_length
=
0
;
last_successful_msg_length
=
0
;
if
(
mainGame
->
dInfo
.
isReplaySwapped
)
if
(
mainGame
->
dInfo
.
isReplaySwapped
)
{
{
std
::
swap
(
mainGame
->
dInfo
.
hostname
,
mainGame
->
dInfo
.
clientname
);
std
::
swap
(
mainGame
->
dInfo
.
hostname
,
mainGame
->
dInfo
.
clientname
);
std
::
swap
(
mainGame
->
dInfo
.
hostname_tag
,
mainGame
->
dInfo
.
clientname_tag
);
std
::
swap
(
mainGame
->
dInfo
.
hostname_tag
,
mainGame
->
dInfo
.
clientname_tag
);
mainGame
->
dInfo
.
isReplaySwapped
=
false
;
mainGame
->
dInfo
.
isReplaySwapped
=
false
;
...
...
gframe/event_handler.cpp
View file @
d18f6c10
...
@@ -614,6 +614,7 @@ bool ClientField::OnEvent(const irr::SEvent& event) {
...
@@ -614,6 +614,7 @@ bool ClientField::OnEvent(const irr::SEvent& event) {
case
BUTTON_CARD_4
:
{
case
BUTTON_CARD_4
:
{
if
(
mainGame
->
dInfo
.
isReplay
)
if
(
mainGame
->
dInfo
.
isReplay
)
break
;
break
;
mainGame
->
stCardListTip
->
setVisible
(
false
);
switch
(
mainGame
->
dInfo
.
curMsg
)
{
switch
(
mainGame
->
dInfo
.
curMsg
)
{
case
MSG_SELECT_IDLECMD
:
case
MSG_SELECT_IDLECMD
:
case
MSG_SELECT_BATTLECMD
:
case
MSG_SELECT_BATTLECMD
:
...
@@ -759,6 +760,7 @@ bool ClientField::OnEvent(const irr::SEvent& event) {
...
@@ -759,6 +760,7 @@ bool ClientField::OnEvent(const irr::SEvent& event) {
break
;
break
;
}
}
case
BUTTON_CARD_SEL_OK
:
{
case
BUTTON_CARD_SEL_OK
:
{
mainGame
->
stCardListTip
->
setVisible
(
false
);
if
(
mainGame
->
dInfo
.
isReplay
)
{
if
(
mainGame
->
dInfo
.
isReplay
)
{
mainGame
->
HideElement
(
mainGame
->
wCardSelect
);
mainGame
->
HideElement
(
mainGame
->
wCardSelect
);
break
;
break
;
...
...
gframe/game.cpp
View file @
d18f6c10
...
@@ -18,8 +18,6 @@
...
@@ -18,8 +18,6 @@
#include <regex>
#include <regex>
#endif //YGOPRO_SERVER_MODE
#endif //YGOPRO_SERVER_MODE
#define KOISHI_VERNAME "Hameln"
unsigned
short
PRO_VERSION
=
0x134A
;
unsigned
short
PRO_VERSION
=
0x134A
;
namespace
ygo
{
namespace
ygo
{
...
@@ -155,7 +153,7 @@ bool Game::Initialize() {
...
@@ -155,7 +153,7 @@ bool Game::Initialize() {
SetWindowsIcon
();
SetWindowsIcon
();
//main menu
//main menu
wchar_t
strbuf
[
256
];
wchar_t
strbuf
[
256
];
myswprintf
(
strbuf
,
L"KoishiPro %X.0%X.%X
%s"
,
PRO_VERSION
>>
12
,
(
PRO_VERSION
>>
4
)
&
0xff
,
PRO_VERSION
&
0xf
,
KOISHI_VERNAME
);
myswprintf
(
strbuf
,
L"KoishiPro %X.0%X.%X
Saigetsu"
,
PRO_VERSION
>>
12
,
(
PRO_VERSION
>>
4
)
&
0xff
,
PRO_VERSION
&
0xf
);
wMainMenu
=
env
->
addWindow
(
rect
<
s32
>
(
370
,
200
,
650
,
415
),
false
,
strbuf
);
wMainMenu
=
env
->
addWindow
(
rect
<
s32
>
(
370
,
200
,
650
,
415
),
false
,
strbuf
);
wMainMenu
->
getCloseButton
()
->
setVisible
(
false
);
wMainMenu
->
getCloseButton
()
->
setVisible
(
false
);
btnLanMode
=
env
->
addButton
(
rect
<
s32
>
(
10
,
30
,
270
,
60
),
wMainMenu
,
BUTTON_LAN_MODE
,
dataManager
.
GetSysString
(
1200
));
btnLanMode
=
env
->
addButton
(
rect
<
s32
>
(
10
,
30
,
270
,
60
),
wMainMenu
,
BUTTON_LAN_MODE
,
dataManager
.
GetSysString
(
1200
));
...
@@ -488,15 +486,15 @@ bool Game::Initialize() {
...
@@ -488,15 +486,15 @@ bool Game::Initialize() {
wPosSelect
->
getCloseButton
()
->
setVisible
(
false
);
wPosSelect
->
getCloseButton
()
->
setVisible
(
false
);
wPosSelect
->
setVisible
(
false
);
wPosSelect
->
setVisible
(
false
);
btnPSAU
=
irr
::
gui
::
CGUIImageButton
::
addImageButton
(
env
,
rect
<
s32
>
(
10
,
45
,
150
,
185
),
wPosSelect
,
BUTTON_POS_AU
);
btnPSAU
=
irr
::
gui
::
CGUIImageButton
::
addImageButton
(
env
,
rect
<
s32
>
(
10
,
45
,
150
,
185
),
wPosSelect
,
BUTTON_POS_AU
);
btnPSAU
->
setImageS
cale
(
core
::
vector2df
(
0.5
,
0.5
));
btnPSAU
->
setImageS
ize
(
core
::
dimension2di
(
CARD_IMG_WIDTH
*
0.5
f
,
CARD_IMG_HEIGHT
*
0.5
f
));
btnPSAD
=
irr
::
gui
::
CGUIImageButton
::
addImageButton
(
env
,
rect
<
s32
>
(
155
,
45
,
295
,
185
),
wPosSelect
,
BUTTON_POS_AD
);
btnPSAD
=
irr
::
gui
::
CGUIImageButton
::
addImageButton
(
env
,
rect
<
s32
>
(
155
,
45
,
295
,
185
),
wPosSelect
,
BUTTON_POS_AD
);
btnPSAD
->
setImageS
cale
(
core
::
vector2df
(
0.5
,
0.5
));
btnPSAD
->
setImageS
ize
(
core
::
dimension2di
(
CARD_IMG_WIDTH
*
0.5
f
,
CARD_IMG_HEIGHT
*
0.5
f
));
btnPSAD
->
setImage
(
imageManager
.
tCover
[
2
]);
btnPSAD
->
setImage
(
imageManager
.
tCover
[
2
]);
btnPSDU
=
irr
::
gui
::
CGUIImageButton
::
addImageButton
(
env
,
rect
<
s32
>
(
300
,
45
,
440
,
185
),
wPosSelect
,
BUTTON_POS_DU
);
btnPSDU
=
irr
::
gui
::
CGUIImageButton
::
addImageButton
(
env
,
rect
<
s32
>
(
300
,
45
,
440
,
185
),
wPosSelect
,
BUTTON_POS_DU
);
btnPSDU
->
setImageS
cale
(
core
::
vector2df
(
0.5
,
0.5
));
btnPSDU
->
setImageS
ize
(
core
::
dimension2di
(
CARD_IMG_WIDTH
*
0.5
f
,
CARD_IMG_HEIGHT
*
0.5
f
));
btnPSDU
->
setImageRotation
(
270
);
btnPSDU
->
setImageRotation
(
270
);
btnPSDD
=
irr
::
gui
::
CGUIImageButton
::
addImageButton
(
env
,
rect
<
s32
>
(
445
,
45
,
585
,
185
),
wPosSelect
,
BUTTON_POS_DD
);
btnPSDD
=
irr
::
gui
::
CGUIImageButton
::
addImageButton
(
env
,
rect
<
s32
>
(
445
,
45
,
585
,
185
),
wPosSelect
,
BUTTON_POS_DD
);
btnPSDD
->
setImageS
cale
(
core
::
vector2df
(
0.5
,
0.5
));
btnPSDD
->
setImageS
ize
(
core
::
dimension2di
(
CARD_IMG_WIDTH
*
0.5
f
,
CARD_IMG_HEIGHT
*
0.5
f
));
btnPSDD
->
setImageRotation
(
270
);
btnPSDD
->
setImageRotation
(
270
);
btnPSDD
->
setImage
(
imageManager
.
tCover
[
2
]);
btnPSDD
->
setImage
(
imageManager
.
tCover
[
2
]);
//card select
//card select
...
@@ -508,7 +506,7 @@ bool Game::Initialize() {
...
@@ -508,7 +506,7 @@ bool Game::Initialize() {
stCardPos
[
i
]
->
setBackgroundColor
(
0xffffffff
);
stCardPos
[
i
]
->
setBackgroundColor
(
0xffffffff
);
stCardPos
[
i
]
->
setTextAlignment
(
irr
::
gui
::
EGUIA_CENTER
,
irr
::
gui
::
EGUIA_CENTER
);
stCardPos
[
i
]
->
setTextAlignment
(
irr
::
gui
::
EGUIA_CENTER
,
irr
::
gui
::
EGUIA_CENTER
);
btnCardSelect
[
i
]
=
irr
::
gui
::
CGUIImageButton
::
addImageButton
(
env
,
rect
<
s32
>
(
30
+
125
*
i
,
55
,
150
+
125
*
i
,
225
),
wCardSelect
,
BUTTON_CARD_0
+
i
);
btnCardSelect
[
i
]
=
irr
::
gui
::
CGUIImageButton
::
addImageButton
(
env
,
rect
<
s32
>
(
30
+
125
*
i
,
55
,
150
+
125
*
i
,
225
),
wCardSelect
,
BUTTON_CARD_0
+
i
);
btnCardSelect
[
i
]
->
setImageS
cale
(
core
::
vector2df
(
0.6
f
,
0.6
f
));
btnCardSelect
[
i
]
->
setImageS
ize
(
core
::
dimension2di
(
CARD_IMG_WIDTH
*
0.6
f
,
CARD_IMG_HEIGHT
*
0.6
f
));
}
}
scrCardList
=
env
->
addScrollBar
(
true
,
rect
<
s32
>
(
30
,
235
,
650
,
255
),
wCardSelect
,
SCROLL_CARD_SELECT
);
scrCardList
=
env
->
addScrollBar
(
true
,
rect
<
s32
>
(
30
,
235
,
650
,
255
),
wCardSelect
,
SCROLL_CARD_SELECT
);
btnSelectOK
=
env
->
addButton
(
rect
<
s32
>
(
300
,
265
,
380
,
290
),
wCardSelect
,
BUTTON_CARD_SEL_OK
,
dataManager
.
GetSysString
(
1211
));
btnSelectOK
=
env
->
addButton
(
rect
<
s32
>
(
300
,
265
,
380
,
290
),
wCardSelect
,
BUTTON_CARD_SEL_OK
,
dataManager
.
GetSysString
(
1211
));
...
@@ -521,7 +519,7 @@ bool Game::Initialize() {
...
@@ -521,7 +519,7 @@ bool Game::Initialize() {
stDisplayPos
[
i
]
->
setBackgroundColor
(
0xffffffff
);
stDisplayPos
[
i
]
->
setBackgroundColor
(
0xffffffff
);
stDisplayPos
[
i
]
->
setTextAlignment
(
irr
::
gui
::
EGUIA_CENTER
,
irr
::
gui
::
EGUIA_CENTER
);
stDisplayPos
[
i
]
->
setTextAlignment
(
irr
::
gui
::
EGUIA_CENTER
,
irr
::
gui
::
EGUIA_CENTER
);
btnCardDisplay
[
i
]
=
irr
::
gui
::
CGUIImageButton
::
addImageButton
(
env
,
rect
<
s32
>
(
30
+
125
*
i
,
55
,
150
+
125
*
i
,
225
),
wCardDisplay
,
BUTTON_DISPLAY_0
+
i
);
btnCardDisplay
[
i
]
=
irr
::
gui
::
CGUIImageButton
::
addImageButton
(
env
,
rect
<
s32
>
(
30
+
125
*
i
,
55
,
150
+
125
*
i
,
225
),
wCardDisplay
,
BUTTON_DISPLAY_0
+
i
);
btnCardDisplay
[
i
]
->
setImageS
cale
(
core
::
vector2df
(
0.6
f
,
0.6
f
));
btnCardDisplay
[
i
]
->
setImageS
ize
(
core
::
dimension2di
(
CARD_IMG_WIDTH
*
0.6
f
,
CARD_IMG_HEIGHT
*
0.6
f
));
}
}
scrDisplayList
=
env
->
addScrollBar
(
true
,
rect
<
s32
>
(
30
,
235
,
650
,
255
),
wCardDisplay
,
SCROLL_CARD_DISPLAY
);
scrDisplayList
=
env
->
addScrollBar
(
true
,
rect
<
s32
>
(
30
,
235
,
650
,
255
),
wCardDisplay
,
SCROLL_CARD_DISPLAY
);
btnDisplayOK
=
env
->
addButton
(
rect
<
s32
>
(
300
,
265
,
380
,
290
),
wCardDisplay
,
BUTTON_CARD_DISP_OK
,
dataManager
.
GetSysString
(
1211
));
btnDisplayOK
=
env
->
addButton
(
rect
<
s32
>
(
300
,
265
,
380
,
290
),
wCardDisplay
,
BUTTON_CARD_DISP_OK
,
dataManager
.
GetSysString
(
1211
));
...
@@ -533,13 +531,13 @@ bool Game::Initialize() {
...
@@ -533,13 +531,13 @@ bool Game::Initialize() {
cbANNumber
->
setTextAlignment
(
irr
::
gui
::
EGUIA_CENTER
,
irr
::
gui
::
EGUIA_CENTER
);
cbANNumber
->
setTextAlignment
(
irr
::
gui
::
EGUIA_CENTER
,
irr
::
gui
::
EGUIA_CENTER
);
btnANNumberOK
=
env
->
addButton
(
rect
<
s32
>
(
80
,
60
,
150
,
85
),
wANNumber
,
BUTTON_ANNUMBER_OK
,
dataManager
.
GetSysString
(
1211
));
btnANNumberOK
=
env
->
addButton
(
rect
<
s32
>
(
80
,
60
,
150
,
85
),
wANNumber
,
BUTTON_ANNUMBER_OK
,
dataManager
.
GetSysString
(
1211
));
//announce card
//announce card
wANCard
=
env
->
addWindow
(
rect
<
s32
>
(
5
60
,
170
,
770
,
37
0
),
false
,
L""
);
wANCard
=
env
->
addWindow
(
rect
<
s32
>
(
5
10
,
120
,
820
,
42
0
),
false
,
L""
);
wANCard
->
getCloseButton
()
->
setVisible
(
false
);
wANCard
->
getCloseButton
()
->
setVisible
(
false
);
wANCard
->
setVisible
(
false
);
wANCard
->
setVisible
(
false
);
ebANCard
=
env
->
addEditBox
(
L""
,
rect
<
s32
>
(
20
,
25
,
1
90
,
45
),
true
,
wANCard
,
EDITBOX_ANCARD
);
ebANCard
=
env
->
addEditBox
(
L""
,
rect
<
s32
>
(
20
,
25
,
2
90
,
45
),
true
,
wANCard
,
EDITBOX_ANCARD
);
ebANCard
->
setTextAlignment
(
irr
::
gui
::
EGUIA_CENTER
,
irr
::
gui
::
EGUIA_CENTER
);
ebANCard
->
setTextAlignment
(
irr
::
gui
::
EGUIA_CENTER
,
irr
::
gui
::
EGUIA_CENTER
);
lstANCard
=
env
->
addListBox
(
rect
<
s32
>
(
20
,
50
,
190
,
160
),
wANCard
,
LISTBOX_ANCARD
,
true
);
lstANCard
=
env
->
addListBox
(
rect
<
s32
>
(
20
,
50
,
290
,
265
),
wANCard
,
LISTBOX_ANCARD
,
true
);
btnANCardOK
=
env
->
addButton
(
rect
<
s32
>
(
60
,
165
,
150
,
190
),
wANCard
,
BUTTON_ANCARD_OK
,
dataManager
.
GetSysString
(
1211
));
btnANCardOK
=
env
->
addButton
(
rect
<
s32
>
(
110
,
270
,
200
,
295
),
wANCard
,
BUTTON_ANCARD_OK
,
dataManager
.
GetSysString
(
1211
));
//announce attribute
//announce attribute
wANAttribute
=
env
->
addWindow
(
rect
<
s32
>
(
500
,
200
,
830
,
285
),
false
,
dataManager
.
GetSysString
(
562
));
wANAttribute
=
env
->
addWindow
(
rect
<
s32
>
(
500
,
200
,
830
,
285
),
false
,
dataManager
.
GetSysString
(
562
));
wANAttribute
->
getCloseButton
()
->
setVisible
(
false
);
wANAttribute
->
getCloseButton
()
->
setVisible
(
false
);
...
@@ -2093,7 +2091,7 @@ void Game::OnResize() {
...
@@ -2093,7 +2091,7 @@ void Game::OnResize() {
wPosSelect
->
setRelativePosition
(
ResizeWin
(
340
,
200
,
935
,
410
));
wPosSelect
->
setRelativePosition
(
ResizeWin
(
340
,
200
,
935
,
410
));
wCardSelect
->
setRelativePosition
(
ResizeWin
(
320
,
100
,
1000
,
400
));
wCardSelect
->
setRelativePosition
(
ResizeWin
(
320
,
100
,
1000
,
400
));
wANNumber
->
setRelativePosition
(
ResizeWin
(
550
,
200
,
780
,
295
));
wANNumber
->
setRelativePosition
(
ResizeWin
(
550
,
200
,
780
,
295
));
wANCard
->
setRelativePosition
(
ResizeWin
(
5
60
,
170
,
770
,
37
0
));
wANCard
->
setRelativePosition
(
ResizeWin
(
5
10
,
120
,
820
,
42
0
));
wANAttribute
->
setRelativePosition
(
ResizeWin
(
500
,
200
,
830
,
285
));
wANAttribute
->
setRelativePosition
(
ResizeWin
(
500
,
200
,
830
,
285
));
wANRace
->
setRelativePosition
(
ResizeWin
(
480
,
200
,
850
,
410
));
wANRace
->
setRelativePosition
(
ResizeWin
(
480
,
200
,
850
,
410
));
wReplaySave
->
setRelativePosition
(
ResizeWin
(
510
,
200
,
820
,
320
));
wReplaySave
->
setRelativePosition
(
ResizeWin
(
510
,
200
,
820
,
320
));
...
...
gframe/netserver.cpp
View file @
d18f6c10
...
@@ -258,7 +258,7 @@ void NetServer::HandleCTOSPacket(DuelPlayer* dp, char* data, unsigned int len) {
...
@@ -258,7 +258,7 @@ void NetServer::HandleCTOSPacket(DuelPlayer* dp, char* data, unsigned int len) {
case
CTOS_UPDATE_DECK
:
{
case
CTOS_UPDATE_DECK
:
{
if
(
!
dp
->
game
)
if
(
!
dp
->
game
)
return
;
return
;
duel_mode
->
UpdateDeck
(
dp
,
pdata
);
duel_mode
->
UpdateDeck
(
dp
,
pdata
,
len
-
1
);
break
;
break
;
}
}
case
CTOS_HAND_RESULT
:
{
case
CTOS_HAND_RESULT
:
{
...
...
gframe/network.h
View file @
d18f6c10
...
@@ -123,7 +123,7 @@ public:
...
@@ -123,7 +123,7 @@ public:
virtual
void
ToObserver
(
DuelPlayer
*
dp
)
{}
virtual
void
ToObserver
(
DuelPlayer
*
dp
)
{}
virtual
void
PlayerReady
(
DuelPlayer
*
dp
,
bool
is_ready
)
{}
virtual
void
PlayerReady
(
DuelPlayer
*
dp
,
bool
is_ready
)
{}
virtual
void
PlayerKick
(
DuelPlayer
*
dp
,
unsigned
char
pos
)
{}
virtual
void
PlayerKick
(
DuelPlayer
*
dp
,
unsigned
char
pos
)
{}
virtual
void
UpdateDeck
(
DuelPlayer
*
dp
,
void
*
pdata
)
{}
virtual
void
UpdateDeck
(
DuelPlayer
*
dp
,
void
*
pdata
,
unsigned
int
len
)
{}
virtual
void
StartDuel
(
DuelPlayer
*
dp
)
{}
virtual
void
StartDuel
(
DuelPlayer
*
dp
)
{}
virtual
void
HandResult
(
DuelPlayer
*
dp
,
unsigned
char
res
)
{}
virtual
void
HandResult
(
DuelPlayer
*
dp
,
unsigned
char
res
)
{}
virtual
void
TPResult
(
DuelPlayer
*
dp
,
unsigned
char
tp
)
{}
virtual
void
TPResult
(
DuelPlayer
*
dp
,
unsigned
char
tp
)
{}
...
...
gframe/single_duel.cpp
View file @
d18f6c10
...
@@ -259,11 +259,7 @@ void SingleDuel::LeaveGame(DuelPlayer* dp) {
...
@@ -259,11 +259,7 @@ void SingleDuel::LeaveGame(DuelPlayer* dp) {
unsigned
char
wbuf
[
3
];
unsigned
char
wbuf
[
3
];
wbuf
[
0
]
=
MSG_WIN
;
wbuf
[
0
]
=
MSG_WIN
;
wbuf
[
1
]
=
1
-
dp
->
type
;
wbuf
[
1
]
=
1
-
dp
->
type
;
#ifdef YGOPRO_SERVER_MODE
wbuf
[
2
]
=
0x4
;
wbuf
[
2
]
=
4
;
#else
wbuf
[
2
]
=
0
;
#endif
NetServer
::
SendBufferToPlayer
(
players
[
0
],
STOC_GAME_MSG
,
wbuf
,
3
);
NetServer
::
SendBufferToPlayer
(
players
[
0
],
STOC_GAME_MSG
,
wbuf
,
3
);
NetServer
::
ReSendToPlayer
(
players
[
1
]);
NetServer
::
ReSendToPlayer
(
players
[
1
]);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
...
@@ -398,12 +394,20 @@ void SingleDuel::PlayerKick(DuelPlayer* dp, unsigned char pos) {
...
@@ -398,12 +394,20 @@ void SingleDuel::PlayerKick(DuelPlayer* dp, unsigned char pos) {
return
;
return
;
LeaveGame
(
players
[
pos
]);
LeaveGame
(
players
[
pos
]);
}
}
void
SingleDuel
::
UpdateDeck
(
DuelPlayer
*
dp
,
void
*
pdata
)
{
void
SingleDuel
::
UpdateDeck
(
DuelPlayer
*
dp
,
void
*
pdata
,
unsigned
int
len
)
{
if
(
dp
->
type
>
1
||
ready
[
dp
->
type
])
if
(
dp
->
type
>
1
||
ready
[
dp
->
type
])
return
;
return
;
char
*
deckbuf
=
(
char
*
)
pdata
;
char
*
deckbuf
=
(
char
*
)
pdata
;
int
mainc
=
BufferIO
::
ReadInt32
(
deckbuf
);
int
mainc
=
BufferIO
::
ReadInt32
(
deckbuf
);
int
sidec
=
BufferIO
::
ReadInt32
(
deckbuf
);
int
sidec
=
BufferIO
::
ReadInt32
(
deckbuf
);
// verify data
if
((
unsigned
)
mainc
+
(
unsigned
)
sidec
>
(
len
-
8
)
/
4
)
{
STOC_ErrorMsg
scem
;
scem
.
msg
=
ERRMSG_DECKERROR
;
scem
.
code
=
0
;
NetServer
::
SendPacketToPlayer
(
dp
,
STOC_ERROR_MSG
,
scem
);
return
;
}
if
(
duel_count
==
0
)
{
if
(
duel_count
==
0
)
{
deck_error
[
dp
->
type
]
=
deckManager
.
LoadDeck
(
pdeck
[
dp
->
type
],
(
int
*
)
deckbuf
,
mainc
,
sidec
);
deck_error
[
dp
->
type
]
=
deckManager
.
LoadDeck
(
pdeck
[
dp
->
type
],
(
int
*
)
deckbuf
,
mainc
,
sidec
);
}
else
{
}
else
{
...
...
gframe/single_duel.h
View file @
d18f6c10
...
@@ -18,7 +18,7 @@ public:
...
@@ -18,7 +18,7 @@ public:
virtual
void
ToObserver
(
DuelPlayer
*
dp
);
virtual
void
ToObserver
(
DuelPlayer
*
dp
);
virtual
void
PlayerReady
(
DuelPlayer
*
dp
,
bool
ready
);
virtual
void
PlayerReady
(
DuelPlayer
*
dp
,
bool
ready
);
virtual
void
PlayerKick
(
DuelPlayer
*
dp
,
unsigned
char
pos
);
virtual
void
PlayerKick
(
DuelPlayer
*
dp
,
unsigned
char
pos
);
virtual
void
UpdateDeck
(
DuelPlayer
*
dp
,
void
*
pdata
);
virtual
void
UpdateDeck
(
DuelPlayer
*
dp
,
void
*
pdata
,
unsigned
int
len
);
virtual
void
StartDuel
(
DuelPlayer
*
dp
);
virtual
void
StartDuel
(
DuelPlayer
*
dp
);
virtual
void
HandResult
(
DuelPlayer
*
dp
,
unsigned
char
res
);
virtual
void
HandResult
(
DuelPlayer
*
dp
,
unsigned
char
res
);
virtual
void
TPResult
(
DuelPlayer
*
dp
,
unsigned
char
tp
);
virtual
void
TPResult
(
DuelPlayer
*
dp
,
unsigned
char
tp
);
...
...
gframe/single_mode.cpp
View file @
d18f6c10
...
@@ -181,13 +181,11 @@ bool SingleMode::SinglePlayAnalyze(char* msg, unsigned int len) {
...
@@ -181,13 +181,11 @@ bool SingleMode::SinglePlayAnalyze(char* msg, unsigned int len) {
mainGame
->
dInfo
.
curMsg
=
BufferIO
::
ReadUInt8
(
pbuf
);
mainGame
->
dInfo
.
curMsg
=
BufferIO
::
ReadUInt8
(
pbuf
);
switch
(
mainGame
->
dInfo
.
curMsg
)
{
switch
(
mainGame
->
dInfo
.
curMsg
)
{
case
MSG_RETRY
:
{
case
MSG_RETRY
:
{
mainGame
->
gMutex
.
Lock
();
if
(
!
DuelClient
::
ClientAnalyze
(
offset
,
pbuf
-
offset
))
{
mainGame
->
stMessage
->
setText
(
L"Error occurs."
);
mainGame
->
singleSignal
.
Reset
();
mainGame
->
PopupElement
(
mainGame
->
wMessage
);
mainGame
->
singleSignal
.
Wait
();
mainGame
->
gMutex
.
Unlock
();
}
mainGame
->
actionSignal
.
Reset
();
break
;
mainGame
->
actionSignal
.
Wait
();
return
false
;
}
}
case
MSG_HINT
:
{
case
MSG_HINT
:
{
/*int type = */
BufferIO
::
ReadInt8
(
pbuf
);
/*int type = */
BufferIO
::
ReadInt8
(
pbuf
);
...
...
gframe/tag_duel.cpp
View file @
d18f6c10
...
@@ -371,12 +371,20 @@ void TagDuel::PlayerKick(DuelPlayer* dp, unsigned char pos) {
...
@@ -371,12 +371,20 @@ void TagDuel::PlayerKick(DuelPlayer* dp, unsigned char pos) {
return
;
return
;
LeaveGame
(
players
[
pos
]);
LeaveGame
(
players
[
pos
]);
}
}
void
TagDuel
::
UpdateDeck
(
DuelPlayer
*
dp
,
void
*
pdata
)
{
void
TagDuel
::
UpdateDeck
(
DuelPlayer
*
dp
,
void
*
pdata
,
unsigned
int
len
)
{
if
(
dp
->
type
>
3
||
ready
[
dp
->
type
])
if
(
dp
->
type
>
3
||
ready
[
dp
->
type
])
return
;
return
;
char
*
deckbuf
=
(
char
*
)
pdata
;
char
*
deckbuf
=
(
char
*
)
pdata
;
int
mainc
=
BufferIO
::
ReadInt32
(
deckbuf
);
int
mainc
=
BufferIO
::
ReadInt32
(
deckbuf
);
int
sidec
=
BufferIO
::
ReadInt32
(
deckbuf
);
int
sidec
=
BufferIO
::
ReadInt32
(
deckbuf
);
// verify data
if
((
unsigned
)
mainc
+
(
unsigned
)
sidec
>
(
len
-
8
)
/
4
)
{
STOC_ErrorMsg
scem
;
scem
.
msg
=
ERRMSG_DECKERROR
;
scem
.
code
=
0
;
NetServer
::
SendPacketToPlayer
(
dp
,
STOC_ERROR_MSG
,
scem
);
return
;
}
deck_error
[
dp
->
type
]
=
deckManager
.
LoadDeck
(
pdeck
[
dp
->
type
],
(
int
*
)
deckbuf
,
mainc
,
sidec
);
deck_error
[
dp
->
type
]
=
deckManager
.
LoadDeck
(
pdeck
[
dp
->
type
],
(
int
*
)
deckbuf
,
mainc
,
sidec
);
}
}
void
TagDuel
::
StartDuel
(
DuelPlayer
*
dp
)
{
void
TagDuel
::
StartDuel
(
DuelPlayer
*
dp
)
{
...
...
gframe/tag_duel.h
View file @
d18f6c10
...
@@ -18,7 +18,7 @@ public:
...
@@ -18,7 +18,7 @@ public:
virtual
void
ToObserver
(
DuelPlayer
*
dp
);
virtual
void
ToObserver
(
DuelPlayer
*
dp
);
virtual
void
PlayerReady
(
DuelPlayer
*
dp
,
bool
ready
);
virtual
void
PlayerReady
(
DuelPlayer
*
dp
,
bool
ready
);
virtual
void
PlayerKick
(
DuelPlayer
*
dp
,
unsigned
char
pos
);
virtual
void
PlayerKick
(
DuelPlayer
*
dp
,
unsigned
char
pos
);
virtual
void
UpdateDeck
(
DuelPlayer
*
dp
,
void
*
pdata
);
virtual
void
UpdateDeck
(
DuelPlayer
*
dp
,
void
*
pdata
,
unsigned
int
len
);
virtual
void
StartDuel
(
DuelPlayer
*
dp
);
virtual
void
StartDuel
(
DuelPlayer
*
dp
);
virtual
void
HandResult
(
DuelPlayer
*
dp
,
unsigned
char
res
);
virtual
void
HandResult
(
DuelPlayer
*
dp
,
unsigned
char
res
);
virtual
void
TPResult
(
DuelPlayer
*
dp
,
unsigned
char
tp
);
virtual
void
TPResult
(
DuelPlayer
*
dp
,
unsigned
char
tp
);
...
...
lflist.conf
View file @
d18f6c10
This diff is collapsed.
Click to expand it.
ocgcore
@
d3908796
Subproject commit
b6c7140705394959b46a0da62e1e87714120b0b8
Subproject commit
d3908796656aec88ad9cb6b9da1e7e3ce939e3c9
premake/gframe/ygopro.rc
View file @
d18f6c10
1 ICON "ygopro.ico"
1 ICON "ygopro.ico"
1 VERSIONINFO
1 VERSIONINFO
FILEVERSION 1, 0, 34,
9
FILEVERSION 1, 0, 34,
10
PRODUCTVERSION 1, 0, 34,
9
PRODUCTVERSION 1, 0, 34,
10
FILEOS 0x4
FILEOS 0x4
FILETYPE 0x1
FILETYPE 0x1
...
@@ -16,8 +16,8 @@ VALUE "InternalName", "YGOPRO Server Mode"
...
@@ -16,8 +16,8 @@ VALUE "InternalName", "YGOPRO Server Mode"
VALUE "LegalCopyright", "Copyright (C) 2018 Nanahira"
VALUE "LegalCopyright", "Copyright (C) 2018 Nanahira"
VALUE "OriginalFilename", "ygopro.exe"
VALUE "OriginalFilename", "ygopro.exe"
VALUE "ProductName", "YGOPRO Server Mode"
VALUE "ProductName", "YGOPRO Server Mode"
VALUE "FileVersion", "1.034.
9
.Koishi"
VALUE "FileVersion", "1.034.
A
.Koishi"
VALUE "ProductVersion", "1.034.
9
.Koishi"
VALUE "ProductVersion", "1.034.
A
.Koishi"
END
END
END
END
BLOCK "VarFileInfo"
BLOCK "VarFileInfo"
...
...
script
@
766c38f7
Subproject commit
9ec1a4429cf9e3a3fd5002b6286061f9a83db917
Subproject commit
766c38f7a4fc239838216f98c2b611fcff4ae036
strings.conf
View file @
d18f6c10
...
@@ -41,7 +41,7 @@
...
@@ -41,7 +41,7 @@
!
system
72
陷阱卡
!
system
72
陷阱卡
!
system
80
进入战斗阶段
!
system
80
进入战斗阶段
!
system
81
进入结束阶段
!
system
81
进入结束阶段
!
system
90
是否不解放怪
物
通常召唤?
!
system
90
是否不解放怪
兽
通常召唤?
!
system
91
是否使用额外的召唤机会?
!
system
91
是否使用额外的召唤机会?
!
system
92
是否要解放对方怪兽进行上级召唤?
!
system
92
是否要解放对方怪兽进行上级召唤?
!
system
93
是否要继续选择素材?
!
system
93
是否要继续选择素材?
...
@@ -615,7 +615,7 @@
...
@@ -615,7 +615,7 @@
!
setname
0
x8
英雄
HERO
!
setname
0
x8
英雄
HERO
!
setname
0
x3008
元素英雄
E
・
HERO
!
setname
0
x3008
元素英雄
E
・
HERO
!
setname
0
x5008
幻影英雄
V
・
HERO
!
setname
0
x5008
幻影英雄
V
・
HERO
#
setname 0x6008 邪心英雄 E-HERO
!
setname
0
x6008
邪心英雄
E
-
HERO
!
setname
0
xa008
假面英雄
M
・
HERO
!
setname
0
xa008
假面英雄
M
・
HERO
!
setname
0
xc008
命运英雄
D
-
HERO
!
setname
0
xc008
命运英雄
D
-
HERO
!
setname
0
x9
新宇 ネオス
!
setname
0
x9
新宇 ネオス
...
...
system.conf
View file @
d18f6c10
...
@@ -2,7 +2,7 @@
...
@@ -2,7 +2,7 @@
#nickname & gamename should be less than 20 characters
#nickname & gamename should be less than 20 characters
use_d3d
=
0
use_d3d
=
0
use_image_scale
=
1
use_image_scale
=
1
pro_version
=
493
7
pro_version
=
493
8
antialias
=
2
antialias
=
2
errorlog
=
3
errorlog
=
3
nickname
=
Komeiji
Koishi
nickname
=
Komeiji
Koishi
...
...
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