Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Y
YGOMobile
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
fallenstardust
YGOMobile
Commits
79919218
Commit
79919218
authored
Dec 22, 2023
by
fallenstardust
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
sync ocgcore
parent
e2fcf847
Changes
16
Hide whitespace changes
Inline
Side-by-side
Showing
16 changed files
with
133 additions
and
51 deletions
+133
-51
Classes/gframe/client_card.cpp
Classes/gframe/client_card.cpp
+7
-6
Classes/gframe/client_field.cpp
Classes/gframe/client_field.cpp
+42
-5
Classes/gframe/client_field.h
Classes/gframe/client_field.h
+1
-0
Classes/gframe/game.cpp
Classes/gframe/game.cpp
+32
-0
Classes/gframe/game.h
Classes/gframe/game.h
+7
-4
Classes/gframe/replay_mode.cpp
Classes/gframe/replay_mode.cpp
+8
-3
Classes/gframe/single_duel.cpp
Classes/gframe/single_duel.cpp
+15
-12
Classes/gframe/single_mode.cpp
Classes/gframe/single_mode.cpp
+1
-0
Classes/ocgcore/common.h
Classes/ocgcore/common.h
+0
-1
Classes/ocgcore/duel.cpp
Classes/ocgcore/duel.cpp
+9
-0
Classes/ocgcore/duel.h
Classes/ocgcore/duel.h
+0
-8
Classes/ocgcore/interpreter.cpp
Classes/ocgcore/interpreter.cpp
+3
-2
Classes/ocgcore/interpreter.h
Classes/ocgcore/interpreter.h
+0
-1
Classes/ocgcore/libdebug.cpp
Classes/ocgcore/libdebug.cpp
+3
-3
Classes/ocgcore/mtrandom.h
Classes/ocgcore/mtrandom.h
+0
-1
Classes/ocgcore/ocgapi.cpp
Classes/ocgcore/ocgapi.cpp
+5
-5
No files found.
Classes/gframe/client_card.cpp
View file @
79919218
...
...
@@ -40,9 +40,10 @@ void ClientCard::UpdateInfo(unsigned char* buf) {
ClearData
();
return
;
}
int
pdata
;
if
(
flag
&
QUERY_CODE
)
{
pdata
=
BufferIO
::
ReadInt32
(
buf
);
int
pdata
=
BufferIO
::
ReadInt32
(
buf
);
if
(
!
pdata
)
ClearData
();
if
((
location
==
LOCATION_HAND
)
&&
((
unsigned
int
)
pdata
!=
code
))
{
code
=
pdata
;
mainGame
->
dField
.
MoveCard
(
this
,
5
);
...
...
@@ -50,7 +51,7 @@ void ClientCard::UpdateInfo(unsigned char* buf) {
code
=
pdata
;
}
if
(
flag
&
QUERY_POSITION
)
{
pdata
=
(
BufferIO
::
ReadInt32
(
buf
)
>>
24
)
&
0xff
;
int
pdata
=
(
BufferIO
::
ReadInt32
(
buf
)
>>
24
)
&
0xff
;
if
((
location
&
(
LOCATION_EXTRA
|
LOCATION_REMOVED
))
&&
(
u8
)
pdata
!=
position
)
{
position
=
pdata
;
mainGame
->
dField
.
MoveCard
(
this
,
1
);
...
...
@@ -62,14 +63,14 @@ void ClientCard::UpdateInfo(unsigned char* buf) {
if
(
flag
&
QUERY_TYPE
)
type
=
BufferIO
::
ReadInt32
(
buf
);
if
(
flag
&
QUERY_LEVEL
)
{
pdata
=
BufferIO
::
ReadInt32
(
buf
);
int
pdata
=
BufferIO
::
ReadInt32
(
buf
);
if
(
level
!=
(
unsigned
int
)
pdata
)
{
level
=
pdata
;
myswprintf
(
lvstring
,
L"L%d"
,
level
);
}
}
if
(
flag
&
QUERY_RANK
)
{
pdata
=
BufferIO
::
ReadInt32
(
buf
);
int
pdata
=
BufferIO
::
ReadInt32
(
buf
);
if
(
pdata
&&
rank
!=
(
unsigned
int
)
pdata
)
{
rank
=
pdata
;
myswprintf
(
lvstring
,
L"R%d"
,
rank
);
...
...
@@ -158,7 +159,7 @@ void ClientCard::UpdateInfo(unsigned char* buf) {
myswprintf
(
rscstring
,
L"%d"
,
rscale
);
}
if
(
flag
&
QUERY_LINK
)
{
pdata
=
BufferIO
::
ReadInt32
(
buf
);
int
pdata
=
BufferIO
::
ReadInt32
(
buf
);
if
(
link
!=
(
unsigned
int
)
pdata
)
{
link
=
pdata
;
}
...
...
Classes/gframe/client_field.cpp
View file @
79919218
...
...
@@ -29,6 +29,45 @@ ClientField::ClientField() {
}
rnd
.
reset
((
uint_fast32_t
)
std
::
random_device
()());
}
ClientField
::~
ClientField
()
{
for
(
int
i
=
0
;
i
<
2
;
++
i
)
{
for
(
auto
card
:
deck
[
i
])
{
delete
card
;
}
deck
[
i
].
clear
();
for
(
auto
card
:
hand
[
i
])
{
delete
card
;
}
hand
[
i
].
clear
();
for
(
auto
card
:
mzone
[
i
])
{
if
(
card
)
delete
card
;
card
=
nullptr
;
}
for
(
auto
card
:
szone
[
i
])
{
if
(
card
)
delete
card
;
card
=
nullptr
;
}
for
(
auto
card
:
grave
[
i
])
{
delete
card
;
}
grave
[
i
].
clear
();
for
(
auto
card
:
remove
[
i
])
{
delete
card
;
}
remove
[
i
].
clear
();
for
(
auto
card
:
extra
[
i
])
{
delete
card
;
}
extra
[
i
].
clear
();
}
for
(
auto
card
:
overlay_cards
)
{
delete
card
;
}
overlay_cards
.
clear
();
}
void
ClientField
::
Clear
()
{
for
(
int
i
=
0
;
i
<
2
;
++
i
)
{
for
(
auto
cit
=
deck
[
i
].
begin
();
cit
!=
deck
[
i
].
end
();
++
cit
)
...
...
@@ -529,13 +568,11 @@ void ClientField::ShowChainCard() {
mainGame
->
stCardPos
[
i
]
->
setOverrideColor
(
0xff0000ff
);
if
(
selectable_cards
[
i
]
->
overlayTarget
->
controler
)
mainGame
->
stCardPos
[
i
]
->
setBackgroundColor
(
0xff5a5a5a
);
else
mainGame
->
stCardPos
[
i
]
->
setBackgroundColor
(
0xff56649f
);
else
mainGame
->
stCardPos
[
i
]
->
setBackgroundColor
(
0xff56649f
);
}
else
{
if
(
selectable_cards
[
i
]
->
controler
)
mainGame
->
stCardPos
[
i
]
->
setBackgroundColor
(
0xff5a5a5a
);
else
mainGame
->
stCardPos
[
i
]
->
setBackgroundColor
(
0xff56649f
);
else
mainGame
->
stCardPos
[
i
]
->
setBackgroundColor
(
0xff56649f
);
}
mainGame
->
stCardPos
[
i
]
->
setVisible
(
true
);
mainGame
->
stCardPos
[
i
]
->
setRelativePosition
(
rect
<
s32
>
((
startpos
+
i
*
125
)
*
mainGame
->
xScale
,
40
*
mainGame
->
yScale
,
(
startpos
+
120
+
i
*
125
)
*
mainGame
->
xScale
,
60
*
mainGame
->
yScale
));
...
...
@@ -598,7 +635,7 @@ void ClientField::ShowLocationCard() {
mainGame
->
stDisplayPos
[
i
]
->
setOverrideColor
(
0xff0000ff
);
if
(
display_cards
[
i
]
->
controler
)
mainGame
->
stDisplayPos
[
i
]
->
setBackgroundColor
(
0xff5a5a5a
);
else
else
mainGame
->
stDisplayPos
[
i
]
->
setBackgroundColor
(
0xff56649f
);
}
else
{
if
(
display_cards
[
i
]
->
controler
)
...
...
Classes/gframe/client_field.h
View file @
79919218
...
...
@@ -92,6 +92,7 @@ public:
mt19937
rnd
;
ClientField
();
~
ClientField
();
void
Clear
();
void
Initial
(
int
player
,
int
deckc
,
int
extrac
);
ClientCard
*
GetCard
(
int
controler
,
int
location
,
int
sequence
,
int
sub_seq
=
0
);
...
...
Classes/gframe/game.cpp
View file @
79919218
...
...
@@ -27,6 +27,38 @@ namespace ygo {
Game
*
mainGame
;
void
DuelInfo
::
Clear
()
{
isStarted
=
false
;
isFinished
=
false
;
isReplay
=
false
;
isReplaySkiping
=
false
;
isFirst
=
false
;
isTag
=
false
;
isSingleMode
=
false
;
is_shuffling
=
false
;
tag_player
[
0
]
=
false
;
tag_player
[
1
]
=
false
;
isReplaySwapped
=
false
;
lp
[
0
]
=
0
;
lp
[
1
]
=
0
;
start_lp
=
0
;
duel_rule
=
0
;
turn
=
0
;
curMsg
=
0
;
hostname
[
0
]
=
0
;
clientname
[
0
]
=
0
;
hostname_tag
[
0
]
=
0
;
clientname_tag
[
0
]
=
0
;
strLP
[
0
][
0
]
=
0
;
strLP
[
1
][
0
]
=
0
;
vic_string
=
0
;
player_type
=
0
;
time_player
=
0
;
time_limit
=
0
;
time_left
[
0
]
=
0
;
time_left
[
1
]
=
0
;
}
void
Game
::
process
(
irr
::
SEvent
&
event
)
{
if
(
event
.
EventType
==
EET_MOUSE_INPUT_EVENT
)
{
s32
x
=
event
.
MouseInput
.
X
;
...
...
Classes/gframe/game.h
View file @
79919218
...
...
@@ -98,6 +98,9 @@ struct DuelInfo {
unsigned
char
time_player
{
0
};
unsigned
short
time_limit
{
0
};
unsigned
short
time_left
[
2
]{
0
};
void
Clear
();
int
card_count
[
2
];
int
total_attack
[
2
];
wchar_t
str_time_left
[
2
][
16
];
...
...
@@ -918,11 +921,11 @@ extern Game* mainGame;
#define BUTTON_BIG_CARD_ZOOM_OUT 382
#define BUTTON_BIG_CARD_ORIG_SIZE 383
//
gframe
messages
//
STOC_GAME_MSG
messages
#define MSG_WAITING 3
#define MSG_START 4
#define MSG_UPDATE_DATA 6
#define MSG_UPDATE_CARD 7
#define MSG_UPDATE_DATA 6
// flag=0: clear
#define MSG_UPDATE_CARD 7
// flag=QUERY_CODE, code=0: clear
#define MSG_REQUEST_DECK 8
#define MSG_REFRESH_DECK 34
#define MSG_CARD_SELECTED 80
...
...
@@ -937,7 +940,7 @@ extern Game* mainGame;
#define AVAIL_SC 0x8
#define AVAIL_OCGTCG (AVAIL_OCG|AVAIL_TCG)
#define DEFAULT_DUEL_RULE
5
#define DEFAULT_DUEL_RULE 5
#define CARD_ARTWORK_VERSIONS_OFFSET 10
#define MAX_LAYER_COUNT 6
...
...
Classes/gframe/replay_mode.cpp
View file @
79919218
...
...
@@ -57,6 +57,7 @@ bool ReplayMode::ReadReplayResponse() {
}
int
ReplayMode
::
ReplayThread
()
{
const
ReplayHeader
&
rh
=
cur_replay
.
pheader
;
mainGame
->
dInfo
.
Clear
();
mainGame
->
dInfo
.
isFirst
=
true
;
mainGame
->
dInfo
.
isTag
=
!!
(
rh
.
flag
&
REPLAY_TAG
);
mainGame
->
dInfo
.
isSingleMode
=
!!
(
rh
.
flag
&
REPLAY_SINGLE_MODE
);
...
...
@@ -276,7 +277,6 @@ void ReplayMode::Restart(bool refresh) {
mainGame
->
dField
.
Clear
();
//mainGame->device->setEventReceiver(&mainGame->dField);
cur_replay
.
Rewind
();
//mainGame->dInfo.isFirst = true;
mainGame
->
dInfo
.
tag_player
[
0
]
=
false
;
mainGame
->
dInfo
.
tag_player
[
1
]
=
false
;
if
(
!
StartDuel
())
{
...
...
@@ -286,9 +286,14 @@ void ReplayMode::Restart(bool refresh) {
mainGame
->
dField
.
RefreshAllCards
();
mainGame
->
dInfo
.
isStarted
=
true
;
mainGame
->
dInfo
.
isFinished
=
false
;
//mainGame->dInfo.isReplay = true;
}
skip_turn
=
0
;
if
(
mainGame
->
dInfo
.
isReplaySwapped
){
std
::
swap
(
mainGame
->
dInfo
.
lp
[
0
],
mainGame
->
dInfo
.
lp
[
1
]);
std
::
swap
(
mainGame
->
dInfo
.
strLP
[
0
],
mainGame
->
dInfo
.
strLP
[
1
]);
std
::
swap
(
mainGame
->
dInfo
.
hostname
,
mainGame
->
dInfo
.
clientname
);
std
::
swap
(
mainGame
->
dInfo
.
hostname_tag
,
mainGame
->
dInfo
.
clientname_tag
);
}
skip_turn
=
0
;
}
void
ReplayMode
::
Undo
()
{
if
(
skip_step
>
0
||
current_step
==
0
)
...
...
Classes/gframe/single_duel.cpp
View file @
79919218
...
...
@@ -463,16 +463,17 @@ void SingleDuel::TPResult(DuelPlayer* dp, unsigned char tp) {
BufferIO
::
WriteInt8
(
pbuf
,
host_info
.
duel_rule
);
BufferIO
::
WriteInt32
(
pbuf
,
host_info
.
start_lp
);
BufferIO
::
WriteInt32
(
pbuf
,
host_info
.
start_lp
);
BufferIO
::
WriteInt16
(
pbuf
,
query_field_count
(
pduel
,
0
,
0x1
));
BufferIO
::
WriteInt16
(
pbuf
,
query_field_count
(
pduel
,
0
,
0x40
));
BufferIO
::
WriteInt16
(
pbuf
,
query_field_count
(
pduel
,
1
,
0x1
));
BufferIO
::
WriteInt16
(
pbuf
,
query_field_count
(
pduel
,
1
,
0x40
));
BufferIO
::
WriteInt16
(
pbuf
,
query_field_count
(
pduel
,
0
,
LOCATION_DECK
));
BufferIO
::
WriteInt16
(
pbuf
,
query_field_count
(
pduel
,
0
,
LOCATION_EXTRA
));
BufferIO
::
WriteInt16
(
pbuf
,
query_field_count
(
pduel
,
1
,
LOCATION_DECK
));
BufferIO
::
WriteInt16
(
pbuf
,
query_field_count
(
pduel
,
1
,
LOCATION_EXTRA
));
NetServer
::
SendBufferToPlayer
(
players
[
0
],
STOC_GAME_MSG
,
startbuf
,
19
);
startbuf
[
1
]
=
1
;
NetServer
::
SendBufferToPlayer
(
players
[
1
],
STOC_GAME_MSG
,
startbuf
,
19
);
if
(
!
swapped
)
startbuf
[
1
]
=
0x10
;
else
startbuf
[
1
]
=
0x11
;
else
startbuf
[
1
]
=
0x11
;
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
SendBufferToPlayer
(
*
oit
,
STOC_GAME_MSG
,
startbuf
,
19
);
RefreshExtra
(
0
);
...
...
@@ -1547,14 +1548,16 @@ void SingleDuel::RefreshSingle(int player, int location, int sequence, int flag)
NetServer
::
SendBufferToPlayer
(
players
[
player
],
STOC_GAME_MSG
,
query_buffer
,
len
+
4
);
if
(
len
<=
LEN_HEADER
)
return
;
auto
position
=
GetPosition
(
qbuf
,
12
);
if
(
location
==
LOCATION_REMOVED
&&
(
position
&
POS_FACEDOWN
))
return
;
if
((
location
&
0x90
)
||
((
location
&
0x2c
)
&&
(
position
&
POS_FACEUP
)))
{
NetServer
::
ReSendToPlayer
(
players
[
1
-
player
]);
for
(
auto
pit
=
observers
.
begin
();
pit
!=
observers
.
end
();
++
pit
)
NetServer
::
ReSendToPlayer
(
*
pit
);
const
int
clen
=
BufferIO
::
ReadInt32
(
qbuf
);
auto
position
=
GetPosition
(
qbuf
,
8
);
if
(
position
&
POS_FACEDOWN
)
{
BufferIO
::
WriteInt32
(
qbuf
,
QUERY_CODE
);
BufferIO
::
WriteInt32
(
qbuf
,
0
);
memset
(
qbuf
,
0
,
clen
-
12
);
}
NetServer
::
SendBufferToPlayer
(
players
[
1
-
player
],
STOC_GAME_MSG
,
query_buffer
,
len
+
4
);
for
(
auto
pit
=
observers
.
begin
();
pit
!=
observers
.
end
();
++
pit
)
NetServer
::
ReSendToPlayer
(
*
pit
);
}
uint32
SingleDuel
::
MessageHandler
(
intptr_t
fduel
,
uint32
type
)
{
if
(
!
enable_log
)
...
...
Classes/gframe/single_mode.cpp
View file @
79919218
...
...
@@ -32,6 +32,7 @@ int SingleMode::SinglePlayThread() {
const
int
start_lp
=
8000
;
const
int
start_hand
=
5
;
const
int
draw_count
=
1
;
mainGame
->
dInfo
.
Clear
();
int
opt
=
0
;
std
::
random_device
rd
;
unsigned
int
seed
=
rd
();
...
...
Classes/ocgcore/common.h
View file @
79919218
...
...
@@ -30,7 +30,6 @@ typedef signed char int8;
#define TRUE 1
#define FALSE 0
#define SIZE_MESSAGE_BUFFER 0x2000
#define SIZE_QUERY_BUFFER 0x4000
#define PROCESSOR_BUFFER_LEN 0x0fffffff
#define PROCESSOR_FLAG 0xf0000000
...
...
Classes/ocgcore/duel.cpp
View file @
79919218
...
...
@@ -5,6 +5,7 @@
* Author: Argon
*/
#include <cstring>
#include "duel.h"
#include "interpreter.h"
#include "field.h"
...
...
@@ -13,6 +14,14 @@
#include "group.h"
#include "ocgapi.h"
inline
void
write_buffer_vector
(
std
::
vector
<
byte
>&
buffer
,
const
void
*
data
,
int
size
)
{
if
(
size
>
0
)
{
const
auto
len
=
buffer
.
size
();
buffer
.
resize
(
len
+
size
);
std
::
memcpy
(
&
buffer
[
len
],
data
,
size
);
}
}
duel
::
duel
()
{
lua
=
new
interpreter
(
this
);
game_field
=
new
field
(
this
);
...
...
Classes/ocgcore/duel.h
View file @
79919218
...
...
@@ -19,14 +19,6 @@ class effect;
class
field
;
class
interpreter
;
inline
void
write_buffer_vector
(
std
::
vector
<
byte
>&
buffer
,
const
void
*
data
,
int
size
)
{
if
(
size
>
0
)
{
const
auto
len
=
buffer
.
size
();
buffer
.
resize
(
len
+
size
);
std
::
memcpy
(
&
buffer
[
len
],
data
,
size
);
}
}
class
duel
{
public:
using
card_set
=
std
::
set
<
card
*
,
card_sort
>
;
...
...
Classes/ocgcore/interpreter.cpp
View file @
79919218
...
...
@@ -5,6 +5,7 @@
* Author: Argon
*/
#include <cstring>
#include "duel.h"
#include "group.h"
#include "card.h"
...
...
@@ -17,7 +18,7 @@ interpreter::interpreter(duel* pd): coroutines(256) {
lua_state
=
luaL_newstate
();
current_state
=
lua_state
;
pduel
=
pd
;
memcpy
(
lua_getextraspace
(
lua_state
),
&
pd
,
LUA_EXTRASPACE
);
//set_duel_info
std
::
memcpy
(
lua_getextraspace
(
lua_state
),
&
pd
,
LUA_EXTRASPACE
);
//set_duel_info
no_action
=
0
;
call_depth
=
0
;
//Initial
...
...
@@ -663,6 +664,6 @@ int32 interpreter::get_function_handle(lua_State* L, int32 index) {
}
duel
*
interpreter
::
get_duel_info
(
lua_State
*
L
)
{
duel
*
pduel
;
memcpy
(
&
pduel
,
lua_getextraspace
(
L
),
LUA_EXTRASPACE
);
std
::
memcpy
(
&
pduel
,
lua_getextraspace
(
L
),
LUA_EXTRASPACE
);
return
pduel
;
}
Classes/ocgcore/interpreter.h
View file @
79919218
...
...
@@ -14,7 +14,6 @@
#include <list>
#include <vector>
#include <cstdio>
#include <cstring>
class
card
;
class
effect
;
...
...
Classes/ocgcore/libdebug.cpp
View file @
79919218
...
...
@@ -5,7 +5,7 @@
* Author: Argon
*/
#include <
string.h
>
#include <
cstring
>
#include "scriptlib.h"
#include "duel.h"
#include "field.h"
...
...
@@ -170,7 +170,7 @@ int32 scriptlib::debug_set_ai_name(lua_State *L) {
duel
*
pduel
=
interpreter
::
get_duel_info
(
L
);
pduel
->
write_buffer8
(
MSG_AI_NAME
);
const
char
*
pstr
=
lua_tostring
(
L
,
1
);
int
len
=
(
int
)
strlen
(
pstr
);
int
len
=
(
int
)
st
d
::
st
rlen
(
pstr
);
if
(
len
>
100
)
len
=
100
;
pduel
->
write_buffer16
(
len
);
...
...
@@ -184,7 +184,7 @@ int32 scriptlib::debug_show_hint(lua_State *L) {
duel
*
pduel
=
interpreter
::
get_duel_info
(
L
);
pduel
->
write_buffer8
(
MSG_SHOW_HINT
);
const
char
*
pstr
=
lua_tostring
(
L
,
1
);
int
len
=
(
int
)
strlen
(
pstr
);
int
len
=
(
int
)
st
d
::
st
rlen
(
pstr
);
if
(
len
>
1024
)
len
=
1024
;
pduel
->
write_buffer16
(
len
);
...
...
Classes/ocgcore/mtrandom.h
View file @
79919218
...
...
@@ -8,7 +8,6 @@
#ifndef MTRANDOM_H_
#define MTRANDOM_H_
#include <cstdint>
#include <random>
class
mt19937
{
...
...
Classes/ocgcore/ocgapi.cpp
View file @
79919218
...
...
@@ -4,8 +4,8 @@
* Created on: 2010-5-2
* Author: Argon
*/
#include <
stdio.h
>
#include <
string.h
>
#include <
cstdio
>
#include <
cstring
>
#include "ocgapi.h"
#include "duel.h"
#include "card.h"
...
...
@@ -41,11 +41,11 @@ uint32 handle_message(void* pduel, uint32 msg_type) {
}
byte
*
default_script_reader
(
const
char
*
script_name
,
int
*
slen
)
{
FILE
*
fp
;
fp
=
fopen
(
script_name
,
"rb"
);
fp
=
std
::
fopen
(
script_name
,
"rb"
);
if
(
!
fp
)
return
0
;
int
len
=
(
int
)
fread
(
buffer
,
1
,
sizeof
(
buffer
),
fp
);
fclose
(
fp
);
std
::
fclose
(
fp
);
if
(
len
>=
sizeof
(
buffer
))
return
0
;
*
slen
=
len
;
...
...
@@ -120,7 +120,7 @@ extern "C" DECL_DLLEXPORT void set_player_info(intptr_t pduel, int32 playerid, i
pd
->
game_field
->
player
[
playerid
].
draw_count
=
drawcount
;
}
extern
"C"
DECL_DLLEXPORT
void
get_log_message
(
intptr_t
pduel
,
byte
*
buf
)
{
strcpy
((
char
*
)
buf
,
((
duel
*
)
pduel
)
->
strbuffer
);
st
d
::
st
rcpy
((
char
*
)
buf
,
((
duel
*
)
pduel
)
->
strbuffer
);
}
extern
"C"
DECL_DLLEXPORT
int32
get_message
(
intptr_t
pduel
,
byte
*
buf
)
{
int32
len
=
((
duel
*
)
pduel
)
->
read_buffer
(
buf
);
...
...
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