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
wyykak
ygopro
Commits
7064fc4b
Commit
7064fc4b
authored
Sep 06, 2021
by
nanahira
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'master' into server
parents
c9b0fe6f
600b4728
Changes
19
Hide whitespace changes
Inline
Side-by-side
Showing
19 changed files
with
127 additions
and
81 deletions
+127
-81
.ci/assets-locale.sh
.ci/assets-locale.sh
+4
-4
cards.cdb
cards.cdb
+0
-0
gframe/client_field.cpp
gframe/client_field.cpp
+2
-1
gframe/client_field.h
gframe/client_field.h
+2
-0
gframe/deck_con.cpp
gframe/deck_con.cpp
+5
-5
gframe/deck_manager.cpp
gframe/deck_manager.cpp
+14
-21
gframe/deck_manager.h
gframe/deck_manager.h
+1
-2
gframe/drawing.cpp
gframe/drawing.cpp
+32
-17
gframe/duelclient.cpp
gframe/duelclient.cpp
+13
-5
gframe/game.cpp
gframe/game.cpp
+30
-16
gframe/game.h
gframe/game.h
+6
-0
gframe/netserver.cpp
gframe/netserver.cpp
+2
-2
gframe/network.h
gframe/network.h
+1
-0
gframe/single_duel.cpp
gframe/single_duel.cpp
+2
-1
gframe/sound_manager.cpp
gframe/sound_manager.cpp
+2
-1
gframe/sound_manager.h
gframe/sound_manager.h
+2
-0
gframe/tag_duel.cpp
gframe/tag_duel.cpp
+2
-1
strings.conf
strings.conf
+7
-5
textures/ot.png
textures/ot.png
+0
-0
No files found.
.ci/assets-locale.sh
View file @
7064fc4b
...
...
@@ -2,9 +2,9 @@
set
-x
set
-o
errexit
# ygopro-database
apt update
&&
apt
-y
install
wget git
p7zip-full
git clone
--depth
=
1 https://code.mycard.moe/
nanahira
/ygopro-database
apt update
&&
apt
-y
install
wget git
libarchive-tools
git clone
--depth
=
1 https://code.mycard.moe/
mycard
/ygopro-database
cp
-rf
./ygopro-database/locales/
$TARGET_LOCALE
/
*
.
# ygopro-images
wget
-O
ygopro-images.zip https://cdn01.moecube.com/images/ygopro-images-
${
TARGET_LOCALE
}
.zip
7z x
-y
-opics
ygopro-images.zip
mkdir
pics
wget
-O
- https://cdn01.moecube.com/images/ygopro-images-
${
TARGET_LOCALE
}
.zip | bsdtar
-C
pics
-xf
-
cards.cdb
View file @
7064fc4b
No preview for this file type
gframe/client_field.cpp
View file @
7064fc4b
...
...
@@ -38,6 +38,7 @@ ClientField::ClientField() {
mzone
[
p
].
resize
(
7
,
0
);
szone
[
p
].
resize
(
8
,
0
);
}
rnd
.
reset
(
std
::
random_device
()());
}
void
ClientField
::
Clear
()
{
for
(
int
i
=
0
;
i
<
2
;
++
i
)
{
...
...
@@ -421,7 +422,7 @@ void ClientField::ShowSelectCard(bool buttonok, bool chain) {
}
}
if
(
has_card_in_grave
)
{
std
::
random_shuffle
(
selectable_cards
.
begin
(),
selectable_cards
.
end
()
);
rnd
.
shuffle_vector
(
selectable_cards
);
}
}
int
startpos
;
...
...
gframe/client_field.h
View file @
7064fc4b
...
...
@@ -2,6 +2,7 @@
#define CLIENT_FIELD_H
#include "config.h"
#include "../ocgcore/mtrandom.h"
#include <vector>
#include <set>
#include <map>
...
...
@@ -85,6 +86,7 @@ public:
bool
deck_reversed
;
bool
conti_selecting
;
bool
cant_check_grave
;
mt19937
rnd
;
ClientField
();
void
Clear
();
...
...
gframe/deck_con.cpp
View file @
7064fc4b
...
...
@@ -1490,15 +1490,15 @@ void DeckBuilder::FilterCards() {
if
(
filter_lm
)
{
if
(
filter_lm
<=
3
&&
(
!
filterList
->
count
(
ptr
->
first
)
||
(
*
filterList
).
at
(
ptr
->
first
)
!=
filter_lm
-
1
))
continue
;
if
(
filter_lm
==
4
&&
(
data
.
ot
&
0x3
)
!=
1
)
if
(
filter_lm
==
4
&&
!
(
data
.
ot
&
AVAIL_OCG
)
)
continue
;
if
(
filter_lm
==
5
&&
(
data
.
ot
&
0x3
)
!=
2
)
if
(
filter_lm
==
5
&&
!
(
data
.
ot
&
AVAIL_TCG
)
)
continue
;
if
(
filter_lm
==
6
&&
(
data
.
ot
&
0x3
)
!=
3
)
if
(
filter_lm
==
6
&&
!
(
data
.
ot
&
AVAIL_SC
)
)
continue
;
if
(
filter_lm
==
7
&&
data
.
ot
!=
4
)
if
(
filter_lm
==
7
&&
!
(
data
.
ot
&
AVAIL_CUSTOM
)
)
continue
;
if
(
filter_lm
==
8
&&
!
(
data
.
ot
&
0x8
))
if
(
filter_lm
==
8
&&
((
data
.
ot
&
AVAIL_OCGTCG
)
!=
AVAIL_OCGTCG
))
continue
;
}
bool
is_target
=
true
;
...
...
gframe/deck_manager.cpp
View file @
7064fc4b
...
...
@@ -72,24 +72,16 @@ const std::unordered_map<int, int>* DeckManager::GetLFListContent(int lfhash) {
return
&
lit
->
content
;
return
nullptr
;
}
int
DeckManager
::
IsGameRuleDisallowed
(
unsigned
char
hostInfoRule
,
unsigned
int
cardOt
)
{
if
(
hostInfoRule
!=
4
)
{
// non-CCG
bool
allow_ocg
=
hostInfoRule
==
0
||
hostInfoRule
==
2
;
// OCG can be used in OCG and OT duels
bool
allow_tcg
=
hostInfoRule
==
1
||
hostInfoRule
==
2
;
// TCG can be used in TCG and OT duels
if
(
!
allow_ocg
&&
((
cardOt
&
0x3
)
==
0x1
))
return
DECKERROR_OCGONLY
;
if
(
!
allow_tcg
&&
((
cardOt
&
0x3
)
==
0x2
))
return
DECKERROR_TCGONLY
;
}
else
if
(
!
(
cardOt
&
0x8
)
&&
(
cardOt
&
0x3
))
{
// in CCG duels, cards labeled with ither OCG or TCG, but not CCG, would not be allowed.
if
((
cardOt
&
0x3
)
==
0x2
)
{
return
DECKERROR_TCGONLY
;
}
else
{
return
DECKERROR_OCGONLY
;
}
}
return
0
;
static
int
checkAvail
(
int
ot
,
int
avail
)
{
if
((
ot
&
avail
)
==
avail
)
return
0
;
if
((
ot
&
AVAIL_OCG
)
&&
!
(
avail
==
AVAIL_OCG
))
return
DECKERROR_OCGONLY
;
if
((
ot
&
AVAIL_TCG
)
&&
!
(
avail
==
AVAIL_TCG
))
return
DECKERROR_TCGONLY
;
return
DECKERROR_NOTAVAIL
;
}
int
DeckManager
::
CheckDeck
(
Deck
&
deck
,
int
lfhash
,
unsigned
char
hostInfoR
ule
)
{
int
DeckManager
::
CheckDeck
(
Deck
&
deck
,
int
lfhash
,
int
r
ule
)
{
std
::
unordered_map
<
int
,
int
>
ccount
;
auto
list
=
GetLFListContent
(
lfhash
);
if
(
!
list
)
...
...
@@ -110,10 +102,11 @@ int DeckManager::CheckDeck(Deck& deck, int lfhash, unsigned char hostInfoRule) {
if
(
deck
.
side
.
size
()
>
15
)
return
(
DECKERROR_SIDECOUNT
<<
28
)
+
deck
.
side
.
size
();
#endif
const
int
rule_map
[
6
]
=
{
AVAIL_OCG
,
AVAIL_TCG
,
AVAIL_SC
,
AVAIL_CUSTOM
,
AVAIL_OCGTCG
,
0
};
int
avail
=
rule_map
[
rule
];
for
(
size_t
i
=
0
;
i
<
deck
.
main
.
size
();
++
i
)
{
code_pointer
cit
=
deck
.
main
[
i
];
const
int
gameruleDeckError
=
IsGameRuleDisallowed
(
hostInfoRule
,
cit
->
second
.
ot
);
int
gameruleDeckError
=
checkAvail
(
cit
->
second
.
ot
,
avail
);
if
(
gameruleDeckError
)
return
(
gameruleDeckError
<<
28
)
+
cit
->
first
;
if
(
cit
->
second
.
type
&
(
TYPE_FUSION
|
TYPE_SYNCHRO
|
TYPE_XYZ
|
TYPE_TOKEN
|
TYPE_LINK
))
...
...
@@ -129,7 +122,7 @@ int DeckManager::CheckDeck(Deck& deck, int lfhash, unsigned char hostInfoRule) {
}
for
(
size_t
i
=
0
;
i
<
deck
.
extra
.
size
();
++
i
)
{
code_pointer
cit
=
deck
.
extra
[
i
];
const
int
gameruleDeckError
=
IsGameRuleDisallowed
(
hostInfoRule
,
cit
->
second
.
ot
);
int
gameruleDeckError
=
checkAvail
(
cit
->
second
.
ot
,
avail
);
if
(
gameruleDeckError
)
return
(
gameruleDeckError
<<
28
)
+
cit
->
first
;
int
code
=
cit
->
second
.
alias
?
cit
->
second
.
alias
:
cit
->
first
;
...
...
@@ -143,7 +136,7 @@ int DeckManager::CheckDeck(Deck& deck, int lfhash, unsigned char hostInfoRule) {
}
for
(
size_t
i
=
0
;
i
<
deck
.
side
.
size
();
++
i
)
{
code_pointer
cit
=
deck
.
side
[
i
];
const
int
gameruleDeckError
=
IsGameRuleDisallowed
(
hostInfoRule
,
cit
->
second
.
ot
);
int
gameruleDeckError
=
checkAvail
(
cit
->
second
.
ot
,
avail
);
if
(
gameruleDeckError
)
return
(
gameruleDeckError
<<
28
)
+
cit
->
first
;
int
code
=
cit
->
second
.
alias
?
cit
->
second
.
alias
:
cit
->
first
;
...
...
gframe/deck_manager.h
View file @
7064fc4b
...
...
@@ -39,8 +39,7 @@ public:
void
LoadLFList
();
const
wchar_t
*
GetLFListName
(
int
lfhash
);
const
std
::
unordered_map
<
int
,
int
>*
GetLFListContent
(
int
lfhash
);
int
IsGameRuleDisallowed
(
unsigned
char
hostInfoRule
,
unsigned
int
cardOt
);
int
CheckDeck
(
Deck
&
deck
,
int
lfhash
,
unsigned
char
hostInfoRule
);
int
CheckDeck
(
Deck
&
deck
,
int
lfhash
,
int
rule
);
int
LoadDeck
(
Deck
&
deck
,
int
*
dbuf
,
int
mainc
,
int
sidec
);
bool
LoadSide
(
Deck
&
deck
,
int
*
dbuf
,
int
mainc
,
int
sidec
);
#ifndef YGOPRO_SERVER_MODE
...
...
gframe/drawing.cpp
View file @
7064fc4b
...
...
@@ -1185,17 +1185,32 @@ void Game::DrawThumb(code_pointer cp, position2di pos, const std::unordered_map<
break
;
}
}
if
(
cbLimit
->
getSelected
()
>=
4
&&
((
cp
->
second
.
ot
&
0x8
)
||
cp
->
second
.
ot
&
0x3
&&
(
cp
->
second
.
ot
&
0x3
)
!=
0x3
))
{
int
xOffset
=
0
,
yOffset
=
0
;
if
(
cp
->
second
.
ot
&
0x8
)
xOffset
+=
128
;
else
if
((
cp
->
second
.
ot
&
0x3
)
==
0x2
)
{
yOffset
+=
64
;
}
if
(
!
deckManager
.
IsGameRuleDisallowed
(
gameConf
.
defaultOT
,
cp
->
second
.
ot
))
{
yOffset
+=
128
;
}
driver
->
draw2DImage
(
imageManager
.
tOT
,
otloc
,
recti
(
xOffset
,
yOffset
,
128
+
xOffset
,
64
+
yOffset
),
0
,
0
,
true
);
bool
showAvail
=
false
;
bool
showNotAvail
=
false
;
int
filter_lm
=
cbLimit
->
getSelected
();
bool
avail
=
!
((
filter_lm
==
4
&&
!
(
cp
->
second
.
ot
&
AVAIL_OCG
)
||
(
filter_lm
==
5
&&
!
(
cp
->
second
.
ot
&
AVAIL_TCG
))
||
(
filter_lm
==
6
&&
!
(
cp
->
second
.
ot
&
AVAIL_SC
))
||
(
filter_lm
==
7
&&
!
(
cp
->
second
.
ot
&
AVAIL_CUSTOM
))
||
(
filter_lm
==
8
&&
(
cp
->
second
.
ot
&
AVAIL_OCGTCG
)
!=
AVAIL_OCGTCG
)));
if
(
filter_lm
>=
4
)
{
showAvail
=
avail
;
showNotAvail
=
!
avail
;
}
else
if
(
!
(
cp
->
second
.
ot
&
gameConf
.
defaultOT
))
{
showNotAvail
=
true
;
}
if
(
showAvail
)
{
if
((
cp
->
second
.
ot
&
AVAIL_OCG
)
&&
!
(
cp
->
second
.
ot
&
AVAIL_TCG
))
driver
->
draw2DImage
(
imageManager
.
tOT
,
otloc
,
recti
(
0
,
128
,
128
,
192
),
0
,
0
,
true
);
else
if
((
cp
->
second
.
ot
&
AVAIL_TCG
)
&&
!
(
cp
->
second
.
ot
&
AVAIL_OCG
))
driver
->
draw2DImage
(
imageManager
.
tOT
,
otloc
,
recti
(
0
,
192
,
128
,
256
),
0
,
0
,
true
);
}
else
if
(
showNotAvail
)
{
if
(
cp
->
second
.
ot
&
AVAIL_OCG
)
driver
->
draw2DImage
(
imageManager
.
tOT
,
otloc
,
recti
(
0
,
0
,
128
,
64
),
0
,
0
,
true
);
else
if
(
cp
->
second
.
ot
&
AVAIL_TCG
)
driver
->
draw2DImage
(
imageManager
.
tOT
,
otloc
,
recti
(
0
,
64
,
128
,
128
),
0
,
0
,
true
);
else
if
(
!
avail
)
driver
->
draw2DImage
(
imageManager
.
tLim
,
otloc
,
recti
(
0
,
0
,
64
,
64
),
0
,
0
,
true
);
}
}
void
Game
::
DrawDeckBd
()
{
...
...
@@ -1347,11 +1362,11 @@ void Game::DrawDeckBd() {
myswprintf
(
scaleBuffer
,
L" %d/%d"
,
ptr
->
second
.
lscale
,
ptr
->
second
.
rscale
);
wcscat
(
textBuffer
,
scaleBuffer
);
}
if
((
ptr
->
second
.
ot
&
0x3
)
==
1
)
if
((
ptr
->
second
.
ot
&
AVAIL_OCGTCG
)
==
AVAIL_OCG
)
wcscat
(
textBuffer
,
L" [OCG]"
);
else
if
((
ptr
->
second
.
ot
&
0x3
)
==
2
)
else
if
((
ptr
->
second
.
ot
&
AVAIL_OCGTCG
)
==
AVAIL_TCG
)
wcscat
(
textBuffer
,
L" [TCG]"
);
else
if
((
ptr
->
second
.
ot
&
0x7
)
==
4
)
else
if
((
ptr
->
second
.
ot
&
AVAIL_CUSTOM
)
==
AVAIL_CUSTOM
)
wcscat
(
textBuffer
,
L" [Custom]"
);
DrawShadowText
(
textFont
,
textBuffer
,
Resize
(
860
,
209
+
i
*
66
,
955
,
229
+
i
*
66
),
Resize
(
1
,
1
,
0
,
0
));
}
else
{
...
...
@@ -1360,11 +1375,11 @@ void Game::DrawDeckBd() {
const
wchar_t
*
ptype
=
dataManager
.
FormatType
(
ptr
->
second
.
type
);
DrawShadowText
(
textFont
,
ptype
,
Resize
(
860
,
187
+
i
*
66
,
955
,
207
+
i
*
66
),
Resize
(
1
,
1
,
0
,
0
));
textBuffer
[
0
]
=
0
;
if
((
ptr
->
second
.
ot
&
0x3
)
==
1
)
if
((
ptr
->
second
.
ot
&
AVAIL_OCGTCG
)
==
AVAIL_OCG
)
wcscat
(
textBuffer
,
L"[OCG]"
);
else
if
((
ptr
->
second
.
ot
&
0x3
)
==
2
)
else
if
((
ptr
->
second
.
ot
&
AVAIL_OCGTCG
)
==
AVAIL_TCG
)
wcscat
(
textBuffer
,
L"[TCG]"
);
else
if
((
ptr
->
second
.
ot
&
0x7
)
==
4
)
else
if
((
ptr
->
second
.
ot
&
AVAIL_CUSTOM
)
==
AVAIL_CUSTOM
)
wcscat
(
textBuffer
,
L"[Custom]"
);
DrawShadowText
(
textFont
,
textBuffer
,
Resize
(
860
,
209
+
i
*
66
,
955
,
229
+
i
*
66
),
Resize
(
1
,
1
,
0
,
0
));
}
...
...
gframe/duelclient.cpp
View file @
7064fc4b
...
...
@@ -133,7 +133,7 @@ void DuelClient::ClientEvent(bufferevent *bev, short events, void *ctx) {
if
(
bot_mode
)
{
BufferIO
::
CopyWStr
(
L"Bot Game"
,
cscg
.
name
,
20
);
BufferIO
::
CopyWStr
(
L""
,
cscg
.
pass
,
20
);
cscg
.
info
.
rule
=
2
;
cscg
.
info
.
rule
=
5
;
cscg
.
info
.
mode
=
0
;
cscg
.
info
.
start_hand
=
5
;
cscg
.
info
.
start_lp
=
8000
;
...
...
@@ -340,6 +340,10 @@ void DuelClient::HandleSTOCPacketLan(char* data, unsigned int len) {
myswprintf
(
msgbuf
,
dataManager
.
GetSysString
(
1419
),
code
);
break
;
}
case
DECKERROR_NOTAVAIL
:
{
myswprintf
(
msgbuf
,
dataManager
.
GetSysString
(
1432
),
dataManager
.
GetName
(
code
));
break
;
}
default:
{
myswprintf
(
msgbuf
,
dataManager
.
GetSysString
(
1406
));
break
;
...
...
@@ -520,7 +524,7 @@ void DuelClient::HandleSTOCPacketLan(char* data, unsigned int len) {
wchar_t
msgbuf
[
256
];
myswprintf
(
msgbuf
,
L"%ls%ls
\n
"
,
dataManager
.
GetSysString
(
1226
),
deckManager
.
GetLFListName
(
pkt
->
info
.
lflist
));
str
.
append
(
msgbuf
);
myswprintf
(
msgbuf
,
L"%ls%ls
\n
"
,
dataManager
.
GetSysString
(
1225
),
dataManager
.
GetSysString
(
pkt
->
info
.
rule
==
4
?
1249
:
1240
+
pkt
->
info
.
rule
));
myswprintf
(
msgbuf
,
L"%ls%ls
\n
"
,
dataManager
.
GetSysString
(
1225
),
dataManager
.
GetSysString
(
1481
+
pkt
->
info
.
rule
));
str
.
append
(
msgbuf
);
myswprintf
(
msgbuf
,
L"%ls%ls
\n
"
,
dataManager
.
GetSysString
(
1227
),
dataManager
.
GetSysString
(
1244
+
pkt
->
info
.
mode
));
str
.
append
(
msgbuf
);
...
...
@@ -1272,6 +1276,10 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) {
soundManager
.
StopBGM
();
}
}
// lyric
case
24
:
{
//HINT_LYRIC
mainGame
->
AddChatMsg
(
dataManager
.
GetDesc
(
data
),
15
);
}
}
break
;
}
...
...
@@ -2391,7 +2399,7 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) {
soundManager
.
PlaySoundEffect
(
SOUND_SHUFFLE
);
for
(
int
i
=
0
;
i
<
5
;
++
i
)
{
for
(
auto
cit
=
mainGame
->
dField
.
deck
[
player
].
begin
();
cit
!=
mainGame
->
dField
.
deck
[
player
].
end
();
++
cit
)
{
(
*
cit
)
->
dPos
=
irr
::
core
::
vector3df
(
r
and
()
*
0.4
f
/
RAND_MAX
-
0.2
f
,
0
,
0
);
(
*
cit
)
->
dPos
=
irr
::
core
::
vector3df
(
r
nd
.
rand
()
*
0.4
f
/
rnd
.
rand_max
-
0.2
f
,
0
,
0
);
(
*
cit
)
->
dRot
=
irr
::
core
::
vector3df
(
0
,
0
,
0
);
(
*
cit
)
->
is_moving
=
true
;
(
*
cit
)
->
aniFrame
=
3
;
...
...
@@ -2463,7 +2471,7 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) {
for
(
int
i
=
0
;
i
<
5
;
++
i
)
{
for
(
auto
cit
=
mainGame
->
dField
.
extra
[
player
].
begin
();
cit
!=
mainGame
->
dField
.
extra
[
player
].
end
();
++
cit
)
{
if
(
!
((
*
cit
)
->
position
&
POS_FACEUP
))
{
(
*
cit
)
->
dPos
=
irr
::
core
::
vector3df
(
r
and
()
*
0.4
f
/
RAND_MAX
-
0.2
f
,
0
,
0
);
(
*
cit
)
->
dPos
=
irr
::
core
::
vector3df
(
r
nd
.
rand
()
*
0.4
f
/
rnd
.
rand_max
-
0.2
f
,
0
,
0
);
(
*
cit
)
->
dRot
=
irr
::
core
::
vector3df
(
0
,
0
,
0
);
(
*
cit
)
->
is_moving
=
true
;
(
*
cit
)
->
aniFrame
=
3
;
...
...
@@ -4294,7 +4302,7 @@ void DuelClient::BroadcastReply(evutil_socket_t fd, short events, void * arg) {
hoststr
.
append
(
L"["
);
hoststr
.
append
(
deckManager
.
GetLFListName
(
pHP
->
host
.
lflist
));
hoststr
.
append
(
L"]["
);
hoststr
.
append
(
dataManager
.
GetSysString
(
pHP
->
host
.
rule
+
1
240
));
hoststr
.
append
(
dataManager
.
GetSysString
(
pHP
->
host
.
rule
+
1
481
));
hoststr
.
append
(
L"]["
);
hoststr
.
append
(
dataManager
.
GetSysString
(
pHP
->
host
.
mode
+
1244
));
hoststr
.
append
(
L"]["
);
...
...
gframe/game.cpp
View file @
7064fc4b
...
...
@@ -18,7 +18,7 @@
#include <regex>
#endif //YGOPRO_SERVER_MODE
unsigned
short
PRO_VERSION
=
0x135
2
;
unsigned
short
PRO_VERSION
=
0x135
3
;
namespace
ygo
{
...
...
@@ -114,11 +114,7 @@ bool Game::Initialize() {
return
false
;
}
dataManager
.
FileSystem
=
device
->
getFileSystem
();
<<<<<<<
HEAD
LoadExpansions
();
if
(
dataManager
.
LoadDB
(
GetLocaleDirWide
(
"cards.cdb"
)))
{}
else
=======
>>>>>>>
2
ef8ca22fcca4bf8d4a3a1b5ca9be32922b7a98f
if
(
!
dataManager
.
LoadDB
(
L"cards.cdb"
))
{
ErrorLog
(
"Failed to load card database (cards.cdb)!"
);
return
false
;
...
...
@@ -254,12 +250,30 @@ bool Game::Initialize() {
cbHostLFlist
->
setSelected
(
gameConf
.
use_lflist
?
gameConf
.
default_lflist
:
cbHostLFlist
->
getItemCount
()
-
1
);
env
->
addStaticText
(
dataManager
.
GetSysString
(
1225
),
rect
<
s32
>
(
20
,
60
,
220
,
80
),
false
,
false
,
wCreateHost
);
cbRule
=
env
->
addComboBox
(
rect
<
s32
>
(
140
,
55
,
300
,
80
),
wCreateHost
);
cbRule
->
addItem
(
dataManager
.
GetSysString
(
1240
));
cbRule
->
addItem
(
dataManager
.
GetSysString
(
1241
));
cbRule
->
addItem
(
dataManager
.
GetSysString
(
1242
));
cbRule
->
addItem
(
dataManager
.
GetSysString
(
1243
));
cbRule
->
addItem
(
dataManager
.
GetSysString
(
1249
));
cbRule
->
setSelected
(
gameConf
.
defaultOT
-
1
);
cbRule
->
setMaxSelectionRows
(
10
);
cbRule
->
addItem
(
dataManager
.
GetSysString
(
1481
));
cbRule
->
addItem
(
dataManager
.
GetSysString
(
1482
));
cbRule
->
addItem
(
dataManager
.
GetSysString
(
1483
));
cbRule
->
addItem
(
dataManager
.
GetSysString
(
1484
));
cbRule
->
addItem
(
dataManager
.
GetSysString
(
1485
));
cbRule
->
addItem
(
dataManager
.
GetSysString
(
1486
));
switch
(
gameConf
.
defaultOT
)
{
case
1
:
cbRule
->
setSelected
(
0
);
break
;
case
2
:
cbRule
->
setSelected
(
1
);
break
;
case
4
:
cbRule
->
setSelected
(
3
);
break
;
case
8
:
cbRule
->
setSelected
(
2
);
break
;
default:
cbRule
->
setSelected
(
5
);
break
;
}
env
->
addStaticText
(
dataManager
.
GetSysString
(
1227
),
rect
<
s32
>
(
20
,
90
,
220
,
110
),
false
,
false
,
wCreateHost
);
cbMatchMode
=
env
->
addComboBox
(
rect
<
s32
>
(
140
,
85
,
300
,
110
),
wCreateHost
);
cbMatchMode
->
addItem
(
dataManager
.
GetSysString
(
1244
));
...
...
@@ -759,11 +773,11 @@ bool Game::Initialize() {
cbLimit
->
addItem
(
dataManager
.
GetSysString
(
1316
));
cbLimit
->
addItem
(
dataManager
.
GetSysString
(
1317
));
cbLimit
->
addItem
(
dataManager
.
GetSysString
(
1318
));
cbLimit
->
addItem
(
dataManager
.
GetSysString
(
1
240
));
cbLimit
->
addItem
(
dataManager
.
GetSysString
(
1
241
));
cbLimit
->
addItem
(
dataManager
.
GetSysString
(
1
242
));
cbLimit
->
addItem
(
dataManager
.
GetSysString
(
1
243
));
cbLimit
->
addItem
(
dataManager
.
GetSysString
(
1
249
));
cbLimit
->
addItem
(
dataManager
.
GetSysString
(
1
481
));
cbLimit
->
addItem
(
dataManager
.
GetSysString
(
1
482
));
cbLimit
->
addItem
(
dataManager
.
GetSysString
(
1
483
));
cbLimit
->
addItem
(
dataManager
.
GetSysString
(
1
484
));
cbLimit
->
addItem
(
dataManager
.
GetSysString
(
1
485
));
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
,
190
,
40
+
50
/
6
),
wFilter
,
COMBOBOX_ATTRIBUTE
);
cbAttribute
->
setMaxSelectionRows
(
10
);
...
...
gframe/game.h
View file @
7064fc4b
...
...
@@ -875,6 +875,12 @@ extern unsigned int pre_seed[3];
#define TEXTURE_ATTACK 5
#define TEXTURE_ACTIVATE 6
#define AVAIL_OCG 0x5
#define AVAIL_TCG 0x6
#define AVAIL_CUSTOM 0x4
#define AVAIL_SC 0xc
#define AVAIL_OCGTCG (AVAIL_OCG|AVAIL_TCG)
#ifndef DEFAULT_DUEL_RULE
#define DEFAULT_DUEL_RULE 5
#endif
...
...
gframe/netserver.cpp
View file @
7064fc4b
...
...
@@ -299,8 +299,8 @@ void NetServer::HandleCTOSPacket(DuelPlayer* dp, char* data, unsigned int len) {
duel_mode
=
new
TagDuel
();
duel_mode
->
etimer
=
event_new
(
net_evbase
,
0
,
EV_TIMEOUT
|
EV_PERSIST
,
TagDuel
::
TagTimer
,
duel_mode
);
}
if
(
pkt
->
info
.
rule
>
4
)
pkt
->
info
.
rule
=
0
;
if
(
pkt
->
info
.
rule
>
5
)
pkt
->
info
.
rule
=
5
;
if
(
pkt
->
info
.
mode
>
2
)
pkt
->
info
.
mode
=
0
;
unsigned
int
hash
=
1
;
...
...
gframe/network.h
View file @
7064fc4b
...
...
@@ -230,6 +230,7 @@ public:
#define DECKERROR_MAINCOUNT 0x6
#define DECKERROR_EXTRACOUNT 0x7
#define DECKERROR_SIDECOUNT 0x8
#define DECKERROR_NOTAVAIL 0x9
#define MODE_SINGLE 0x0
#define MODE_MATCH 0x1
...
...
gframe/single_duel.cpp
View file @
7064fc4b
...
...
@@ -788,7 +788,8 @@ int SingleDuel::Analyze(char* msgbuffer, unsigned int len) {
case
10
:
case
21
:
case
22
:
case
23
:
{
case
23
:
case
24
:
{
NetServer
::
SendBufferToPlayer
(
players
[
0
],
STOC_GAME_MSG
,
offset
,
pbuf
-
offset
);
NetServer
::
SendBufferToPlayer
(
players
[
1
],
STOC_GAME_MSG
,
offset
,
pbuf
-
offset
);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
...
...
gframe/sound_manager.cpp
View file @
7064fc4b
...
...
@@ -13,6 +13,7 @@ bool SoundManager::Init() {
previous_bgm_scene
=
-
1
;
RefreshBGMList
();
bgm_process
=
false
;
rnd
.
reset
((
unsigned
int
)
time
(
nullptr
));
engineSound
=
irrklang
::
createIrrKlangDevice
();
engineMusic
=
irrklang
::
createIrrKlangDevice
();
if
(
!
engineSound
||
!
engineMusic
)
{
...
...
@@ -229,7 +230,7 @@ void SoundManager::PlayBGM(int scene) {
if
(
count
<=
0
)
return
;
bgm_scene
=
scene
;
int
bgm
=
r
and
()
%
count
;
int
bgm
=
r
nd
.
get_random_integer
(
0
,
count
-
1
)
;
auto
name
=
BGMList
[
scene
][
bgm
].
c_str
();
wchar_t
fname
[
1024
];
myswprintf
(
fname
,
L"./sound/BGM/%ls"
,
name
);
...
...
gframe/sound_manager.h
View file @
7064fc4b
...
...
@@ -2,6 +2,7 @@
#define SOUNDMANAGER_H
#include "game.h"
#include "../ocgcore/mtrandom.h"
#ifdef YGOPRO_USE_IRRKLANG
#include <irrKlang.h>
#endif
...
...
@@ -14,6 +15,7 @@ private:
int
bgm_scene
;
int
previous_bgm_scene
;
bool
bgm_process
;
mt19937
rnd
;
#ifdef YGOPRO_USE_IRRKLANG
irrklang
::
ISoundEngine
*
engineSound
;
irrklang
::
ISoundEngine
*
engineMusic
;
...
...
gframe/tag_duel.cpp
View file @
7064fc4b
...
...
@@ -737,10 +737,11 @@ int TagDuel::Analyze(char* msgbuffer, unsigned int len) {
#endif
break
;
}
case
10
:
case
21
:
case
22
:
case
23
:
case
10
:
{
case
24
:
{
for
(
int
i
=
0
;
i
<
4
;
++
i
)
NetServer
::
SendBufferToPlayer
(
players
[
i
],
STOC_GAME_MSG
,
offset
,
pbuf
-
offset
);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
...
...
strings.conf
View file @
7064fc4b
...
...
@@ -301,16 +301,11 @@
!
system
1235
主机密码:
!
system
1236
规则:
!
system
1237
每回合时间:
!
system
1240
OCG
!
system
1241
TCG
!
system
1242
OCG&TCG
!
system
1243
自定义卡片
!
system
1244
单局模式
!
system
1245
比赛模式
!
system
1246
TAG
!
system
1247
标准对战
!
system
1248
自定义
!
system
1249
简体中文
!
system
1250
决斗准备
!
system
1251
→决斗者
!
system
1252
→观战
...
...
@@ -472,6 +467,7 @@
!
system
1429
选择的位置不符合条件。
!
system
1430
选择的表示形式不符合条件。
!
system
1431
选择的指示物不符合条件。
!
system
1432
「%
ls
」不允许在当前设定下使用。
!
system
1440
关闭大图
!
system
1441
放大
!
system
1442
缩小
...
...
@@ -497,6 +493,12 @@
!
system
1474
已存在同名分类
!
system
1475
已存在同名卡组
!
system
1476
删除失败
!
system
1481
OCG
!
system
1482
TCG
!
system
1483
简体中文
!
system
1484
自定义卡片
!
system
1485
无独有卡
!
system
1486
所有卡片
!
system
1500
决斗结束。
!
system
1501
录像结束。
!
system
1502
连接已断开。
...
...
textures/ot.png
View replaced file @
c9b0fe6f
View file @
7064fc4b
9.92 KB
|
W:
|
H:
8.26 KB
|
W:
|
H:
2-up
Swipe
Onion skin
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