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
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
nanahira
ygopro
Commits
c7d75f7d
Commit
c7d75f7d
authored
Oct 21, 2024
by
wind2009
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'server' into server-develop
parents
43ac628c
daeffdb4
Changes
14
Show whitespace changes
Inline
Side-by-side
Showing
14 changed files
with
169 additions
and
179 deletions
+169
-179
gframe/client_field.cpp
gframe/client_field.cpp
+2
-2
gframe/data_manager.cpp
gframe/data_manager.cpp
+76
-84
gframe/data_manager.h
gframe/data_manager.h
+11
-15
gframe/deck_con.cpp
gframe/deck_con.cpp
+6
-6
gframe/event_handler.cpp
gframe/event_handler.cpp
+7
-4
gframe/game.cpp
gframe/game.cpp
+2
-2
gframe/network.h
gframe/network.h
+20
-21
gframe/replay_mode.cpp
gframe/replay_mode.cpp
+1
-1
gframe/single_duel.cpp
gframe/single_duel.cpp
+1
-1
gframe/single_duel.h
gframe/single_duel.h
+19
-19
gframe/single_mode.cpp
gframe/single_mode.cpp
+3
-3
gframe/tag_duel.cpp
gframe/tag_duel.cpp
+1
-1
gframe/tag_duel.h
gframe/tag_duel.h
+19
-19
ocgcore
ocgcore
+1
-1
No files found.
gframe/client_field.cpp
View file @
c7d75f7d
...
@@ -1548,10 +1548,10 @@ void ClientField::UpdateDeclarableList() {
...
@@ -1548,10 +1548,10 @@ void ClientField::UpdateDeclarableList() {
}
}
mainGame
->
lstANCard
->
clear
();
mainGame
->
lstANCard
->
clear
();
ancard
.
clear
();
ancard
.
clear
();
for
(
auto
cit
=
dataManager
.
strings_begin
;
cit
!=
dataManager
.
strings_end
;
++
cit
)
{
for
(
auto
cit
=
dataManager
.
strings_begin
();
cit
!=
dataManager
.
strings_end
()
;
++
cit
)
{
if
(
cit
->
second
.
name
.
find
(
pname
)
!=
std
::
wstring
::
npos
)
{
if
(
cit
->
second
.
name
.
find
(
pname
)
!=
std
::
wstring
::
npos
)
{
auto
cp
=
dataManager
.
GetCodePointer
(
cit
->
first
);
auto
cp
=
dataManager
.
GetCodePointer
(
cit
->
first
);
if
(
cp
==
dataManager
.
datas_end
)
if
(
cp
==
dataManager
.
datas_end
()
)
continue
;
continue
;
//datas.alias can be double card names or alias
//datas.alias can be double card names or alias
if
(
is_declarable
(
cp
->
second
,
declare_opcodes
))
{
if
(
is_declarable
(
cp
->
second
,
declare_opcodes
))
{
...
...
gframe/data_manager.cpp
View file @
c7d75f7d
#include "data_manager.h"
#include "data_manager.h"
#include "game.h"
#include "game.h"
#include <stdio.h>
#include <stdio.h>
#if !defined(YGOPRO_SERVER_MODE) || defined(SERVER_ZIP_SUPPORT)
#include "spmemvfs/spmemvfs.h"
#endif
namespace
ygo
{
namespace
ygo
{
...
@@ -11,52 +14,18 @@ IFileSystem* DataManager::FileSystem;
...
@@ -11,52 +14,18 @@ IFileSystem* DataManager::FileSystem;
#endif
#endif
DataManager
dataManager
;
DataManager
dataManager
;
DataManager
::
DataManager
()
:
_datas
(
16384
),
_strings
(
16384
)
{
DataManager
::
DataManager
()
:
_datas
(
32768
),
_strings
(
32768
)
{
datas_begin
=
_datas
.
begin
();
datas_end
=
_datas
.
end
();
strings_begin
=
_strings
.
begin
();
strings_end
=
_strings
.
end
();
extra_setcode
=
{
{
8512558u
,
{
0x8f
,
0x54
,
0x59
,
0x82
,
0x13a
}},
};
extra_setcode
=
{
{
8512558u
,
{
0x8f
,
0x54
,
0x59
,
0x82
,
0x13a
}},
};
}
}
bool
DataManager
::
LoadDB
(
const
wchar_t
*
wfile
)
{
bool
DataManager
::
ReadDB
(
sqlite3
*
pDB
)
{
char
file
[
256
];
sqlite3_stmt
*
pStmt
{};
BufferIO
::
EncodeUTF8
(
wfile
,
file
);
#if defined(YGOPRO_SERVER_MODE) && !defined(SERVER_ZIP_SUPPORT)
sqlite3
*
pDB
;
if
(
sqlite3_open_v2
(
file
,
&
pDB
,
SQLITE_OPEN_READONLY
,
0
)
!=
SQLITE_OK
)
return
Error
(
pDB
);
#else
#ifdef _WIN32
IReadFile
*
reader
=
FileSystem
->
createAndOpenFile
(
wfile
);
#else
IReadFile
*
reader
=
FileSystem
->
createAndOpenFile
(
file
);
#endif
if
(
reader
==
NULL
)
return
false
;
spmemvfs_db_t
db
;
spmembuffer_t
*
mem
=
(
spmembuffer_t
*
)
calloc
(
sizeof
(
spmembuffer_t
),
1
);
spmemvfs_env_init
();
mem
->
total
=
mem
->
used
=
reader
->
getSize
();
mem
->
data
=
(
char
*
)
malloc
(
mem
->
total
+
1
);
reader
->
read
(
mem
->
data
,
mem
->
total
);
reader
->
drop
();
(
mem
->
data
)[
mem
->
total
]
=
'\0'
;
if
(
spmemvfs_open_db
(
&
db
,
file
,
mem
)
!=
SQLITE_OK
)
return
Error
(
&
db
);
sqlite3
*
pDB
=
db
.
handle
;
#endif //YGOPRO_SERVER_MODE
sqlite3_stmt
*
pStmt
;
#ifdef YGOPRO_SERVER_MODE
#ifdef YGOPRO_SERVER_MODE
const
char
*
sql
=
"select * from datas"
;
const
char
*
sql
=
"select * from datas"
;
#else
#else
const
char
*
sql
=
"select * from datas,texts where datas.id=texts.id"
;
const
char
*
sql
=
"select * from datas,texts where datas.id=texts.id"
;
#endif
#endif
if
(
sqlite3_prepare_v2
(
pDB
,
sql
,
-
1
,
&
pStmt
,
0
)
!=
SQLITE_OK
)
if
(
sqlite3_prepare_v2
(
pDB
,
sql
,
-
1
,
&
pStmt
,
0
)
!=
SQLITE_OK
)
#if defined(YGOPRO_SERVER_MODE) && !defined(SERVER_ZIP_SUPPORT)
return
Error
(
pDB
);
return
Error
(
pDB
);
#else
return
Error
(
&
db
);
#endif
#ifndef YGOPRO_SERVER_MODE
#ifndef YGOPRO_SERVER_MODE
wchar_t
strBuffer
[
4096
];
wchar_t
strBuffer
[
4096
];
#endif
#endif
...
@@ -65,13 +34,9 @@ bool DataManager::LoadDB(const wchar_t* wfile) {
...
@@ -65,13 +34,9 @@ bool DataManager::LoadDB(const wchar_t* wfile) {
CardDataC
cd
;
CardDataC
cd
;
CardString
cs
;
CardString
cs
;
step
=
sqlite3_step
(
pStmt
);
step
=
sqlite3_step
(
pStmt
);
if
(
step
==
SQLITE_BUSY
||
step
==
SQLITE_ERROR
||
step
==
SQLITE_MISUSE
)
if
(
step
==
SQLITE_BUSY
||
step
==
SQLITE_ERROR
||
step
==
SQLITE_MISUSE
)
#if defined(YGOPRO_SERVER_MODE) && !defined(SERVER_ZIP_SUPPORT)
return
Error
(
pDB
,
pStmt
);
return
Error
(
pDB
,
pStmt
);
#else
else
if
(
step
==
SQLITE_ROW
)
{
return
Error
(
&
db
,
pStmt
);
#endif
else
if
(
step
==
SQLITE_ROW
)
{
cd
.
code
=
sqlite3_column_int
(
pStmt
,
0
);
cd
.
code
=
sqlite3_column_int
(
pStmt
,
0
);
cd
.
ot
=
sqlite3_column_int
(
pStmt
,
1
);
cd
.
ot
=
sqlite3_column_int
(
pStmt
,
1
);
cd
.
alias
=
sqlite3_column_int
(
pStmt
,
2
);
cd
.
alias
=
sqlite3_column_int
(
pStmt
,
2
);
...
@@ -91,10 +56,11 @@ bool DataManager::LoadDB(const wchar_t* wfile) {
...
@@ -91,10 +56,11 @@ bool DataManager::LoadDB(const wchar_t* wfile) {
cd
.
type
=
sqlite3_column_int
(
pStmt
,
4
);
cd
.
type
=
sqlite3_column_int
(
pStmt
,
4
);
cd
.
attack
=
sqlite3_column_int
(
pStmt
,
5
);
cd
.
attack
=
sqlite3_column_int
(
pStmt
,
5
);
cd
.
defense
=
sqlite3_column_int
(
pStmt
,
6
);
cd
.
defense
=
sqlite3_column_int
(
pStmt
,
6
);
if
(
cd
.
type
&
TYPE_LINK
)
{
if
(
cd
.
type
&
TYPE_LINK
)
{
cd
.
link_marker
=
cd
.
defense
;
cd
.
link_marker
=
cd
.
defense
;
cd
.
defense
=
0
;
cd
.
defense
=
0
;
}
else
}
else
cd
.
link_marker
=
0
;
cd
.
link_marker
=
0
;
unsigned
int
level
=
sqlite3_column_int
(
pStmt
,
7
);
unsigned
int
level
=
sqlite3_column_int
(
pStmt
,
7
);
cd
.
level
=
level
&
0xff
;
cd
.
level
=
level
&
0xff
;
...
@@ -105,16 +71,16 @@ bool DataManager::LoadDB(const wchar_t* wfile) {
...
@@ -105,16 +71,16 @@ bool DataManager::LoadDB(const wchar_t* wfile) {
cd
.
category
=
sqlite3_column_int
(
pStmt
,
10
);
cd
.
category
=
sqlite3_column_int
(
pStmt
,
10
);
_datas
[
cd
.
code
]
=
cd
;
_datas
[
cd
.
code
]
=
cd
;
#ifndef YGOPRO_SERVER_MODE
#ifndef YGOPRO_SERVER_MODE
if
(
const
char
*
text
=
(
const
char
*
)
sqlite3_column_text
(
pStmt
,
12
))
{
if
(
const
char
*
text
=
(
const
char
*
)
sqlite3_column_text
(
pStmt
,
12
))
{
BufferIO
::
DecodeUTF8
(
text
,
strBuffer
);
BufferIO
::
DecodeUTF8
(
text
,
strBuffer
);
cs
.
name
=
strBuffer
;
cs
.
name
=
strBuffer
;
}
}
if
(
const
char
*
text
=
(
const
char
*
)
sqlite3_column_text
(
pStmt
,
13
))
{
if
(
const
char
*
text
=
(
const
char
*
)
sqlite3_column_text
(
pStmt
,
13
))
{
BufferIO
::
DecodeUTF8
(
text
,
strBuffer
);
BufferIO
::
DecodeUTF8
(
text
,
strBuffer
);
cs
.
text
=
strBuffer
;
cs
.
text
=
strBuffer
;
}
}
for
(
int
i
=
0
;
i
<
16
;
++
i
)
{
for
(
int
i
=
0
;
i
<
16
;
++
i
)
{
if
(
const
char
*
text
=
(
const
char
*
)
sqlite3_column_text
(
pStmt
,
i
+
14
))
{
if
(
const
char
*
text
=
(
const
char
*
)
sqlite3_column_text
(
pStmt
,
i
+
14
))
{
BufferIO
::
DecodeUTF8
(
text
,
strBuffer
);
BufferIO
::
DecodeUTF8
(
text
,
strBuffer
);
cs
.
desc
[
i
]
=
strBuffer
;
cs
.
desc
[
i
]
=
strBuffer
;
}
}
...
@@ -122,19 +88,46 @@ bool DataManager::LoadDB(const wchar_t* wfile) {
...
@@ -122,19 +88,46 @@ bool DataManager::LoadDB(const wchar_t* wfile) {
_strings
[
cd
.
code
]
=
cs
;
_strings
[
cd
.
code
]
=
cs
;
#endif //YGOPRO_SERVER_MODE
#endif //YGOPRO_SERVER_MODE
}
}
}
while
(
step
!=
SQLITE_DONE
);
}
while
(
step
!=
SQLITE_DONE
);
sqlite3_finalize
(
pStmt
);
sqlite3_finalize
(
pStmt
);
#ifdef YGOPRO_SERVER_MODE
return
true
;
}
bool
DataManager
::
LoadDB
(
const
wchar_t
*
wfile
)
{
char
file
[
256
];
BufferIO
::
EncodeUTF8
(
wfile
,
file
);
#if defined(YGOPRO_SERVER_MODE) && !defined(SERVER_ZIP_SUPPORT)
bool
ret
{};
sqlite3
*
pDB
{};
if
(
sqlite3_open_v2
(
file
,
&
pDB
,
SQLITE_OPEN_READONLY
,
0
)
!=
SQLITE_OK
)
ret
=
Error
(
pDB
);
else
ret
=
ReadDB
(
pDB
);
sqlite3_close
(
pDB
);
sqlite3_close
(
pDB
);
#else
#else
#ifdef _WIN32
IReadFile
*
reader
=
FileSystem
->
createAndOpenFile
(
wfile
);
#else
IReadFile
*
reader
=
FileSystem
->
createAndOpenFile
(
file
);
#endif
if
(
reader
==
NULL
)
return
false
;
spmemvfs_db_t
db
;
spmembuffer_t
*
mem
=
(
spmembuffer_t
*
)
calloc
(
sizeof
(
spmembuffer_t
),
1
);
spmemvfs_env_init
();
mem
->
total
=
mem
->
used
=
reader
->
getSize
();
mem
->
data
=
(
char
*
)
malloc
(
mem
->
total
+
1
);
reader
->
read
(
mem
->
data
,
mem
->
total
);
reader
->
drop
();
(
mem
->
data
)[
mem
->
total
]
=
'\0'
;
bool
ret
{};
if
(
spmemvfs_open_db
(
&
db
,
file
,
mem
)
!=
SQLITE_OK
)
ret
=
Error
(
db
.
handle
);
else
ret
=
ReadDB
(
db
.
handle
);
spmemvfs_close_db
(
&
db
);
spmemvfs_close_db
(
&
db
);
spmemvfs_env_fini
();
spmemvfs_env_fini
();
#endif
#endif //YGOPRO_SERVER_MODE
datas_begin
=
_datas
.
begin
();
return
ret
;
datas_end
=
_datas
.
end
();
strings_begin
=
_strings
.
begin
();
strings_end
=
_strings
.
end
();
return
true
;
}
}
bool
DataManager
::
LoadStrings
(
const
char
*
file
)
{
bool
DataManager
::
LoadStrings
(
const
char
*
file
)
{
FILE
*
fp
=
fopen
(
file
,
"r"
);
FILE
*
fp
=
fopen
(
file
,
"r"
);
...
@@ -197,26 +190,31 @@ void DataManager::ReadStringConfLine(const char* linebuf) {
...
@@ -197,26 +190,31 @@ void DataManager::ReadStringConfLine(const char* linebuf) {
_setnameStrings
[
value
]
=
strBuffer
;
_setnameStrings
[
value
]
=
strBuffer
;
}
}
}
}
#if defined(YGOPRO_SERVER_MODE) && !defined(SERVER_ZIP_SUPPORT)
bool
DataManager
::
Error
(
sqlite3
*
pDB
,
sqlite3_stmt
*
pStmt
)
{
bool
DataManager
::
Error
(
sqlite3
*
pDB
,
sqlite3_stmt
*
pStmt
)
{
wchar_t
strBuffer
[
4096
]
;
errmsg
[
0
]
=
'\0'
;
BufferIO
::
DecodeUTF8
(
sqlite3_errmsg
(
pDB
),
strBuffer
);
std
::
strncat
(
errmsg
,
sqlite3_errmsg
(
pDB
),
sizeof
errmsg
-
1
);
if
(
pStmt
)
if
(
pStmt
)
sqlite3_finalize
(
pStmt
);
sqlite3_finalize
(
pStmt
);
sqlite3_close
(
pDB
);
return
false
;
return
false
;
}
}
#else
code_pointer
DataManager
::
GetCodePointer
(
unsigned
int
code
)
const
{
bool
DataManager
::
Error
(
spmemvfs_db_t
*
pDB
,
sqlite3_stmt
*
pStmt
)
{
return
_datas
.
find
(
code
);
wchar_t
strBuffer
[
4096
];
}
BufferIO
::
DecodeUTF8
(
sqlite3_errmsg
(
pDB
->
handle
),
strBuffer
);
string_pointer
DataManager
::
GetStringPointer
(
unsigned
int
code
)
const
{
if
(
pStmt
)
return
_strings
.
find
(
code
);
sqlite3_finalize
(
pStmt
);
}
spmemvfs_close_db
(
pDB
);
code_pointer
DataManager
::
datas_begin
()
{
spmemvfs_env_fini
();
return
_datas
.
cbegin
();
return
false
;
}
code_pointer
DataManager
::
datas_end
()
{
return
_datas
.
cend
();
}
string_pointer
DataManager
::
strings_begin
()
{
return
_strings
.
cbegin
();
}
string_pointer
DataManager
::
strings_end
()
{
return
_strings
.
cend
();
}
}
#endif //YGOPRO_SERVER_MODE
bool
DataManager
::
GetData
(
unsigned
int
code
,
CardData
*
pData
)
const
{
bool
DataManager
::
GetData
(
unsigned
int
code
,
CardData
*
pData
)
const
{
auto
cdit
=
_datas
.
find
(
code
);
auto
cdit
=
_datas
.
find
(
code
);
if
(
cdit
==
_datas
.
end
())
if
(
cdit
==
_datas
.
end
())
...
@@ -226,12 +224,6 @@ bool DataManager::GetData(unsigned int code, CardData* pData) const {
...
@@ -226,12 +224,6 @@ bool DataManager::GetData(unsigned int code, CardData* pData) const {
}
}
return
true
;
return
true
;
}
}
code_pointer
DataManager
::
GetCodePointer
(
unsigned
int
code
)
const
{
return
_datas
.
find
(
code
);
}
string_pointer
DataManager
::
GetStringPointer
(
unsigned
int
code
)
const
{
return
_strings
.
find
(
code
);
}
bool
DataManager
::
GetString
(
unsigned
int
code
,
CardString
*
pStr
)
const
{
bool
DataManager
::
GetString
(
unsigned
int
code
,
CardString
*
pStr
)
const
{
auto
csit
=
_strings
.
find
(
code
);
auto
csit
=
_strings
.
find
(
code
);
if
(
csit
==
_strings
.
end
())
{
if
(
csit
==
_strings
.
end
())
{
...
@@ -443,12 +435,12 @@ uint32 DataManager::CardReader(uint32 code, card_data* pData) {
...
@@ -443,12 +435,12 @@ uint32 DataManager::CardReader(uint32 code, card_data* pData) {
byte
*
DataManager
::
ScriptReaderEx
(
const
char
*
script_name
,
int
*
slen
)
{
byte
*
DataManager
::
ScriptReaderEx
(
const
char
*
script_name
,
int
*
slen
)
{
// default script name: ./script/c%d.lua
// default script name: ./script/c%d.lua
#ifdef YGOPRO_SERVER_MODE
#ifdef YGOPRO_SERVER_MODE
char
first
[
256
];
char
first
[
256
]
{}
;
char
second
[
256
];
char
second
[
256
]
{}
;
char
third
[
256
];
char
third
[
256
]
{}
;
s
printf
(
first
,
"specials/%s"
,
script_name
+
9
);
s
nprintf
(
first
,
sizeof
first
,
"specials/%s"
,
script_name
+
9
);
s
printf
(
second
,
"expansions/%s"
,
script_name
+
2
);
s
nprintf
(
second
,
sizeof
second
,
"expansions/%s"
,
script_name
+
2
);
s
printf
(
third
,
"%s"
,
script_name
+
2
);
s
nprintf
(
third
,
sizeof
third
,
"%s"
,
script_name
+
2
);
if
(
ScriptReader
(
first
,
slen
))
if
(
ScriptReader
(
first
,
slen
))
return
scriptBuffer
;
return
scriptBuffer
;
else
if
(
ScriptReader
(
second
,
slen
))
else
if
(
ScriptReader
(
second
,
slen
))
...
...
gframe/data_manager.h
View file @
c7d75f7d
...
@@ -2,12 +2,9 @@
...
@@ -2,12 +2,9 @@
#define DATAMANAGER_H
#define DATAMANAGER_H
#include "config.h"
#include "config.h"
#include "sqlite3.h"
#if !defined(YGOPRO_SERVER_MODE) || defined(SERVER_ZIP_SUPPORT)
#include "spmemvfs/spmemvfs.h"
#endif
#include "client_card.h"
#include <unordered_map>
#include <unordered_map>
#include <sqlite3.h>
#include "client_card.h"
namespace
ygo
{
namespace
ygo
{
constexpr
int
MAX_STRING_ID
=
0x7ff
;
constexpr
int
MAX_STRING_ID
=
0x7ff
;
...
@@ -16,20 +13,22 @@ namespace ygo {
...
@@ -16,20 +13,22 @@ namespace ygo {
class
DataManager
{
class
DataManager
{
public:
public:
DataManager
();
DataManager
();
bool
ReadDB
(
sqlite3
*
pDB
);
bool
LoadDB
(
const
wchar_t
*
wfile
);
bool
LoadDB
(
const
wchar_t
*
wfile
);
bool
LoadStrings
(
const
char
*
file
);
bool
LoadStrings
(
const
char
*
file
);
#ifndef YGOPRO_SERVER_MODE
#ifndef YGOPRO_SERVER_MODE
bool
LoadStrings
(
IReadFile
*
reader
);
bool
LoadStrings
(
IReadFile
*
reader
);
#endif
#endif
void
ReadStringConfLine
(
const
char
*
linebuf
);
void
ReadStringConfLine
(
const
char
*
linebuf
);
#if !defined(YGOPRO_SERVER_MODE) || defined(SERVER_ZIP_SUPPORT)
bool
Error
(
sqlite3
*
pDB
,
sqlite3_stmt
*
pStmt
=
nullptr
);
bool
Error
(
spmemvfs_db_t
*
pDB
,
sqlite3_stmt
*
pStmt
=
0
);
#else
bool
Error
(
sqlite3
*
pDB
,
sqlite3_stmt
*
pStmt
=
0
);
#endif //YGOPRO_SERVER_MODE
bool
GetData
(
unsigned
int
code
,
CardData
*
pData
)
const
;
code_pointer
GetCodePointer
(
unsigned
int
code
)
const
;
code_pointer
GetCodePointer
(
unsigned
int
code
)
const
;
string_pointer
GetStringPointer
(
unsigned
int
code
)
const
;
string_pointer
GetStringPointer
(
unsigned
int
code
)
const
;
code_pointer
datas_begin
();
code_pointer
datas_end
();
string_pointer
strings_begin
();
string_pointer
strings_end
();
bool
GetData
(
unsigned
int
code
,
CardData
*
pData
)
const
;
bool
GetString
(
unsigned
int
code
,
CardString
*
pStr
)
const
;
bool
GetString
(
unsigned
int
code
,
CardString
*
pStr
)
const
;
const
wchar_t
*
GetName
(
unsigned
int
code
)
const
;
const
wchar_t
*
GetName
(
unsigned
int
code
)
const
;
const
wchar_t
*
GetText
(
unsigned
int
code
)
const
;
const
wchar_t
*
GetText
(
unsigned
int
code
)
const
;
...
@@ -51,10 +50,7 @@ public:
...
@@ -51,10 +50,7 @@ public:
std
::
unordered_map
<
unsigned
int
,
std
::
wstring
>
_victoryStrings
;
std
::
unordered_map
<
unsigned
int
,
std
::
wstring
>
_victoryStrings
;
std
::
unordered_map
<
unsigned
int
,
std
::
wstring
>
_setnameStrings
;
std
::
unordered_map
<
unsigned
int
,
std
::
wstring
>
_setnameStrings
;
std
::
unordered_map
<
unsigned
int
,
std
::
wstring
>
_sysStrings
;
std
::
unordered_map
<
unsigned
int
,
std
::
wstring
>
_sysStrings
;
code_pointer
datas_begin
;
char
errmsg
[
512
]{};
code_pointer
datas_end
;
string_pointer
strings_begin
;
string_pointer
strings_end
;
wchar_t
numStrings
[
301
][
4
]{};
wchar_t
numStrings
[
301
][
4
]{};
wchar_t
numBuffer
[
6
]{};
wchar_t
numBuffer
[
6
]{};
...
...
gframe/deck_con.cpp
View file @
c7d75f7d
...
@@ -1015,7 +1015,7 @@ bool DeckBuilder::OnEvent(const irr::SEvent& event) {
...
@@ -1015,7 +1015,7 @@ bool DeckBuilder::OnEvent(const irr::SEvent& event) {
dragx
=
event
.
MouseInput
.
X
;
dragx
=
event
.
MouseInput
.
X
;
dragy
=
event
.
MouseInput
.
Y
;
dragy
=
event
.
MouseInput
.
Y
;
draging_pointer
=
dataManager
.
GetCodePointer
(
hovered_code
);
draging_pointer
=
dataManager
.
GetCodePointer
(
hovered_code
);
if
(
draging_pointer
==
dataManager
.
datas_end
)
if
(
draging_pointer
==
dataManager
.
datas_end
()
)
break
;
break
;
if
(
hovered_pos
==
4
)
{
if
(
hovered_pos
==
4
)
{
if
(
!
check_limit
(
draging_pointer
))
if
(
!
check_limit
(
draging_pointer
))
...
@@ -1069,7 +1069,7 @@ bool DeckBuilder::OnEvent(const irr::SEvent& event) {
...
@@ -1069,7 +1069,7 @@ bool DeckBuilder::OnEvent(const irr::SEvent& event) {
if
(
hovered_pos
==
0
||
hovered_seq
==
-
1
)
if
(
hovered_pos
==
0
||
hovered_seq
==
-
1
)
break
;
break
;
auto
pointer
=
dataManager
.
GetCodePointer
(
hovered_code
);
auto
pointer
=
dataManager
.
GetCodePointer
(
hovered_code
);
if
(
pointer
==
dataManager
.
datas_end
)
if
(
pointer
==
dataManager
.
datas_end
()
)
break
;
break
;
soundManager
.
PlaySoundEffect
(
SOUND_CARD_DROP
);
soundManager
.
PlaySoundEffect
(
SOUND_CARD_DROP
);
if
(
hovered_pos
==
1
)
{
if
(
hovered_pos
==
1
)
{
...
@@ -1104,7 +1104,7 @@ bool DeckBuilder::OnEvent(const irr::SEvent& event) {
...
@@ -1104,7 +1104,7 @@ bool DeckBuilder::OnEvent(const irr::SEvent& event) {
pop_side
(
hovered_seq
);
pop_side
(
hovered_seq
);
}
else
{
}
else
{
auto
pointer
=
dataManager
.
GetCodePointer
(
hovered_code
);
auto
pointer
=
dataManager
.
GetCodePointer
(
hovered_code
);
if
(
pointer
==
dataManager
.
datas_end
)
if
(
pointer
==
dataManager
.
datas_end
()
)
break
;
break
;
if
(
!
check_limit
(
pointer
))
if
(
!
check_limit
(
pointer
))
break
;
break
;
...
@@ -1139,7 +1139,7 @@ bool DeckBuilder::OnEvent(const irr::SEvent& event) {
...
@@ -1139,7 +1139,7 @@ bool DeckBuilder::OnEvent(const irr::SEvent& event) {
if
(
is_draging
)
if
(
is_draging
)
break
;
break
;
auto
pointer
=
dataManager
.
GetCodePointer
(
hovered_code
);
auto
pointer
=
dataManager
.
GetCodePointer
(
hovered_code
);
if
(
pointer
==
dataManager
.
datas_end
)
if
(
pointer
==
dataManager
.
datas_end
()
)
break
;
break
;
if
(
!
check_limit
(
pointer
))
if
(
!
check_limit
(
pointer
))
break
;
break
;
...
@@ -1409,10 +1409,10 @@ void DeckBuilder::FilterCards() {
...
@@ -1409,10 +1409,10 @@ void DeckBuilder::FilterCards() {
query_elements
.
push_back
(
element
);
query_elements
.
push_back
(
element
);
}
}
}
}
for
(
code_pointer
ptr
=
dataManager
.
datas_begin
;
ptr
!=
dataManager
.
datas_end
;
++
ptr
)
{
for
(
code_pointer
ptr
=
dataManager
.
datas_begin
();
ptr
!=
dataManager
.
datas_end
()
;
++
ptr
)
{
const
CardDataC
&
data
=
ptr
->
second
;
const
CardDataC
&
data
=
ptr
->
second
;
auto
strpointer
=
dataManager
.
GetStringPointer
(
ptr
->
first
);
auto
strpointer
=
dataManager
.
GetStringPointer
(
ptr
->
first
);
if
(
strpointer
==
dataManager
.
strings_end
)
if
(
strpointer
==
dataManager
.
strings_end
()
)
continue
;
continue
;
const
CardString
&
text
=
strpointer
->
second
;
const
CardString
&
text
=
strpointer
->
second
;
if
(
data
.
type
&
TYPE_TOKEN
)
if
(
data
.
type
&
TYPE_TOKEN
)
...
...
gframe/event_handler.cpp
View file @
c7d75f7d
...
@@ -2480,11 +2480,14 @@ void ClientField::ShowCardInfoInList(ClientCard* pcard, irr::gui::IGUIElement* e
...
@@ -2480,11 +2480,14 @@ void ClientField::ShowCardInfoInList(ClientCard* pcard, irr::gui::IGUIElement* e
}
}
}
}
void
ClientField
::
SetResponseSelectedCards
()
const
{
void
ClientField
::
SetResponseSelectedCards
()
const
{
unsigned
char
respbuf
[
SIZE_RETURN_VALUE
];
unsigned
char
respbuf
[
SIZE_RETURN_VALUE
]{};
respbuf
[
0
]
=
selected_cards
.
size
();
int
len
=
(
int
)
selected_cards
.
size
();
for
(
size_t
i
=
0
;
i
<
selected_cards
.
size
();
++
i
)
if
(
len
>
UINT8_MAX
)
len
=
UINT8_MAX
;
respbuf
[
0
]
=
(
unsigned
char
)
len
;
for
(
int
i
=
0
;
i
<
len
;
++
i
)
respbuf
[
i
+
1
]
=
selected_cards
[
i
]
->
select_seq
;
respbuf
[
i
+
1
]
=
selected_cards
[
i
]
->
select_seq
;
DuelClient
::
SetResponseB
(
respbuf
,
selected_cards
.
size
()
+
1
);
DuelClient
::
SetResponseB
(
respbuf
,
len
+
1
);
}
}
void
ClientField
::
SetResponseSelectedOption
()
const
{
void
ClientField
::
SetResponseSelectedOption
()
const
{
if
(
mainGame
->
dInfo
.
curMsg
==
MSG_SELECT_OPTION
)
{
if
(
mainGame
->
dInfo
.
curMsg
==
MSG_SELECT_OPTION
)
{
...
...
gframe/game.cpp
View file @
c7d75f7d
...
@@ -1628,7 +1628,7 @@ void Game::ShowCardInfo(int code, bool resize) {
...
@@ -1628,7 +1628,7 @@ void Game::ShowCardInfo(int code, bool resize) {
return
;
return
;
wchar_t
formatBuffer
[
256
];
wchar_t
formatBuffer
[
256
];
auto
cit
=
dataManager
.
GetCodePointer
(
code
);
auto
cit
=
dataManager
.
GetCodePointer
(
code
);
bool
is_valid
=
(
cit
!=
dataManager
.
datas_end
);
bool
is_valid
=
(
cit
!=
dataManager
.
datas_end
()
);
imgCard
->
setImage
(
imageManager
.
GetTexture
(
code
,
true
));
imgCard
->
setImage
(
imageManager
.
GetTexture
(
code
,
true
));
if
(
is_valid
)
{
if
(
is_valid
)
{
auto
&
cd
=
cit
->
second
;
auto
&
cd
=
cit
->
second
;
...
@@ -1645,7 +1645,7 @@ void Game::ShowCardInfo(int code, bool resize) {
...
@@ -1645,7 +1645,7 @@ void Game::ShowCardInfo(int code, bool resize) {
if
(
is_valid
&&
!
gameConf
.
hide_setname
)
{
if
(
is_valid
&&
!
gameConf
.
hide_setname
)
{
auto
&
cd
=
cit
->
second
;
auto
&
cd
=
cit
->
second
;
auto
target
=
cit
;
auto
target
=
cit
;
if
(
cd
.
alias
&&
dataManager
.
GetCodePointer
(
cd
.
alias
)
!=
dataManager
.
datas_end
)
{
if
(
cd
.
alias
&&
dataManager
.
GetCodePointer
(
cd
.
alias
)
!=
dataManager
.
datas_end
()
)
{
target
=
dataManager
.
GetCodePointer
(
cd
.
alias
);
target
=
dataManager
.
GetCodePointer
(
cd
.
alias
);
}
}
if
(
target
->
second
.
setcode
[
0
])
{
if
(
target
->
second
.
setcode
[
0
])
{
...
...
gframe/network.h
View file @
c7d75f7d
...
@@ -208,29 +208,28 @@ inline unsigned int GetPosition(unsigned char* qbuf, int offset) {
...
@@ -208,29 +208,28 @@ inline unsigned int GetPosition(unsigned char* qbuf, int offset) {
class
DuelMode
{
class
DuelMode
{
public:
public:
virtual
~
DuelMode
()
{}
DuelMode
()
=
default
;
virtual
void
Chat
(
DuelPlayer
*
dp
,
unsigned
char
*
pdata
,
int
len
)
{}
virtual
~
DuelMode
()
=
default
;
virtual
void
JoinGame
(
DuelPlayer
*
dp
,
unsigned
char
*
pdata
,
bool
is_creater
)
{}
virtual
void
Chat
(
DuelPlayer
*
dp
,
unsigned
char
*
pdata
,
int
len
)
=
0
;
virtual
void
LeaveGame
(
DuelPlayer
*
dp
)
{}
virtual
void
JoinGame
(
DuelPlayer
*
dp
,
unsigned
char
*
pdata
,
bool
is_creater
)
=
0
;
virtual
void
ToDuelist
(
DuelPlayer
*
dp
)
{}
virtual
void
LeaveGame
(
DuelPlayer
*
dp
)
=
0
;
virtual
void
ToObserver
(
DuelPlayer
*
dp
)
{}
virtual
void
ToDuelist
(
DuelPlayer
*
dp
)
=
0
;
virtual
void
PlayerReady
(
DuelPlayer
*
dp
,
bool
is_ready
)
{}
virtual
void
ToObserver
(
DuelPlayer
*
dp
)
=
0
;
virtual
void
PlayerKick
(
DuelPlayer
*
dp
,
unsigned
char
pos
)
{}
virtual
void
PlayerReady
(
DuelPlayer
*
dp
,
bool
is_ready
)
=
0
;
virtual
void
UpdateDeck
(
DuelPlayer
*
dp
,
unsigned
char
*
pdata
,
int
len
)
{}
virtual
void
PlayerKick
(
DuelPlayer
*
dp
,
unsigned
char
pos
)
=
0
;
virtual
void
StartDuel
(
DuelPlayer
*
dp
)
{}
virtual
void
UpdateDeck
(
DuelPlayer
*
dp
,
unsigned
char
*
pdata
,
int
len
)
=
0
;
virtual
void
HandResult
(
DuelPlayer
*
dp
,
unsigned
char
res
)
{}
virtual
void
StartDuel
(
DuelPlayer
*
dp
)
=
0
;
virtual
void
TPResult
(
DuelPlayer
*
dp
,
unsigned
char
tp
)
{}
virtual
void
HandResult
(
DuelPlayer
*
dp
,
unsigned
char
res
)
=
0
;
virtual
void
Process
()
{}
virtual
void
TPResult
(
DuelPlayer
*
dp
,
unsigned
char
tp
)
=
0
;
virtual
int
Analyze
(
char
*
msgbuffer
,
unsigned
int
len
)
{
virtual
void
Process
()
=
0
;
return
0
;
virtual
int
Analyze
(
unsigned
char
*
msgbuffer
,
unsigned
int
len
)
=
0
;
}
virtual
void
Surrender
(
DuelPlayer
*
dp
)
=
0
;
virtual
void
Surrender
(
DuelPlayer
*
dp
)
{}
virtual
void
GetResponse
(
DuelPlayer
*
dp
,
unsigned
char
*
pdata
,
unsigned
int
len
)
=
0
;
virtual
void
GetResponse
(
DuelPlayer
*
dp
,
unsigned
char
*
pdata
,
unsigned
int
len
)
{}
virtual
void
TimeConfirm
(
DuelPlayer
*
dp
)
=
0
;
virtual
void
TimeConfirm
(
DuelPlayer
*
dp
)
{}
#ifdef YGOPRO_SERVER_MODE
#ifdef YGOPRO_SERVER_MODE
virtual
void
RequestField
(
DuelPlayer
*
dp
)
{}
virtual
void
RequestField
(
DuelPlayer
*
dp
)
=
0
;
#endif
#endif
virtual
void
EndDuel
()
{}
virtual
void
EndDuel
()
=
0
;
public:
public:
event
*
etimer
{
nullptr
};
event
*
etimer
{
nullptr
};
...
...
gframe/replay_mode.cpp
View file @
c7d75f7d
...
@@ -234,7 +234,7 @@ bool ReplayMode::StartDuel() {
...
@@ -234,7 +234,7 @@ bool ReplayMode::StartDuel() {
}
}
cur_replay
.
ReadData
(
filename
,
slen
);
cur_replay
.
ReadData
(
filename
,
slen
);
filename
[
slen
]
=
0
;
filename
[
slen
]
=
0
;
if
(
!
preload_script
(
pduel
,
filename
,
0
))
{
if
(
!
preload_script
(
pduel
,
filename
))
{
return
false
;
return
false
;
}
}
}
}
...
...
gframe/single_duel.cpp
View file @
c7d75f7d
...
@@ -575,7 +575,7 @@ void SingleDuel::TPResult(DuelPlayer* dp, unsigned char tp) {
...
@@ -575,7 +575,7 @@ void SingleDuel::TPResult(DuelPlayer* dp, unsigned char tp) {
set_player_info
(
pduel
,
0
,
host_info
.
start_lp
,
host_info
.
start_hand
,
host_info
.
draw_count
);
set_player_info
(
pduel
,
0
,
host_info
.
start_lp
,
host_info
.
start_hand
,
host_info
.
draw_count
);
set_player_info
(
pduel
,
1
,
host_info
.
start_lp
,
host_info
.
start_hand
,
host_info
.
draw_count
);
set_player_info
(
pduel
,
1
,
host_info
.
start_lp
,
host_info
.
start_hand
,
host_info
.
draw_count
);
#ifdef YGOPRO_SERVER_MODE
#ifdef YGOPRO_SERVER_MODE
preload_script
(
pduel
,
"./script/special.lua"
,
0
);
preload_script
(
pduel
,
"./script/special.lua"
);
#endif
#endif
unsigned
int
opt
=
(
unsigned
int
)
host_info
.
duel_rule
<<
16
;
unsigned
int
opt
=
(
unsigned
int
)
host_info
.
duel_rule
<<
16
;
if
(
host_info
.
no_shuffle_deck
)
if
(
host_info
.
no_shuffle_deck
)
...
...
gframe/single_duel.h
View file @
c7d75f7d
...
@@ -10,27 +10,27 @@ namespace ygo {
...
@@ -10,27 +10,27 @@ namespace ygo {
class
SingleDuel
:
public
DuelMode
{
class
SingleDuel
:
public
DuelMode
{
public:
public:
SingleDuel
(
bool
is_match
);
SingleDuel
(
bool
is_match
);
virtual
~
SingleDuel
()
;
~
SingleDuel
()
override
;
v
irtual
void
Chat
(
DuelPlayer
*
dp
,
unsigned
char
*
pdata
,
int
len
)
;
v
oid
Chat
(
DuelPlayer
*
dp
,
unsigned
char
*
pdata
,
int
len
)
override
;
v
irtual
void
JoinGame
(
DuelPlayer
*
dp
,
unsigned
char
*
pdata
,
bool
is_creater
)
;
v
oid
JoinGame
(
DuelPlayer
*
dp
,
unsigned
char
*
pdata
,
bool
is_creater
)
override
;
v
irtual
void
LeaveGame
(
DuelPlayer
*
dp
)
;
v
oid
LeaveGame
(
DuelPlayer
*
dp
)
override
;
v
irtual
void
ToDuelist
(
DuelPlayer
*
dp
)
;
v
oid
ToDuelist
(
DuelPlayer
*
dp
)
override
;
v
irtual
void
ToObserver
(
DuelPlayer
*
dp
)
;
v
oid
ToObserver
(
DuelPlayer
*
dp
)
override
;
v
irtual
void
PlayerReady
(
DuelPlayer
*
dp
,
bool
ready
)
;
v
oid
PlayerReady
(
DuelPlayer
*
dp
,
bool
ready
)
override
;
v
irtual
void
PlayerKick
(
DuelPlayer
*
dp
,
unsigned
char
pos
)
;
v
oid
PlayerKick
(
DuelPlayer
*
dp
,
unsigned
char
pos
)
override
;
v
irtual
void
UpdateDeck
(
DuelPlayer
*
dp
,
unsigned
char
*
pdata
,
int
len
)
;
v
oid
UpdateDeck
(
DuelPlayer
*
dp
,
unsigned
char
*
pdata
,
int
len
)
override
;
v
irtual
void
StartDuel
(
DuelPlayer
*
dp
)
;
v
oid
StartDuel
(
DuelPlayer
*
dp
)
override
;
v
irtual
void
HandResult
(
DuelPlayer
*
dp
,
unsigned
char
res
)
;
v
oid
HandResult
(
DuelPlayer
*
dp
,
unsigned
char
res
)
override
;
v
irtual
void
TPResult
(
DuelPlayer
*
dp
,
unsigned
char
tp
)
;
v
oid
TPResult
(
DuelPlayer
*
dp
,
unsigned
char
tp
)
override
;
v
irtual
void
Process
()
;
v
oid
Process
()
override
;
v
irtual
void
Surrender
(
DuelPlayer
*
dp
)
;
v
oid
Surrender
(
DuelPlayer
*
dp
)
override
;
virtual
int
Analyze
(
unsigned
char
*
msgbuffer
,
unsigned
int
len
)
;
int
Analyze
(
unsigned
char
*
msgbuffer
,
unsigned
int
len
)
override
;
v
irtual
void
GetResponse
(
DuelPlayer
*
dp
,
unsigned
char
*
pdata
,
unsigned
int
len
)
;
v
oid
GetResponse
(
DuelPlayer
*
dp
,
unsigned
char
*
pdata
,
unsigned
int
len
)
override
;
v
irtual
void
TimeConfirm
(
DuelPlayer
*
dp
)
;
v
oid
TimeConfirm
(
DuelPlayer
*
dp
)
override
;
#ifdef YGOPRO_SERVER_MODE
#ifdef YGOPRO_SERVER_MODE
v
irtual
void
RequestField
(
DuelPlayer
*
dp
)
;
v
oid
RequestField
(
DuelPlayer
*
dp
)
override
;
#endif
#endif
v
irtual
void
EndDuel
()
;
v
oid
EndDuel
()
override
;
void
DuelEndProc
();
void
DuelEndProc
();
void
WaitforResponse
(
int
playerid
);
void
WaitforResponse
(
int
playerid
);
...
...
gframe/single_mode.cpp
View file @
c7d75f7d
...
@@ -60,11 +60,11 @@ int SingleMode::SinglePlayThread() {
...
@@ -60,11 +60,11 @@ int SingleMode::SinglePlayThread() {
if
(
open_file
)
{
if
(
open_file
)
{
open_file
=
false
;
open_file
=
false
;
slen
=
BufferIO
::
EncodeUTF8
(
open_file_name
,
filename
);
slen
=
BufferIO
::
EncodeUTF8
(
open_file_name
,
filename
);
if
(
!
preload_script
(
pduel
,
filename
,
0
))
{
if
(
!
preload_script
(
pduel
,
filename
))
{
wchar_t
fname
[
256
];
wchar_t
fname
[
256
];
myswprintf
(
fname
,
L"./single/%ls"
,
open_file_name
);
myswprintf
(
fname
,
L"./single/%ls"
,
open_file_name
);
slen
=
BufferIO
::
EncodeUTF8
(
fname
,
filename
);
slen
=
BufferIO
::
EncodeUTF8
(
fname
,
filename
);
if
(
!
preload_script
(
pduel
,
filename
,
0
))
if
(
!
preload_script
(
pduel
,
filename
))
slen
=
0
;
slen
=
0
;
}
}
}
else
{
}
else
{
...
@@ -72,7 +72,7 @@ int SingleMode::SinglePlayThread() {
...
@@ -72,7 +72,7 @@ int SingleMode::SinglePlayThread() {
wchar_t
fname
[
256
];
wchar_t
fname
[
256
];
myswprintf
(
fname
,
L"./single/%ls"
,
name
);
myswprintf
(
fname
,
L"./single/%ls"
,
name
);
slen
=
BufferIO
::
EncodeUTF8
(
fname
,
filename
);
slen
=
BufferIO
::
EncodeUTF8
(
fname
,
filename
);
if
(
!
preload_script
(
pduel
,
filename
,
0
))
if
(
!
preload_script
(
pduel
,
filename
))
slen
=
0
;
slen
=
0
;
}
}
if
(
slen
==
0
)
{
if
(
slen
==
0
)
{
...
...
gframe/tag_duel.cpp
View file @
c7d75f7d
...
@@ -553,7 +553,7 @@ void TagDuel::TPResult(DuelPlayer* dp, unsigned char tp) {
...
@@ -553,7 +553,7 @@ void TagDuel::TPResult(DuelPlayer* dp, unsigned char tp) {
set_message_handler
(
TagDuel
::
MessageHandler
);
set_message_handler
(
TagDuel
::
MessageHandler
);
pduel
=
create_duel
(
duel_seed
);
pduel
=
create_duel
(
duel_seed
);
#ifdef YGOPRO_SERVER_MODE
#ifdef YGOPRO_SERVER_MODE
preload_script
(
pduel
,
"./script/special.lua"
,
0
);
preload_script
(
pduel
,
"./script/special.lua"
);
#endif
#endif
set_player_info
(
pduel
,
0
,
host_info
.
start_lp
,
host_info
.
start_hand
,
host_info
.
draw_count
);
set_player_info
(
pduel
,
0
,
host_info
.
start_lp
,
host_info
.
start_hand
,
host_info
.
draw_count
);
set_player_info
(
pduel
,
1
,
host_info
.
start_lp
,
host_info
.
start_hand
,
host_info
.
draw_count
);
set_player_info
(
pduel
,
1
,
host_info
.
start_lp
,
host_info
.
start_hand
,
host_info
.
draw_count
);
...
...
gframe/tag_duel.h
View file @
c7d75f7d
...
@@ -10,27 +10,27 @@ namespace ygo {
...
@@ -10,27 +10,27 @@ namespace ygo {
class
TagDuel
:
public
DuelMode
{
class
TagDuel
:
public
DuelMode
{
public:
public:
TagDuel
();
TagDuel
();
virtual
~
TagDuel
()
;
~
TagDuel
()
override
;
v
irtual
void
Chat
(
DuelPlayer
*
dp
,
unsigned
char
*
pdata
,
int
len
)
;
v
oid
Chat
(
DuelPlayer
*
dp
,
unsigned
char
*
pdata
,
int
len
)
override
;
v
irtual
void
JoinGame
(
DuelPlayer
*
dp
,
unsigned
char
*
pdata
,
bool
is_creater
)
;
v
oid
JoinGame
(
DuelPlayer
*
dp
,
unsigned
char
*
pdata
,
bool
is_creater
)
override
;
v
irtual
void
LeaveGame
(
DuelPlayer
*
dp
)
;
v
oid
LeaveGame
(
DuelPlayer
*
dp
)
override
;
v
irtual
void
ToDuelist
(
DuelPlayer
*
dp
)
;
v
oid
ToDuelist
(
DuelPlayer
*
dp
)
override
;
v
irtual
void
ToObserver
(
DuelPlayer
*
dp
)
;
v
oid
ToObserver
(
DuelPlayer
*
dp
)
override
;
v
irtual
void
PlayerReady
(
DuelPlayer
*
dp
,
bool
ready
)
;
v
oid
PlayerReady
(
DuelPlayer
*
dp
,
bool
ready
)
override
;
v
irtual
void
PlayerKick
(
DuelPlayer
*
dp
,
unsigned
char
pos
)
;
v
oid
PlayerKick
(
DuelPlayer
*
dp
,
unsigned
char
pos
)
override
;
v
irtual
void
UpdateDeck
(
DuelPlayer
*
dp
,
unsigned
char
*
pdata
,
int
len
)
;
v
oid
UpdateDeck
(
DuelPlayer
*
dp
,
unsigned
char
*
pdata
,
int
len
)
override
;
v
irtual
void
StartDuel
(
DuelPlayer
*
dp
)
;
v
oid
StartDuel
(
DuelPlayer
*
dp
)
override
;
v
irtual
void
HandResult
(
DuelPlayer
*
dp
,
unsigned
char
res
)
;
v
oid
HandResult
(
DuelPlayer
*
dp
,
unsigned
char
res
)
override
;
v
irtual
void
TPResult
(
DuelPlayer
*
dp
,
unsigned
char
tp
)
;
v
oid
TPResult
(
DuelPlayer
*
dp
,
unsigned
char
tp
)
override
;
v
irtual
void
Process
()
;
v
oid
Process
()
override
;
v
irtual
void
Surrender
(
DuelPlayer
*
dp
)
;
v
oid
Surrender
(
DuelPlayer
*
dp
)
override
;
virtual
int
Analyze
(
unsigned
char
*
msgbuffer
,
unsigned
int
len
)
;
int
Analyze
(
unsigned
char
*
msgbuffer
,
unsigned
int
len
)
override
;
v
irtual
void
GetResponse
(
DuelPlayer
*
dp
,
unsigned
char
*
pdata
,
unsigned
int
len
)
;
v
oid
GetResponse
(
DuelPlayer
*
dp
,
unsigned
char
*
pdata
,
unsigned
int
len
)
override
;
v
irtual
void
TimeConfirm
(
DuelPlayer
*
dp
)
;
v
oid
TimeConfirm
(
DuelPlayer
*
dp
)
override
;
#ifdef YGOPRO_SERVER_MODE
#ifdef YGOPRO_SERVER_MODE
v
irtual
void
RequestField
(
DuelPlayer
*
dp
)
;
v
oid
RequestField
(
DuelPlayer
*
dp
)
override
;
#endif
#endif
v
irtual
void
EndDuel
()
;
v
oid
EndDuel
()
override
;
void
DuelEndProc
();
void
DuelEndProc
();
void
WaitforResponse
(
int
playerid
);
void
WaitforResponse
(
int
playerid
);
...
...
ocgcore
@
eb36d391
Subproject commit
1701452d060a740c9d9cb796b2711550f5fb517e
Subproject commit
eb36d391ec450960e526032698e97b95376b4a32
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