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
4caba5ff
Commit
4caba5ff
authored
Jun 06, 2018
by
mercury233
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'master' of
https://github.com/Fluorohydride/ygopro
parents
0582eabe
6afb4850
Changes
14
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
14 changed files
with
299 additions
and
44 deletions
+299
-44
gframe/client_field.cpp
gframe/client_field.cpp
+10
-14
gframe/drawing.cpp
gframe/drawing.cpp
+2
-3
gframe/duelclient.cpp
gframe/duelclient.cpp
+11
-6
gframe/event_handler.cpp
gframe/event_handler.cpp
+1
-1
gframe/game.cpp
gframe/game.cpp
+56
-1
gframe/game.h
gframe/game.h
+2
-0
gframe/replay_mode.cpp
gframe/replay_mode.cpp
+1
-0
gframe/single_duel.cpp
gframe/single_duel.cpp
+9
-2
gframe/single_mode.cpp
gframe/single_mode.cpp
+1
-0
gframe/tag_duel.cpp
gframe/tag_duel.cpp
+8
-2
lflist.conf
lflist.conf
+190
-13
ocgcore
ocgcore
+1
-1
script
script
+1
-1
strings.conf
strings.conf
+6
-0
No files found.
gframe/client_field.cpp
View file @
4caba5ff
...
...
@@ -303,7 +303,6 @@ void ClientField::UpdateCard(int controler, int location, int sequence, char* da
}
void
ClientField
::
UpdateFieldCard
(
int
controler
,
int
location
,
char
*
data
)
{
std
::
vector
<
ClientCard
*>*
lst
=
0
;
std
::
vector
<
ClientCard
*>::
iterator
cit
;
switch
(
location
)
{
case
LOCATION_DECK
:
lst
=
&
deck
[
controler
];
...
...
@@ -330,7 +329,7 @@ void ClientField::UpdateFieldCard(int controler, int location, char* data) {
if
(
!
lst
)
return
;
int
len
;
for
(
cit
=
lst
->
begin
();
cit
!=
lst
->
end
();
++
cit
)
{
for
(
auto
cit
=
lst
->
begin
();
cit
!=
lst
->
end
();
++
cit
)
{
len
=
BufferIO
::
ReadInt32
(
data
);
if
(
len
>
8
)
(
*
cit
)
->
UpdateInfo
(
data
);
...
...
@@ -338,20 +337,19 @@ void ClientField::UpdateFieldCard(int controler, int location, char* data) {
}
}
void
ClientField
::
ClearCommandFlag
()
{
std
::
vector
<
ClientCard
*>::
iterator
cit
;
for
(
cit
=
activatable_cards
.
begin
();
cit
!=
activatable_cards
.
end
();
++
cit
)
for
(
auto
cit
=
activatable_cards
.
begin
();
cit
!=
activatable_cards
.
end
();
++
cit
)
(
*
cit
)
->
cmdFlag
=
0
;
for
(
cit
=
summonable_cards
.
begin
();
cit
!=
summonable_cards
.
end
();
++
cit
)
for
(
auto
cit
=
summonable_cards
.
begin
();
cit
!=
summonable_cards
.
end
();
++
cit
)
(
*
cit
)
->
cmdFlag
=
0
;
for
(
cit
=
spsummonable_cards
.
begin
();
cit
!=
spsummonable_cards
.
end
();
++
cit
)
for
(
auto
cit
=
spsummonable_cards
.
begin
();
cit
!=
spsummonable_cards
.
end
();
++
cit
)
(
*
cit
)
->
cmdFlag
=
0
;
for
(
cit
=
msetable_cards
.
begin
();
cit
!=
msetable_cards
.
end
();
++
cit
)
for
(
auto
cit
=
msetable_cards
.
begin
();
cit
!=
msetable_cards
.
end
();
++
cit
)
(
*
cit
)
->
cmdFlag
=
0
;
for
(
cit
=
ssetable_cards
.
begin
();
cit
!=
ssetable_cards
.
end
();
++
cit
)
for
(
auto
cit
=
ssetable_cards
.
begin
();
cit
!=
ssetable_cards
.
end
();
++
cit
)
(
*
cit
)
->
cmdFlag
=
0
;
for
(
cit
=
reposable_cards
.
begin
();
cit
!=
reposable_cards
.
end
();
++
cit
)
for
(
auto
cit
=
reposable_cards
.
begin
();
cit
!=
reposable_cards
.
end
();
++
cit
)
(
*
cit
)
->
cmdFlag
=
0
;
for
(
cit
=
attackable_cards
.
begin
();
cit
!=
attackable_cards
.
end
();
++
cit
)
for
(
auto
cit
=
attackable_cards
.
begin
();
cit
!=
attackable_cards
.
end
();
++
cit
)
(
*
cit
)
->
cmdFlag
=
0
;
conti_cards
.
clear
();
deck_act
=
false
;
...
...
@@ -363,15 +361,13 @@ void ClientField::ClearCommandFlag() {
conti_act
=
false
;
}
void
ClientField
::
ClearSelect
()
{
std
::
vector
<
ClientCard
*>::
iterator
cit
;
for
(
cit
=
selectable_cards
.
begin
();
cit
!=
selectable_cards
.
end
();
++
cit
)
{
for
(
auto
cit
=
selectable_cards
.
begin
();
cit
!=
selectable_cards
.
end
();
++
cit
)
{
(
*
cit
)
->
is_selectable
=
false
;
(
*
cit
)
->
is_selected
=
false
;
}
}
void
ClientField
::
ClearChainSelect
()
{
std
::
vector
<
ClientCard
*>::
iterator
cit
;
for
(
cit
=
activatable_cards
.
begin
();
cit
!=
activatable_cards
.
end
();
++
cit
)
{
for
(
auto
cit
=
activatable_cards
.
begin
();
cit
!=
activatable_cards
.
end
();
++
cit
)
{
(
*
cit
)
->
cmdFlag
=
0
;
(
*
cit
)
->
chain_code
=
0
;
(
*
cit
)
->
is_selectable
=
false
;
...
...
gframe/drawing.cpp
View file @
4caba5ff
...
...
@@ -681,8 +681,7 @@ void Game::DrawStatus(ClientCard* pcard, int x1, int y1, int x2, int y2) {
}
void
Game
::
DrawGUI
()
{
if
(
imageLoading
.
size
())
{
std
::
map
<
irr
::
gui
::
CGUIImageButton
*
,
int
>::
iterator
mit
;
for
(
mit
=
imageLoading
.
begin
();
mit
!=
imageLoading
.
end
();
++
mit
)
for
(
auto
mit
=
imageLoading
.
begin
();
mit
!=
imageLoading
.
end
();
++
mit
)
mit
->
first
->
setImage
(
imageManager
.
GetTexture
(
mit
->
second
));
imageLoading
.
clear
();
}
...
...
@@ -781,7 +780,7 @@ void Game::DrawSpec() {
}
case
2
:
{
driver
->
draw2DImage
(
imageManager
.
GetTexture
(
showcardcode
),
position2di
(
574
,
150
));
driver
->
draw2DImage
(
imageManager
.
tMask
,
recti
(
574
+
showcarddif
,
150
,
7
6
1
,
404
),
recti
(
0
,
0
,
CARD_IMG_WIDTH
-
showcarddif
,
CARD_IMG_HEIGHT
),
0
,
0
,
true
);
driver
->
draw2DImage
(
imageManager
.
tMask
,
recti
(
574
+
showcarddif
,
150
,
7
5
1
,
404
),
recti
(
0
,
0
,
CARD_IMG_WIDTH
-
showcarddif
,
CARD_IMG_HEIGHT
),
0
,
0
,
true
);
showcarddif
+=
15
;
if
(
showcarddif
>=
CARD_IMG_WIDTH
)
{
showcard
=
0
;
...
...
gframe/duelclient.cpp
View file @
4caba5ff
...
...
@@ -2206,8 +2206,13 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) {
return
true
;
}
case
MSG_SHUFFLE_SET_CARD
:
{
std
::
vector
<
ClientCard
*>::
iterator
cit
;
std
::
vector
<
ClientCard
*>*
lst
=
0
;
int
loc
=
BufferIO
::
ReadInt8
(
pbuf
);
int
count
=
BufferIO
::
ReadInt8
(
pbuf
);
if
(
loc
==
LOCATION_MZONE
)
lst
=
mainGame
->
dField
.
mzone
;
else
lst
=
mainGame
->
dField
.
szone
;
ClientCard
*
mc
[
5
];
ClientCard
*
swp
;
int
c
,
l
,
s
,
ps
;
...
...
@@ -2216,7 +2221,7 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) {
l
=
BufferIO
::
ReadInt8
(
pbuf
);
s
=
BufferIO
::
ReadInt8
(
pbuf
);
BufferIO
::
ReadInt8
(
pbuf
);
mc
[
i
]
=
mainGame
->
dField
.
mzone
[
c
][
s
];
mc
[
i
]
=
lst
[
c
][
s
];
mc
[
i
]
->
SetCode
(
0
);
if
(
!
mainGame
->
dInfo
.
isReplay
||
!
mainGame
->
dInfo
.
isReplaySkiping
)
{
mc
[
i
]
->
dPos
=
irr
::
core
::
vector3df
((
3.95
f
-
mc
[
i
]
->
curPos
.
X
)
/
10
,
0
,
0.05
f
);
...
...
@@ -2234,9 +2239,9 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) {
BufferIO
::
ReadInt8
(
pbuf
);
ps
=
mc
[
i
]
->
sequence
;
if
(
l
>
0
)
{
swp
=
mainGame
->
dField
.
mzone
[
c
][
s
];
mainGame
->
dField
.
mzone
[
c
][
ps
]
=
swp
;
mainGame
->
dField
.
mzone
[
c
][
s
]
=
mc
[
i
];
swp
=
lst
[
c
][
s
];
lst
[
c
][
ps
]
=
swp
;
lst
[
c
][
s
]
=
mc
[
i
];
mc
[
i
]
->
sequence
=
s
;
swp
->
sequence
=
ps
;
}
...
...
@@ -2245,7 +2250,7 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) {
soundManager
.
PlaySoundEffect
(
SOUND_SHUFFLE
);
for
(
int
i
=
0
;
i
<
count
;
++
i
)
{
mainGame
->
dField
.
MoveCard
(
mc
[
i
],
10
);
for
(
cit
=
mc
[
i
]
->
overlayed
.
begin
();
cit
!=
mc
[
i
]
->
overlayed
.
end
();
++
cit
)
for
(
auto
cit
=
mc
[
i
]
->
overlayed
.
begin
();
cit
!=
mc
[
i
]
->
overlayed
.
end
();
++
cit
)
mainGame
->
dField
.
MoveCard
(
*
cit
,
10
);
}
mainGame
->
WaitFrameSignal
(
11
);
...
...
gframe/event_handler.cpp
View file @
4caba5ff
...
...
@@ -1534,7 +1534,7 @@ bool ClientField::OnEvent(const irr::SEvent& event) {
str
.
append
(
formatBuffer
);
}
}
for
(
std
::
map
<
int
,
int
>::
iterator
ctit
=
mcard
->
counters
.
begin
();
ctit
!=
mcard
->
counters
.
end
();
++
ctit
)
{
for
(
auto
ctit
=
mcard
->
counters
.
begin
();
ctit
!=
mcard
->
counters
.
end
();
++
ctit
)
{
myswprintf
(
formatBuffer
,
L"
\n
[%ls]: %d"
,
dataManager
.
GetCounterName
(
ctit
->
first
),
ctit
->
second
);
str
.
append
(
formatBuffer
);
}
...
...
gframe/game.cpp
View file @
4caba5ff
...
...
@@ -12,10 +12,15 @@
#ifndef _WIN32
#include <sys/types.h>
#include <sys/stat.h>
#include <dirent.h>
#include <unistd.h>
#else
#include <direct.h>
#include <io.h>
#endif
const
unsigned
short
PRO_VERSION
=
0x134
3
;
const
unsigned
short
PRO_VERSION
=
0x134
4
;
namespace
ygo
{
...
...
@@ -23,6 +28,7 @@ Game* mainGame;
bool
Game
::
Initialize
()
{
srand
(
time
(
0
));
initUtils
();
LoadConfig
();
irr
::
SIrrlichtCreationParameters
params
=
irr
::
SIrrlichtCreationParameters
();
params
.
AntiAlias
=
gameConf
.
antialias
;
...
...
@@ -1344,6 +1350,52 @@ void Game::AddDebugMsg(char* msg)
fclose
(
fp
);
}
}
bool
Game
::
MakeDirectory
(
const
std
::
string
folder
)
{
std
::
string
folder_builder
;
std
::
string
sub
;
sub
.
reserve
(
folder
.
size
());
for
(
auto
it
=
folder
.
begin
();
it
!=
folder
.
end
();
++
it
)
{
const
char
c
=
*
it
;
sub
.
push_back
(
c
);
if
(
c
==
'/'
||
it
==
folder
.
end
()
-
1
)
{
folder_builder
.
append
(
sub
);
if
(
access
(
folder_builder
.
c_str
(),
0
)
!=
0
)
#ifdef _WIN32
if
(
mkdir
(
folder_builder
.
c_str
())
!=
0
)
#else
if
(
mkdir
(
folder_builder
.
c_str
(),
0777
)
!=
0
)
#endif
return
false
;
sub
.
clear
();
}
}
return
true
;
}
void
Game
::
initUtils
()
{
//user files
MakeDirectory
(
"replay"
);
//cards from extra pack
MakeDirectory
(
"expansions"
);
//files in ygopro-starter-pack
MakeDirectory
(
"deck"
);
MakeDirectory
(
"single"
);
//original files
MakeDirectory
(
"script"
);
MakeDirectory
(
"textures"
);
//sound
MakeDirectory
(
"sound"
);
MakeDirectory
(
"sound/BGM"
);
MakeDirectory
(
"sound/BGM/advantage"
);
MakeDirectory
(
"sound/BGM/deck"
);
MakeDirectory
(
"sound/BGM/disadvantage"
);
MakeDirectory
(
"sound/BGM/duel"
);
MakeDirectory
(
"sound/BGM/lose"
);
MakeDirectory
(
"sound/BGM/menu"
);
MakeDirectory
(
"sound/BGM/win"
);
//pics
MakeDirectory
(
"pics"
);
MakeDirectory
(
"pics/field"
);
}
void
Game
::
ClearTextures
()
{
matManager
.
mCard
.
setTexture
(
0
,
0
);
imgCard
->
setImage
(
imageManager
.
tCover
[
0
]);
...
...
@@ -1381,6 +1433,9 @@ void Game::CloseDuelWindow() {
wReplaySave
->
setVisible
(
false
);
stHintMsg
->
setVisible
(
false
);
btnSideOK
->
setVisible
(
false
);
btnSideShuffle
->
setVisible
(
false
);
btnSideSort
->
setVisible
(
false
);
btnSideReload
->
setVisible
(
false
);
btnLeaveGame
->
setVisible
(
false
);
btnSpectatorSwap
->
setVisible
(
false
);
btnChainIgnore
->
setVisible
(
false
);
...
...
gframe/game.h
View file @
4caba5ff
...
...
@@ -133,6 +133,8 @@ public:
void
AddChatMsg
(
wchar_t
*
msg
,
int
player
);
void
ClearChatMsg
();
void
AddDebugMsg
(
char
*
msgbuf
);
bool
MakeDirectory
(
const
std
::
string
folder
);
void
initUtils
();
void
ClearTextures
();
void
CloseDuelWindow
();
...
...
gframe/replay_mode.cpp
View file @
4caba5ff
...
...
@@ -497,6 +497,7 @@ bool ReplayMode::ReplayAnalyze(char* msg, unsigned int len) {
break
;
}
case
MSG_SHUFFLE_SET_CARD
:
{
pbuf
++
;
count
=
BufferIO
::
ReadInt8
(
pbuf
);
pbuf
+=
count
*
8
;
DuelClient
::
ClientAnalyze
(
offset
,
pbuf
-
offset
);
...
...
gframe/single_duel.cpp
View file @
4caba5ff
...
...
@@ -874,14 +874,21 @@ int SingleDuel::Analyze(char* msgbuffer, unsigned int len) {
break
;
}
case
MSG_SHUFFLE_SET_CARD
:
{
int
loc
=
BufferIO
::
ReadInt8
(
pbuf
);
count
=
BufferIO
::
ReadInt8
(
pbuf
);
pbuf
+=
count
*
8
;
NetServer
::
SendBufferToPlayer
(
players
[
0
],
STOC_GAME_MSG
,
offset
,
pbuf
-
offset
);
NetServer
::
ReSendToPlayer
(
players
[
1
]);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
RefreshMzone
(
0
,
0x181fff
,
0
);
RefreshMzone
(
1
,
0x181fff
,
0
);
if
(
loc
==
LOCATION_MZONE
)
{
RefreshMzone
(
0
,
0x181fff
,
0
);
RefreshMzone
(
1
,
0x181fff
,
0
);
}
else
{
RefreshSzone
(
0
,
0x181fff
,
0
);
RefreshSzone
(
1
,
0x181fff
,
0
);
}
break
;
}
case
MSG_NEW_TURN
:
{
...
...
gframe/single_mode.cpp
View file @
4caba5ff
...
...
@@ -415,6 +415,7 @@ bool SingleMode::SinglePlayAnalyze(char* msg, unsigned int len) {
break
;
}
case
MSG_SHUFFLE_SET_CARD
:
{
pbuf
++
;
count
=
BufferIO
::
ReadInt8
(
pbuf
);
pbuf
+=
count
*
8
;
DuelClient
::
ClientAnalyze
(
offset
,
pbuf
-
offset
);
...
...
gframe/tag_duel.cpp
View file @
4caba5ff
...
...
@@ -832,6 +832,7 @@ int TagDuel::Analyze(char* msgbuffer, unsigned int len) {
break
;
}
case
MSG_SHUFFLE_SET_CARD
:
{
int
loc
=
BufferIO
::
ReadInt8
(
pbuf
);
count
=
BufferIO
::
ReadInt8
(
pbuf
);
pbuf
+=
count
*
8
;
NetServer
::
SendBufferToPlayer
(
players
[
0
],
STOC_GAME_MSG
,
offset
,
pbuf
-
offset
);
...
...
@@ -840,8 +841,13 @@ int TagDuel::Analyze(char* msgbuffer, unsigned int len) {
NetServer
::
ReSendToPlayer
(
players
[
3
]);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
RefreshMzone
(
0
,
0x181fff
,
0
);
RefreshMzone
(
1
,
0x181fff
,
0
);
if
(
loc
==
LOCATION_MZONE
)
{
RefreshMzone
(
0
,
0x181fff
,
0
);
RefreshMzone
(
1
,
0x181fff
,
0
);
}
else
{
RefreshSzone
(
0
,
0x181fff
,
0
);
RefreshSzone
(
1
,
0x181fff
,
0
);
}
break
;
}
case
MSG_NEW_TURN
:
{
...
...
lflist.conf
View file @
4caba5ff
This diff is collapsed.
Click to expand it.
ocgcore
@
5d43ab2b
Subproject commit
3c33920e28aee1361ddcfc805bf992247195b43d
Subproject commit
5d43ab2b741fa770b4463e1f6a34c68f543ba31f
script
@
77b486a9
Subproject commit
63aa6c77dae13e742d43f92528ca7a84ec80b7d8
Subproject commit
77b486a913a2552af9e74ec69189b66930bfbaac
strings.conf
View file @
4caba5ff
...
...
@@ -240,6 +240,9 @@
!
system
1161
效果处理
!
system
1162
效果重置
!
system
1163
灵摆召唤
!
system
1164
同调召唤
!
system
1165
超量召唤
!
system
1166
连接召唤
#menu
!
system
1200
联机模式
!
system
1201
单人模式
...
...
@@ -412,6 +415,7 @@
!
system
1418
额外卡组数量应不超过
15
张,当前卡组数量为%
d
张。
!
system
1419
副卡组数量应不超过
15
张,当前卡组数量为%
d
张。
!
system
1420
有额外卡组卡片存在于主卡组,可能是额外卡组数量超过
15
张。
!
system
1421
宣言的卡不符合条件,或无法被主机识别。
!
system
1500
决斗结束。
!
system
1501
录像结束。
!
system
1502
连接已断开。
...
...
@@ -464,6 +468,8 @@
!
victory
0
x1a
「魂之接力」效果胜利
!
victory
0
x1b
「鬼计惰天使」效果胜利
!
victory
0
x1c
「幻煌龙的天涡」效果胜利
!
victory
0
x1d
「方程式运动员胜利团队」效果胜利
!
victory
0
x1e
「飞行象」效果胜利
!
victory
0
x20
由于「%
ls
」的效果获得比赛胜利
#counters
!
counter
0
x1
魔力指示物
...
...
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