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
nanahira
ygopro
Commits
15800b08
Commit
15800b08
authored
Apr 18, 2024
by
nanahira
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'develop' into server-develop
parents
1a8ea7eb
8dd95bcf
Changes
15
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
15 changed files
with
301 additions
and
79 deletions
+301
-79
cards.cdb
cards.cdb
+0
-0
gframe/CGUITTFont.cpp
gframe/CGUITTFont.cpp
+6
-6
gframe/data_manager.h
gframe/data_manager.h
+7
-7
gframe/drawing.cpp
gframe/drawing.cpp
+3
-3
gframe/duelclient.cpp
gframe/duelclient.cpp
+4
-4
gframe/duelclient.h
gframe/duelclient.h
+16
-8
gframe/game.cpp
gframe/game.cpp
+17
-17
gframe/netserver.cpp
gframe/netserver.cpp
+5
-5
gframe/netserver.h
gframe/netserver.h
+21
-13
gframe/network.h
gframe/network.h
+2
-0
gframe/single_mode.cpp
gframe/single_mode.cpp
+1
-1
lflist.conf
lflist.conf
+206
-11
ocgcore
ocgcore
+1
-1
script
script
+1
-1
strings.conf
strings.conf
+11
-2
No files found.
cards.cdb
View file @
15800b08
No preview for this file type
gframe/CGUITTFont.cpp
View file @
15800b08
...
...
@@ -79,9 +79,9 @@ video::IImage* SGUITTGlyph::createGlyphImage(const FT_Bitmap& bits, video::IVide
const
u32
image_pitch
=
image
->
getPitch
()
/
sizeof
(
u16
);
u16
*
image_data
=
(
u16
*
)
image
->
lock
();
u8
*
glyph_data
=
bits
.
buffer
;
for
(
s32
y
=
0
;
y
<
bits
.
rows
;
++
y
)
{
for
(
s32
y
=
0
;
y
<
(
s32
)
bits
.
rows
;
++
y
)
{
u16
*
row
=
image_data
;
for
(
s32
x
=
0
;
x
<
bits
.
width
;
++
x
)
{
for
(
s32
x
=
0
;
x
<
(
s32
)
bits
.
width
;
++
x
)
{
// Monochrome bitmaps store 8 pixels per byte. The left-most pixel is the bit 0x80.
// So, we go through the data each bit at a time.
if
((
glyph_data
[
y
*
bits
.
pitch
+
(
x
/
8
)]
&
(
0x80
>>
(
x
%
8
)))
!=
0
)
...
...
@@ -105,9 +105,9 @@ video::IImage* SGUITTGlyph::createGlyphImage(const FT_Bitmap& bits, video::IVide
const
u32
image_pitch
=
image
->
getPitch
()
/
sizeof
(
u32
);
u32
*
image_data
=
(
u32
*
)
image
->
lock
();
u8
*
glyph_data
=
bits
.
buffer
;
for
(
s32
y
=
0
;
y
<
bits
.
rows
;
++
y
)
{
for
(
s32
y
=
0
;
y
<
(
s32
)
bits
.
rows
;
++
y
)
{
u8
*
row
=
glyph_data
;
for
(
s32
x
=
0
;
x
<
bits
.
width
;
++
x
)
{
for
(
s32
x
=
0
;
x
<
(
s32
)
bits
.
width
;
++
x
)
{
image_data
[
y
*
image_pitch
+
x
]
|=
static_cast
<
u32
>
(
255.0
f
*
(
static_cast
<
float
>
(
*
row
++
)
/
gray_count
))
<<
24
;
//data[y * image_pitch + x] |= ((u32)(*bitsdata++) << 24);
}
...
...
@@ -154,8 +154,8 @@ void SGUITTGlyph::preload(u32 char_index, FT_Face face, video::IVideoDriver* dri
glyph_page
=
parent
->
getLastGlyphPageIndex
();
u32
texture_side_length
=
page
->
texture_size
.
Width
-
font_size
;
u32
margin
=
font_size
*
0.5
;
u32
sprite_size
=
font_size
*
1.5
;
u32
margin
=
(
u32
)(
font_size
*
0.5
)
;
u32
sprite_size
=
(
u32
)(
font_size
*
1.5
)
;
core
::
vector2di
page_position
(
(
s32
)(
page
->
used_slots
%
(
s32
)(
texture_side_length
/
sprite_size
))
*
sprite_size
+
margin
,
(
s32
)(
page
->
used_slots
/
(
s32
)(
texture_side_length
/
sprite_size
))
*
sprite_size
+
margin
...
...
gframe/data_manager.h
View file @
15800b08
...
...
@@ -54,13 +54,13 @@ public:
string_pointer
strings_begin
;
string_pointer
strings_end
;
wchar_t
numStrings
[
301
][
4
];
wchar_t
numBuffer
[
6
];
wchar_t
attBuffer
[
128
];
wchar_t
racBuffer
[
128
];
wchar_t
tpBuffer
[
128
];
wchar_t
scBuffer
[
128
];
wchar_t
lmBuffer
[
32
];
wchar_t
numStrings
[
301
][
4
]
{}
;
wchar_t
numBuffer
[
6
]
{}
;
wchar_t
attBuffer
[
128
]
{}
;
wchar_t
racBuffer
[
128
]
{}
;
wchar_t
tpBuffer
[
128
]
{}
;
wchar_t
scBuffer
[
128
]
{}
;
wchar_t
lmBuffer
[
32
]
{}
;
static
byte
scriptBuffer
[
0x20000
];
static
const
wchar_t
*
unknown_string
;
...
...
gframe/drawing.cpp
View file @
15800b08
...
...
@@ -1274,10 +1274,10 @@ void Game::DrawDeckBd() {
dx
=
436.0
f
/
(
lx
-
1
);
}
int
padding
=
scrPackCards
->
getPos
()
*
lx
;
for
(
size_
t
i
=
0
;
i
<
mainsize
-
padding
&&
i
<
7
*
lx
;
++
i
)
{
size_
t
j
=
i
+
padding
;
for
(
in
t
i
=
0
;
i
<
mainsize
-
padding
&&
i
<
7
*
lx
;
++
i
)
{
in
t
j
=
i
+
padding
;
DrawThumb
(
deckManager
.
current_deck
.
main
[
j
],
position2di
(
314
+
(
i
%
lx
)
*
dx
,
164
+
(
i
/
lx
)
*
dy
),
deckBuilder
.
filterList
);
if
(
deckBuilder
.
hovered_pos
==
1
&&
deckBuilder
.
hovered_seq
==
(
int
)
j
)
if
(
deckBuilder
.
hovered_pos
==
1
&&
deckBuilder
.
hovered_seq
==
j
)
driver
->
draw2DRectangleOutline
(
Resize
(
313
+
(
i
%
lx
)
*
dx
,
163
+
(
i
/
lx
)
*
dy
,
359
+
(
i
%
lx
)
*
dx
,
228
+
(
i
/
lx
)
*
dy
));
}
if
(
!
deckBuilder
.
showing_pack
)
{
...
...
gframe/duelclient.cpp
View file @
15800b08
...
...
@@ -22,8 +22,8 @@ unsigned char DuelClient::selftype = 0;
bool
DuelClient
::
is_host
=
false
;
event_base
*
DuelClient
::
client_base
=
0
;
bufferevent
*
DuelClient
::
client_bev
=
0
;
unsigned
char
DuelClient
::
duel_client_read
[
0x2000
];
unsigned
char
DuelClient
::
duel_client_write
[
0x2000
];
unsigned
char
DuelClient
::
duel_client_read
[
SIZE_NETWORK_BUFFER
];
unsigned
char
DuelClient
::
duel_client_write
[
SIZE_NETWORK_BUFFER
];
bool
DuelClient
::
is_closing
=
false
;
bool
DuelClient
::
is_swapping
=
false
;
int
DuelClient
::
select_hint
=
0
;
...
...
@@ -4300,8 +4300,8 @@ void DuelClient::BeginRefreshHost() {
SOCKET
sSend
=
socket
(
AF_INET
,
SOCK_DGRAM
,
IPPROTO_UDP
);
if
(
sSend
==
INVALID_SOCKET
)
break
;
BOOL
opt
=
TRUE
;
setsockopt
(
sSend
,
SOL_SOCKET
,
SO_BROADCAST
,
(
const
char
*
)
&
opt
,
sizeof
(
BOOL
)
);
int
opt
=
TRUE
;
setsockopt
(
sSend
,
SOL_SOCKET
,
SO_BROADCAST
,
(
const
char
*
)
&
opt
,
sizeof
opt
);
if
(
bind
(
sSend
,
(
sockaddr
*
)
&
local
,
sizeof
(
sockaddr
))
==
SOCKET_ERROR
)
{
closesocket
(
sSend
);
break
;
...
...
gframe/duelclient.h
View file @
15800b08
...
...
@@ -66,8 +66,8 @@ private:
static
bool
is_host
;
static
event_base
*
client_base
;
static
bufferevent
*
client_bev
;
static
unsigned
char
duel_client_read
[
0x2000
];
static
unsigned
char
duel_client_write
[
0x2000
];
static
unsigned
char
duel_client_read
[
SIZE_NETWORK_BUFFER
];
static
unsigned
char
duel_client_write
[
SIZE_NETWORK_BUFFER
];
static
bool
is_closing
;
static
bool
is_swapping
;
static
int
select_hint
;
...
...
@@ -111,23 +111,31 @@ public:
template
<
typename
ST
>
static
void
SendPacketToServer
(
unsigned
char
proto
,
ST
&
st
)
{
auto
p
=
duel_client_write
;
BufferIO
::
WriteInt16
(
p
,
1
+
sizeof
(
ST
));
int
blen
=
sizeof
(
ST
);
if
(
blen
>
MAX_DATA_SIZE
)
blen
=
MAX_DATA_SIZE
;
BufferIO
::
WriteInt16
(
p
,
(
short
)(
1
+
blen
));
BufferIO
::
WriteInt8
(
p
,
proto
);
memcpy
(
p
,
&
st
,
sizeof
(
ST
)
);
memcpy
(
p
,
&
st
,
blen
);
#ifdef YGOPRO_MESSAGE_DEBUG
printf
(
"CTOS: %d Length: %ld
\n
"
,
proto
,
sizeof
(
ST
));
#endif
bufferevent_write
(
client_bev
,
duel_client_write
,
sizeof
(
ST
)
+
3
);
bufferevent_write
(
client_bev
,
duel_client_write
,
blen
+
3
);
}
static
void
SendBufferToServer
(
unsigned
char
proto
,
void
*
buffer
,
size_t
len
)
{
auto
p
=
duel_client_write
;
BufferIO
::
WriteInt16
(
p
,
1
+
len
);
int
blen
=
len
;
if
(
blen
<
0
)
return
;
if
(
blen
>
MAX_DATA_SIZE
)
blen
=
MAX_DATA_SIZE
;
BufferIO
::
WriteInt16
(
p
,
(
short
)(
1
+
blen
));
BufferIO
::
WriteInt8
(
p
,
proto
);
memcpy
(
p
,
buffer
,
len
);
memcpy
(
p
,
buffer
,
b
len
);
#ifdef YGOPRO_MESSAGE_DEBUG
printf
(
"CTOS: %d Length: %ld
\n
"
,
proto
,
len
);
#endif
bufferevent_write
(
client_bev
,
duel_client_write
,
len
+
3
);
bufferevent_write
(
client_bev
,
duel_client_write
,
b
len
+
3
);
}
protected:
...
...
gframe/game.cpp
View file @
15800b08
...
...
@@ -274,7 +274,7 @@ bool Game::Initialize() {
SetWindowsIcon
();
//main menu
wchar_t
strbuf
[
256
];
myswprintf
(
strbuf
,
L"KoishiPro %X.0%X.%X S
elenadia
"
,
PRO_VERSION
>>
12
,
(
PRO_VERSION
>>
4
)
&
0xff
,
PRO_VERSION
&
0xf
);
myswprintf
(
strbuf
,
L"KoishiPro %X.0%X.%X S
nowdream
"
,
PRO_VERSION
>>
12
,
(
PRO_VERSION
>>
4
)
&
0xff
,
PRO_VERSION
&
0xf
);
wMainMenu
=
env
->
addWindow
(
rect
<
s32
>
(
370
,
200
,
650
,
415
),
false
,
strbuf
);
wMainMenu
->
getCloseButton
()
->
setVisible
(
false
);
btnLanMode
=
env
->
addButton
(
rect
<
s32
>
(
10
,
30
,
270
,
60
),
wMainMenu
,
BUTTON_LAN_MODE
,
dataManager
.
GetSysString
(
1200
));
...
...
@@ -844,7 +844,7 @@ bool Game::Initialize() {
cbCardType
->
addItem
(
dataManager
.
GetSysString
(
1312
));
cbCardType
->
addItem
(
dataManager
.
GetSysString
(
1313
));
cbCardType
->
addItem
(
dataManager
.
GetSysString
(
1314
));
cbCardType2
=
env
->
addComboBox
(
rect
<
s32
>
(
125
,
25
/
6
,
200
,
20
+
25
/
6
),
wFilter
,
COMBOBOX_SECONDTYPE
);
cbCardType2
=
env
->
addComboBox
(
rect
<
s32
>
(
125
,
25
/
6
,
195
,
20
+
25
/
6
),
wFilter
,
COMBOBOX_SECONDTYPE
);
cbCardType2
->
setMaxSelectionRows
(
10
);
cbCardType2
->
addItem
(
dataManager
.
GetSysString
(
1310
),
0
);
stLimit
=
env
->
addStaticText
(
dataManager
.
GetSysString
(
1315
),
rect
<
s32
>
(
205
,
2
+
25
/
6
,
280
,
22
+
25
/
6
),
false
,
false
,
wFilter
);
...
...
@@ -860,13 +860,13 @@ bool Game::Initialize() {
cbLimit
->
addItem
(
dataManager
.
GetSysString
(
1484
));
cbLimit
->
addItem
(
dataManager
.
GetSysString
(
1485
));
stAttribute
=
env
->
addStaticText
(
dataManager
.
GetSysString
(
1319
),
rect
<
s32
>
(
10
,
22
+
50
/
6
,
70
,
42
+
50
/
6
),
false
,
false
,
wFilter
);
cbAttribute
=
env
->
addComboBox
(
rect
<
s32
>
(
60
,
20
+
50
/
6
,
19
0
,
40
+
50
/
6
),
wFilter
,
COMBOBOX_ATTRIBUTE
);
cbAttribute
=
env
->
addComboBox
(
rect
<
s32
>
(
60
,
20
+
50
/
6
,
19
5
,
40
+
50
/
6
),
wFilter
,
COMBOBOX_ATTRIBUTE
);
cbAttribute
->
setMaxSelectionRows
(
10
);
cbAttribute
->
addItem
(
dataManager
.
GetSysString
(
1310
),
0
);
for
(
int
filter
=
0x1
;
filter
!=
0x80
;
filter
<<=
1
)
cbAttribute
->
addItem
(
dataManager
.
FormatAttribute
(
filter
),
filter
);
stRace
=
env
->
addStaticText
(
dataManager
.
GetSysString
(
1321
),
rect
<
s32
>
(
10
,
42
+
75
/
6
,
70
,
62
+
75
/
6
),
false
,
false
,
wFilter
);
cbRace
=
env
->
addComboBox
(
rect
<
s32
>
(
60
,
40
+
75
/
6
,
19
0
,
60
+
75
/
6
),
wFilter
,
COMBOBOX_RACE
);
cbRace
=
env
->
addComboBox
(
rect
<
s32
>
(
60
,
40
+
75
/
6
,
19
5
,
60
+
75
/
6
),
wFilter
,
COMBOBOX_RACE
);
cbRace
->
setMaxSelectionRows
(
10
);
cbRace
->
addItem
(
dataManager
.
GetSysString
(
1310
),
0
);
for
(
int
filter
=
0x1
;
filter
<
(
1
<<
RACES_COUNT
);
filter
<<=
1
)
...
...
@@ -881,7 +881,7 @@ bool Game::Initialize() {
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
,
19
0
,
80
+
100
/
6
),
true
,
wFilter
,
EDITBOX_INPUTS
);
ebScale
=
env
->
addEditBox
(
L""
,
rect
<
s32
>
(
150
,
60
+
100
/
6
,
19
5
,
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
);
...
...
@@ -900,7 +900,7 @@ bool Game::Initialize() {
btnCategoryOK
=
env
->
addButton
(
rect
<
s32
>
(
150
,
210
,
250
,
235
),
wCategories
,
BUTTON_CATEGORY_OK
,
dataManager
.
GetSysString
(
1211
));
int
catewidth
=
0
;
for
(
int
i
=
0
;
i
<
32
;
++
i
)
{
irr
::
core
::
dimension2d
<
unsigned
int
>
dtxt
=
mainGame
->
guiFont
->
getDimension
(
dataManager
.
GetSysString
(
1100
+
i
));
irr
::
core
::
dimension2d
<
unsigned
int
>
dtxt
=
guiFont
->
getDimension
(
dataManager
.
GetSysString
(
1100
+
i
));
if
((
int
)
dtxt
.
Width
+
40
>
catewidth
)
catewidth
=
dtxt
.
Width
+
40
;
}
...
...
@@ -909,7 +909,7 @@ bool Game::Initialize() {
int
wcatewidth
=
catewidth
*
4
+
16
;
wCategories
->
setRelativePosition
(
rect
<
s32
>
(
1000
-
wcatewidth
,
60
,
1000
,
305
));
btnCategoryOK
->
setRelativePosition
(
recti
(
wcatewidth
/
2
-
50
,
210
,
wcatewidth
/
2
+
50
,
235
));
btnMarksFilter
=
env
->
addButton
(
rect
<
s32
>
(
60
,
80
+
125
/
6
,
19
0
,
100
+
125
/
6
),
wFilter
,
BUTTON_MARKS_FILTER
,
dataManager
.
GetSysString
(
1374
));
btnMarksFilter
=
env
->
addButton
(
rect
<
s32
>
(
60
,
80
+
125
/
6
,
19
5
,
100
+
125
/
6
),
wFilter
,
BUTTON_MARKS_FILTER
,
dataManager
.
GetSysString
(
1374
));
wLinkMarks
=
env
->
addWindow
(
rect
<
s32
>
(
700
,
30
,
820
,
150
),
false
,
L""
);
wLinkMarks
->
getCloseButton
()
->
setVisible
(
false
);
wLinkMarks
->
setDrawTitlebar
(
false
);
...
...
@@ -1883,7 +1883,7 @@ void Game::ShowCardInfo(int code, bool resize) {
myswprintf
(
formatBuffer
,
L"[%ls] %ls/%ls"
,
dataManager
.
FormatType
(
cd
.
type
),
dataManager
.
FormatRace
(
cd
.
race
),
dataManager
.
FormatAttribute
(
cd
.
attribute
));
stInfo
->
setText
(
formatBuffer
);
int
offset_info
=
0
;
irr
::
core
::
dimension2d
<
unsigned
int
>
dtxt
=
mainGame
->
guiFont
->
getDimension
(
formatBuffer
);
irr
::
core
::
dimension2d
<
unsigned
int
>
dtxt
=
guiFont
->
getDimension
(
formatBuffer
);
if
(
dtxt
.
Width
>
(
300
*
xScale
-
13
)
-
15
)
offset_info
=
15
;
if
(
!
(
cd
.
type
&
TYPE_LINK
))
{
...
...
@@ -1917,7 +1917,7 @@ void Game::ShowCardInfo(int code, bool resize) {
}
stDataInfo
->
setText
(
formatBuffer
);
int
offset_arrows
=
offset_info
;
dtxt
=
mainGame
->
guiFont
->
getDimension
(
formatBuffer
);
dtxt
=
guiFont
->
getDimension
(
formatBuffer
);
if
(
dtxt
.
Width
>
(
300
*
xScale
-
13
)
-
15
)
offset_arrows
+=
15
;
stInfo
->
setRelativePosition
(
rect
<
s32
>
(
15
,
37
,
300
*
xScale
-
13
,
(
60
+
offset_info
)));
...
...
@@ -2214,12 +2214,12 @@ void Game::OnResize() {
wFilter
->
setRelativePosition
(
Resize
(
610
,
5
,
1020
,
130
));
scrFilter
->
setRelativePosition
(
Resize
(
999
,
161
,
1019
,
629
));
cbCardType
->
setRelativePosition
(
Resize
(
60
,
25
/
6
,
120
,
20
+
25
/
6
));
cbCardType2
->
setRelativePosition
(
Resize
(
1
30
,
25
/
6
,
190
,
20
+
25
/
6
));
cbRace
->
setRelativePosition
(
Resize
(
60
,
40
+
75
/
6
,
19
0
,
60
+
75
/
6
));
cbAttribute
->
setRelativePosition
(
Resize
(
60
,
20
+
50
/
6
,
19
0
,
40
+
50
/
6
));
cbCardType2
->
setRelativePosition
(
Resize
(
1
25
,
25
/
6
,
195
,
20
+
25
/
6
));
cbRace
->
setRelativePosition
(
Resize
(
60
,
40
+
75
/
6
,
19
5
,
60
+
75
/
6
));
cbAttribute
->
setRelativePosition
(
Resize
(
60
,
20
+
50
/
6
,
19
5
,
40
+
50
/
6
));
cbLimit
->
setRelativePosition
(
Resize
(
260
,
25
/
6
,
390
,
20
+
25
/
6
));
ebStar
->
setRelativePosition
(
Resize
(
60
,
60
+
100
/
6
,
95
,
80
+
100
/
6
));
ebScale
->
setRelativePosition
(
Resize
(
155
,
60
+
100
/
6
,
19
0
,
80
+
100
/
6
));
ebScale
->
setRelativePosition
(
Resize
(
155
,
60
+
100
/
6
,
19
5
,
80
+
100
/
6
));
ebAttack
->
setRelativePosition
(
Resize
(
260
,
20
+
50
/
6
,
340
,
40
+
50
/
6
));
ebDefense
->
setRelativePosition
(
Resize
(
260
,
40
+
75
/
6
,
340
,
60
+
75
/
6
));
ebCardName
->
setRelativePosition
(
Resize
(
260
,
60
+
100
/
6
,
390
,
80
+
100
/
6
));
...
...
@@ -2227,7 +2227,7 @@ void Game::OnResize() {
btnStartFilter
->
setRelativePosition
(
Resize
(
260
,
80
+
125
/
6
,
390
,
100
+
125
/
6
));
if
(
btnClearFilter
)
btnClearFilter
->
setRelativePosition
(
Resize
(
205
,
80
+
125
/
6
,
255
,
100
+
125
/
6
));
btnMarksFilter
->
setRelativePosition
(
Resize
(
60
,
80
+
125
/
6
,
19
0
,
100
+
125
/
6
));
btnMarksFilter
->
setRelativePosition
(
Resize
(
60
,
80
+
125
/
6
,
19
5
,
100
+
125
/
6
));
recti
btncatepos
=
btnEffectFilter
->
getAbsolutePosition
();
wCategories
->
setRelativePosition
(
recti
(
...
...
@@ -2309,8 +2309,8 @@ void Game::OnResize() {
scrTabSystem
->
setVisible
(
false
);
if
(
gameConf
.
resize_popup_menu
)
{
int
width
=
100
*
mainGame
->
xScale
;
int
height
=
(
mainGame
->
yScale
>=
0.666
)
?
21
*
mainGame
->
yScale
:
14
;
int
width
=
100
*
xScale
;
int
height
=
(
yScale
>=
0.666
)
?
21
*
yScale
:
14
;
wCmdMenu
->
setRelativePosition
(
recti
(
1
,
1
,
width
+
1
,
1
));
btnActivate
->
setRelativePosition
(
recti
(
1
,
1
,
width
,
height
));
btnSummon
->
setRelativePosition
(
recti
(
1
,
1
,
width
,
height
));
...
...
@@ -2532,7 +2532,7 @@ const wchar_t* Game::GetLocaleDirWide(const char* dir) {
return
locale_buf
;
}
void
Game
::
SetCursor
(
ECURSOR_ICON
icon
)
{
ICursorControl
*
cursor
=
mainGame
->
device
->
getCursorControl
();
ICursorControl
*
cursor
=
device
->
getCursorControl
();
if
(
cursor
->
getActiveIcon
()
!=
icon
)
{
cursor
->
setActiveIcon
(
icon
);
}
...
...
gframe/netserver.cpp
View file @
15800b08
...
...
@@ -9,8 +9,8 @@ event_base* NetServer::net_evbase = 0;
event
*
NetServer
::
broadcast_ev
=
0
;
evconnlistener
*
NetServer
::
listener
=
0
;
DuelMode
*
NetServer
::
duel_mode
=
0
;
unsigned
char
NetServer
::
net_server_read
[
0x2000
];
unsigned
char
NetServer
::
net_server_write
[
0x2000
];
unsigned
char
NetServer
::
net_server_read
[
SIZE_NETWORK_BUFFER
];
unsigned
char
NetServer
::
net_server_write
[
SIZE_NETWORK_BUFFER
];
unsigned
short
NetServer
::
last_sent
=
0
;
#ifdef YGOPRO_SERVER_MODE
...
...
@@ -122,9 +122,9 @@ bool NetServer::StartBroadcast() {
if
(
!
net_evbase
)
return
false
;
SOCKET
udp
=
socket
(
AF_INET
,
SOCK_DGRAM
,
IPPROTO_UDP
);
BOOL
opt
=
TRUE
;
setsockopt
(
udp
,
SOL_SOCKET
,
SO_BROADCAST
,
(
const
char
*
)
&
opt
,
sizeof
(
BOOL
)
);
setsockopt
(
udp
,
SOL_SOCKET
,
SO_REUSEADDR
,
(
const
char
*
)
&
opt
,
sizeof
(
BOOL
)
);
int
opt
=
TRUE
;
setsockopt
(
udp
,
SOL_SOCKET
,
SO_BROADCAST
,
(
const
char
*
)
&
opt
,
sizeof
opt
);
setsockopt
(
udp
,
SOL_SOCKET
,
SO_REUSEADDR
,
(
const
char
*
)
&
opt
,
sizeof
opt
);
sockaddr_in
addr
;
memset
(
&
addr
,
0
,
sizeof
(
addr
));
addr
.
sin_family
=
AF_INET
;
...
...
gframe/netserver.h
View file @
15800b08
...
...
@@ -20,8 +20,8 @@ private:
static
event
*
broadcast_ev
;
static
evconnlistener
*
listener
;
static
DuelMode
*
duel_mode
;
static
unsigned
char
net_server_read
[
0x2000
];
static
unsigned
char
net_server_write
[
0x2000
];
static
unsigned
char
net_server_read
[
SIZE_NETWORK_BUFFER
];
static
unsigned
char
net_server_write
[
SIZE_NETWORK_BUFFER
];
static
unsigned
short
last_sent
;
public:
...
...
@@ -53,26 +53,34 @@ public:
last_sent
=
3
;
if
(
!
dp
)
return
;
bufferevent_write
(
dp
->
bev
,
net_server_write
,
last_sent
);
bufferevent_write
(
dp
->
bev
,
net_server_write
,
3
);
}
template
<
typename
ST
>
static
void
SendPacketToPlayer
(
DuelPlayer
*
dp
,
unsigned
char
proto
,
ST
&
st
)
{
auto
p
=
net_server_write
;
BufferIO
::
WriteInt16
(
p
,
1
+
sizeof
(
ST
));
int
blen
=
sizeof
(
ST
);
if
(
blen
>
MAX_DATA_SIZE
)
blen
=
MAX_DATA_SIZE
;
BufferIO
::
WriteInt16
(
p
,
(
short
)(
1
+
blen
));
BufferIO
::
WriteInt8
(
p
,
proto
);
memcpy
(
p
,
&
st
,
sizeof
(
ST
)
);
last_sent
=
sizeof
(
ST
)
+
3
;
if
(
dp
)
bufferevent_write
(
dp
->
bev
,
net_server_write
,
last_sent
);
memcpy
(
p
,
&
st
,
blen
);
last_sent
=
blen
+
3
;
if
(
dp
)
bufferevent_write
(
dp
->
bev
,
net_server_write
,
blen
+
3
);
}
static
void
SendBufferToPlayer
(
DuelPlayer
*
dp
,
unsigned
char
proto
,
void
*
buffer
,
size_t
len
)
{
auto
p
=
net_server_write
;
BufferIO
::
WriteInt16
(
p
,
1
+
len
);
int
blen
=
len
;
if
(
blen
<
0
)
return
;
if
(
blen
>
MAX_DATA_SIZE
)
blen
=
MAX_DATA_SIZE
;
BufferIO
::
WriteInt16
(
p
,
(
short
)(
1
+
blen
));
BufferIO
::
WriteInt8
(
p
,
proto
);
memcpy
(
p
,
buffer
,
len
);
last_sent
=
len
+
3
;
if
(
dp
)
bufferevent_write
(
dp
->
bev
,
net_server_write
,
last_sent
);
memcpy
(
p
,
buffer
,
b
len
);
last_sent
=
b
len
+
3
;
if
(
dp
)
bufferevent_write
(
dp
->
bev
,
net_server_write
,
blen
+
3
);
}
static
void
ReSendToPlayer
(
DuelPlayer
*
dp
)
{
if
(
dp
)
...
...
gframe/network.h
View file @
15800b08
...
...
@@ -10,6 +10,8 @@
#include <event2/thread.h>
namespace
ygo
{
constexpr
int
SIZE_NETWORK_BUFFER
=
0x2000
;
constexpr
int
MAX_DATA_SIZE
=
SIZE_NETWORK_BUFFER
-
3
;
struct
HostInfo
{
unsigned
int
lflist
{
0
};
...
...
gframe/single_mode.cpp
View file @
15800b08
...
...
@@ -58,7 +58,7 @@ int SingleMode::SinglePlayThread() {
if
(
mainGame
->
chkSinglePlayReturnDeckTop
->
isChecked
())
opt
|=
DUEL_RETURN_DECK_TOP
;
char
filename
[
256
];
size_
t
slen
=
0
;
in
t
slen
=
0
;
if
(
open_file
)
{
open_file
=
false
;
slen
=
BufferIO
::
EncodeUTF8
(
open_file_name
,
filename
);
...
...
lflist.conf
View file @
15800b08
This diff is collapsed.
Click to expand it.
ocgcore
@
dcb3ee6c
Subproject commit
7448df909c630949ccf8a9be60bdc9cc0abd1dfc
Subproject commit
dcb3ee6c25f775562c1ad6f353e30ed928e16866
script
@
afdda75b
Subproject commit
4d55686f9414ca20d118d8065fe7c751502cf2c2
Subproject commit
afdda75bf93d44ca28fe0e7563dc3001eca9320b
strings.conf
View file @
15800b08
...
...
@@ -320,6 +320,9 @@
!
system
1262
大师规则3
!
system
1263
新大师规则(
2017
)
!
system
1264
大师规则(
2020
)
!
system
1267
语言(重启后生效)
!
system
1268
盖放怪兽前询问
!
system
1269
数字灵摆图片
!
system
1270
卡片信息
!
system
1271
消息记录
!
system
1272
清除记录
...
...
@@ -340,7 +343,7 @@
!
system
1287
只有连锁
1
也显示连锁动画
!
system
1288
禁限卡表
!
system
1289
隐藏玩家昵称
!
system
1290
禁用聊天功能
!
system
1290
忽略对方发言
!
system
1291
忽略观战者发言
!
system
1292
忽略时点
!
system
1293
显示时点
...
...
@@ -404,6 +407,7 @@
!
system
1352
主要信息:
!
system
1353
播放起始于回合:
!
system
1354
开局默认显示所有时点
!
system
1355
是否确定盖放[%
ls
]?
!
system
1356
此操作将放弃对当前卡组的修改,是否继续?
!
system
1357
不提示保留对卡组的修改
!
system
1358
键入关键字后自动进行搜索
...
...
@@ -429,6 +433,10 @@
!
system
1382
人机信息:
!
system
1384
电脑锁定出剪刀
!
system
1385
列表为空,可能未安装合适的人机
!
system
1386
使用正则表达式搜索卡片
!
system
1387
卡组代码
!
system
1388
Ctrl
+
A
全选,
Ctrl
+
C
复制,
Ctrl
+
V
粘贴
!
system
1389
卡组代码无效。
!
system
1390
等待行动中...
!
system
1391
等待行动中....
!
system
1392
等待行动中.....
...
...
@@ -1183,7 +1191,7 @@
!
setname
0
x18f
防火 ファイアウォール
!
setname
0
x190
末那愚子族 マナドゥム
!
setname
0
x191
妮穆蕾莉娅 ネムレリア
!
setname
0
x192
金傲大奖赛
GP
(ゴールド・プライド)
!
setname
0
x192
黄金荣耀
GP
(ゴールド・プライド)
!
setname
0
x193
迷宫壁 ラビリンス・ウォール
!
setname
0
x194
至爱 フェイバリット
!
setname
0
x195
征服斗魂
VS
(ヴァンキッシュ・ソウル)
...
...
@@ -1211,3 +1219,4 @@
!
setname
0
x1aa
天杯龙 天盃龍
!
setname
0
x1ab
蕾祸 蕾禍
!
setname
0
x1ac
飞龙炎
Salamandra
!
setname
0
x1ad
灰尽
Ashened
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