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
YGOPRO-520DIY
ygopro
Commits
1b44706a
Commit
1b44706a
authored
Jan 23, 2020
by
nanahira
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'master' of github.com:Fluorohydride/ygopro
parents
d9dc67aa
95fb23d1
Changes
16
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
16 changed files
with
467 additions
and
218 deletions
+467
-218
cmake/compiler/msvc.cmake
cmake/compiler/msvc.cmake
+1
-1
gframe/CMakeLists.txt
gframe/CMakeLists.txt
+6
-0
gframe/client_card.cpp
gframe/client_card.cpp
+9
-6
gframe/client_field.cpp
gframe/client_field.cpp
+2
-0
gframe/config.h
gframe/config.h
+3
-2
gframe/deck_con.cpp
gframe/deck_con.cpp
+0
-1
gframe/deck_manager.cpp
gframe/deck_manager.cpp
+0
-1
gframe/drawing.cpp
gframe/drawing.cpp
+7
-1
gframe/duelclient.cpp
gframe/duelclient.cpp
+45
-6
gframe/event_handler.cpp
gframe/event_handler.cpp
+4
-6
gframe/replay.cpp
gframe/replay.cpp
+0
-1
gframe/single_duel.cpp
gframe/single_duel.cpp
+5
-4
gframe/tag_duel.cpp
gframe/tag_duel.cpp
+5
-4
lflist.conf
lflist.conf
+372
-181
premake4.lua
premake4.lua
+0
-3
strings.conf
strings.conf
+8
-1
No files found.
cmake/compiler/msvc.cmake
View file @
1b44706a
add_definitions
(
"-wd4996"
"-D_CRT_SECURE_NO_WARNINGS"
"-D_ITERATOR_DEBUG_LEVEL=0"
)
add_definitions
(
"-wd4996"
"-D_CRT_SECURE_NO_WARNINGS"
)
add_definitions
(
"-D_UNICODE"
"-DUNICODE"
"/utf-8"
)
include
(
MSVCMultipleProcessCompile
)
...
...
gframe/CMakeLists.txt
View file @
1b44706a
...
...
@@ -48,6 +48,12 @@ else ()
target_link_libraries
(
ygopro
${
CMAKE_THREAD_LIBS_INIT
}
${
DL_LIBRARIES
}
)
endif
()
if
(
APPLE
)
find_library
(
COCOA_LIBRARY Cocoa
)
find_library
(
IOKIT_LIBRARY IOKit
)
target_link_libraries
(
ygopro
${
COCOA_LIBRARY
}
${
IOKIT_LIBRARY
}
)
endif
()
if
(
USE_IRRKLANG
)
add_definitions
(
"-DYGOPRO_USE_IRRKLANG"
)
if
(
MSVC
)
...
...
gframe/client_card.cpp
View file @
1b44706a
...
...
@@ -213,14 +213,17 @@ bool ClientCard::client_card_sort(ClientCard* c1, ClientCard* c2) {
else
return
c1
->
sequence
<
c2
->
sequence
;
else
{
if
(
c1
->
location
&
(
LOCATION_DECK
|
LOCATION_GRAVE
|
LOCATION_REMOVED
|
LOCATION_EXTRA
))
{
for
(
size_t
i
=
0
;
i
<
mainGame
->
dField
.
chains
.
size
();
++
i
)
{
auto
chit
=
mainGame
->
dField
.
chains
[
i
];
if
(
c1
==
chit
.
chain_card
||
chit
.
target
.
find
(
c1
)
!=
chit
.
target
.
end
())
return
true
;
auto
it1
=
std
::
find_if
(
mainGame
->
dField
.
chains
.
rbegin
(),
mainGame
->
dField
.
chains
.
rend
(),
[
c1
](
const
auto
&
ch
)
{
return
c1
==
ch
.
chain_card
||
ch
.
target
.
find
(
c1
)
!=
ch
.
target
.
end
();
});
auto
it2
=
std
::
find_if
(
mainGame
->
dField
.
chains
.
rbegin
(),
mainGame
->
dField
.
chains
.
rend
(),
[
c2
](
const
auto
&
ch
)
{
return
c2
==
ch
.
chain_card
||
ch
.
target
.
find
(
c2
)
!=
ch
.
target
.
end
();
});
if
(
it1
!=
mainGame
->
dField
.
chains
.
rend
()
||
it2
!=
mainGame
->
dField
.
chains
.
rend
())
{
return
it1
<
it2
;
}
return
c1
->
sequence
>
c2
->
sequence
;
}
else
}
else
return
c1
->
sequence
<
c2
->
sequence
;
}
}
...
...
gframe/client_field.cpp
View file @
1b44706a
...
...
@@ -18,6 +18,8 @@ ClientField::ClientField() {
hovered_controler
=
0
;
hovered_location
=
0
;
hovered_sequence
=
0
;
selectable_field
=
0
;
selected_field
=
0
;
deck_act
=
false
;
grave_act
=
false
;
remove_act
=
false
;
...
...
gframe/config.h
View file @
1b44706a
...
...
@@ -59,10 +59,10 @@ inline int myswprintf(wchar_t(&buf)[N], const wchar_t* fmt, TR... args) {
#ifdef __APPLE__
#include <OpenGL/gl.h>
#include <OpenGL/glu.h>
#else
#else
//__APPLE__
#include <GL/gl.h>
#include <GL/glu.h>
#endif
#endif
//__APPLE__
#include "CGUITTFont.h"
#include "CGUIImageButton.h"
#include <iostream>
...
...
@@ -72,6 +72,7 @@ inline int myswprintf(wchar_t(&buf)[N], const wchar_t* fmt, TR... args) {
#include <time.h>
#include <thread>
#include <mutex>
#include <algorithm>
#include "bufferio.h"
#include "myfilesystem.h"
#include "mysignal.h"
...
...
gframe/deck_con.cpp
View file @
1b44706a
...
...
@@ -6,7 +6,6 @@
#include "sound_manager.h"
#include "game.h"
#include "duelclient.h"
#include <algorithm>
namespace
ygo
{
...
...
gframe/deck_manager.cpp
View file @
1b44706a
...
...
@@ -3,7 +3,6 @@
#include "network.h"
#include "game.h"
#include "base64.h"
#include <algorithm>
namespace
ygo
{
...
...
gframe/drawing.cpp
View file @
1b44706a
...
...
@@ -126,7 +126,7 @@ void Game::DrawBackGround() {
driver
->
drawVertexPrimitiveList
(
matManager
.
vField
,
4
,
matManager
.
iRectangle
,
2
);
driver
->
setMaterial
(
matManager
.
mBackLine
);
//select field
if
(
dInfo
.
curMsg
==
MSG_SELECT_PLACE
||
dInfo
.
curMsg
==
MSG_SELECT_DISFIELD
)
{
if
(
dInfo
.
curMsg
==
MSG_SELECT_PLACE
||
dInfo
.
curMsg
==
MSG_SELECT_DISFIELD
||
dInfo
.
curMsg
==
MSG_HINT
)
{
float
cv
[
4
]
=
{
0.0
f
,
0.0
f
,
1.0
f
,
1.0
f
};
unsigned
int
filter
=
0x1
;
for
(
int
i
=
0
;
i
<
7
;
++
i
,
filter
<<=
1
)
{
...
...
@@ -1095,10 +1095,16 @@ void Game::HideElement(irr::gui::IGUIElement * win, bool set_action) {
for
(
int
i
=
0
;
i
<
5
;
++
i
)
btnCardSelect
[
i
]
->
setDrawImage
(
false
);
dField
.
conti_selecting
=
false
;
stCardListTip
->
setVisible
(
false
);
for
(
auto
&
pcard
:
dField
.
selectable_cards
)
dField
.
SetShowMark
(
pcard
,
false
);
}
if
(
win
==
wCardDisplay
)
{
for
(
int
i
=
0
;
i
<
5
;
++
i
)
btnCardDisplay
[
i
]
->
setDrawImage
(
false
);
stCardListTip
->
setVisible
(
false
);
for
(
auto
&
pcard
:
dField
.
display_cards
)
dField
.
SetShowMark
(
pcard
,
false
);
}
fadingList
.
push_back
(
fu
);
}
...
...
gframe/duelclient.cpp
View file @
1b44706a
...
...
@@ -8,7 +8,6 @@
#include "game.h"
#include "replay.h"
#include "replay_mode.h"
#include <algorithm>
namespace
ygo
{
...
...
@@ -1104,7 +1103,7 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) {
}
case
MSG_HINT
:
{
int
type
=
BufferIO
::
ReadInt8
(
pbuf
);
/*int player = */
BufferIO
::
ReadInt8
(
pbuf
);
int
player
=
BufferIO
::
ReadInt8
(
pbuf
);
int
data
=
BufferIO
::
ReadInt32
(
pbuf
);
if
(
mainGame
->
dInfo
.
isReplaySkiping
)
return
true
;
...
...
@@ -1191,7 +1190,48 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) {
mainGame
->
WaitFrameSignal
(
30
);
break
;
}
//playing custom bgm
case
HINT_ZONE
:
{
if
(
mainGame
->
LocalPlayer
(
player
)
==
1
)
data
=
(
data
>>
16
)
|
(
data
<<
16
);
for
(
unsigned
filter
=
0x1
;
filter
!=
0
;
filter
<<=
1
)
{
std
::
wstring
str
;
if
(
unsigned
s
=
filter
&
data
)
{
if
(
s
&
0x60
)
{
str
+=
dataManager
.
GetSysString
(
1081
);
data
&=
~
0x600000
;
}
else
if
(
s
&
0xffff
)
str
+=
dataManager
.
GetSysString
(
102
);
else
if
(
s
&
0xffff0000
)
{
str
+=
dataManager
.
GetSysString
(
103
);
s
>>=
16
;
}
if
(
s
&
0x1f
)
str
+=
dataManager
.
GetSysString
(
1002
);
else
if
(
s
&
0xff00
)
{
s
>>=
8
;
if
(
s
&
0x1f
)
str
+=
dataManager
.
GetSysString
(
1003
);
else
if
(
s
&
0x20
)
str
+=
dataManager
.
GetSysString
(
1008
);
else
if
(
s
&
0xc0
)
str
+=
dataManager
.
GetSysString
(
1009
);
}
int
seq
=
1
;
for
(
int
i
=
0x1
;
i
<
0x100
;
i
<<=
1
)
{
if
(
s
&
i
)
break
;
++
seq
;
}
str
+=
L"("
+
std
::
to_wstring
(
seq
)
+
L")"
;
myswprintf
(
textBuffer
,
dataManager
.
GetSysString
(
1510
),
str
.
c_str
());
mainGame
->
AddLog
(
textBuffer
);
}
}
mainGame
->
dField
.
selectable_field
=
data
;
mainGame
->
WaitFrameSignal
(
40
);
mainGame
->
dField
.
selectable_field
=
0
;
break
;
}
case
21
:
{
//HINT_MUSIC
char
BGMName
[
1024
];
if
(
data
)
{
...
...
@@ -1225,7 +1265,6 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) {
}
else
{
soundManager
.
StopBGM
();
}
break
;
}
}
break
;
...
...
@@ -1249,7 +1288,7 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) {
else
if
(
mainGame
->
LocalPlayer
(
player
)
==
0
)
{
mainGame
->
showcardcode
=
1
;
if
(
match_kill
)
myswprintf
(
vic_buf
,
dataManager
.
GetVictoryString
(
0x
20
),
dataManager
.
GetName
(
match_kill
));
myswprintf
(
vic_buf
,
dataManager
.
GetVictoryString
(
0x
ffff
),
dataManager
.
GetName
(
match_kill
));
else
if
(
type
<
0x10
)
myswprintf
(
vic_buf
,
L"[%ls] %ls"
,
mainGame
->
dInfo
.
clientname
,
dataManager
.
GetVictoryString
(
type
));
else
...
...
@@ -1258,7 +1297,7 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) {
}
else
{
mainGame
->
showcardcode
=
2
;
if
(
match_kill
)
myswprintf
(
vic_buf
,
dataManager
.
GetVictoryString
(
0x
20
),
dataManager
.
GetName
(
match_kill
));
myswprintf
(
vic_buf
,
dataManager
.
GetVictoryString
(
0x
ffff
),
dataManager
.
GetName
(
match_kill
));
else
if
(
type
<
0x10
)
myswprintf
(
vic_buf
,
L"[%ls] %ls"
,
mainGame
->
dInfo
.
hostname
,
dataManager
.
GetVictoryString
(
type
));
else
...
...
gframe/event_handler.cpp
View file @
1b44706a
...
...
@@ -11,7 +11,6 @@
#include "single_mode.h"
#include "materials.h"
#include "../ocgcore/common.h"
#include <algorithm>
namespace
ygo
{
...
...
@@ -640,7 +639,6 @@ bool ClientField::OnEvent(const irr::SEvent& event) {
case
BUTTON_CARD_4
:
{
if
(
mainGame
->
dInfo
.
isReplay
)
break
;
mainGame
->
stCardListTip
->
setVisible
(
false
);
switch
(
mainGame
->
dInfo
.
curMsg
)
{
case
MSG_SELECT_IDLECMD
:
case
MSG_SELECT_BATTLECMD
:
...
...
@@ -737,7 +735,8 @@ bool ClientField::OnEvent(const irr::SEvent& event) {
if
(
selected_cards
.
size
()
>
0
)
{
SetResponseSelectedCards
();
ShowCancelOrFinishButton
(
0
);
mainGame
->
HideElement
(
mainGame
->
wCardSelect
,
true
);}
mainGame
->
HideElement
(
mainGame
->
wCardSelect
,
true
);
}
break
;
}
case
MSG_SELECT_SUM
:
{
...
...
@@ -786,7 +785,6 @@ bool ClientField::OnEvent(const irr::SEvent& event) {
break
;
}
case
BUTTON_CARD_SEL_OK
:
{
mainGame
->
stCardListTip
->
setVisible
(
false
);
if
(
mainGame
->
dInfo
.
isReplay
)
{
mainGame
->
HideElement
(
mainGame
->
wCardSelect
);
break
;
...
...
@@ -1035,13 +1033,13 @@ bool ClientField::OnEvent(const irr::SEvent& event) {
break
;
}
case
irr
:
:
gui
::
EGET_ELEMENT_LEFT
:
{
if
(
id
>=
BUTTON_CARD_0
&&
id
<=
BUTTON_CARD_4
)
{
if
(
id
>=
BUTTON_CARD_0
&&
id
<=
BUTTON_CARD_4
&&
mainGame
->
stCardListTip
->
isVisible
()
)
{
int
pos
=
mainGame
->
scrCardList
->
getPos
()
/
10
;
ClientCard
*
mcard
=
selectable_cards
[
id
-
BUTTON_CARD_0
+
pos
];
SetShowMark
(
mcard
,
false
);
mainGame
->
stCardListTip
->
setVisible
(
false
);
}
if
(
id
>=
BUTTON_DISPLAY_0
&&
id
<=
BUTTON_DISPLAY_4
)
{
if
(
id
>=
BUTTON_DISPLAY_0
&&
id
<=
BUTTON_DISPLAY_4
&&
mainGame
->
stCardListTip
->
isVisible
()
)
{
int
pos
=
mainGame
->
scrDisplayList
->
getPos
()
/
10
;
ClientCard
*
mcard
=
display_cards
[
id
-
BUTTON_DISPLAY_0
+
pos
];
SetShowMark
(
mcard
,
false
);
...
...
gframe/replay.cpp
View file @
1b44706a
#include "replay.h"
#include "../ocgcore/ocgapi.h"
#include "../ocgcore/common.h"
#include <algorithm>
#include "lzma/LzmaLib.h"
namespace
ygo
{
...
...
gframe/single_duel.cpp
View file @
1b44706a
...
...
@@ -593,16 +593,17 @@ int SingleDuel::Analyze(char* msgbuffer, unsigned int len) {
case
6
:
case
7
:
case
8
:
case
9
:
{
case
9
:
case
11
:
{
NetServer
::
SendBufferToPlayer
(
players
[
1
-
player
],
STOC_GAME_MSG
,
offset
,
pbuf
-
offset
);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
break
;
}
case
10
:
case
1
1
:
case
1
2
:
case
1
3
:
{
case
2
1
:
case
2
2
:
case
2
3
:
{
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/tag_duel.cpp
View file @
1b44706a
...
...
@@ -555,7 +555,8 @@ int TagDuel::Analyze(char* msgbuffer, unsigned int len) {
case
6
:
case
7
:
case
8
:
case
9
:
{
case
9
:
case
11
:
{
for
(
int
i
=
0
;
i
<
4
;
++
i
)
if
(
players
[
i
]
!=
cur_player
[
player
])
NetServer
::
SendBufferToPlayer
(
players
[
i
],
STOC_GAME_MSG
,
offset
,
pbuf
-
offset
);
...
...
@@ -563,9 +564,9 @@ int TagDuel::Analyze(char* msgbuffer, unsigned int len) {
NetServer
::
ReSendToPlayer
(
*
oit
);
break
;
}
case
1
1
:
case
1
2
:
case
1
3
:
case
2
1
:
case
2
2
:
case
2
3
:
case
10
:
{
for
(
int
i
=
0
;
i
<
4
;
++
i
)
NetServer
::
SendBufferToPlayer
(
players
[
i
],
STOC_GAME_MSG
,
offset
,
pbuf
-
offset
);
...
...
lflist.conf
View file @
1b44706a
This diff is collapsed.
Click to expand it.
premake4.lua
View file @
1b44706a
...
...
@@ -43,9 +43,6 @@ solution "ygo"
defines
"NDEBUG"
buildoptions
"-march=native"
configuration
{
"Debug"
,
"vs*"
}
defines
{
"_ITERATOR_DEBUG_LEVEL=0"
}
configuration
"Release"
--flags { "OptimizeSpeed" }
targetdir
"bin/release"
...
...
strings.conf
View file @
1b44706a
...
...
@@ -53,6 +53,8 @@
!
system
98
是否要解放对方怪兽?
!
system
100
先攻
!
system
101
后攻
!
system
102
我方
!
system
103
对方
!
system
200
是否在[%
ls
]发动[%
ls
]的效果?
!
system
201
此时没有可以发动的效果
!
system
202
是否要确认场上的情况?
...
...
@@ -204,6 +206,7 @@
!
system
1075
特殊召唤
!
system
1076
连接
!
system
1080
(
N
/
A
)
!
system
1081
额外怪兽区
#GUI
!
system
1100
魔陷破坏
!
system
1101
怪兽破坏
...
...
@@ -535,7 +538,8 @@
!
victory
0
x1d
「方程式运动员胜利团队」效果胜利
!
victory
0
x1e
「飞行象」效果胜利
!
victory
0
x1f
「守护神 艾克佐迪亚」效果胜利
!
victory
0
x20
由于「%
ls
」的效果获得比赛胜利
!
victory
0
x20
「真艾克佐迪亚」效果胜利
!
victory
0
xffff
由于「%
ls
」的效果获得比赛胜利
#counters
!
counter
0
x1
魔力指示物
!
counter
0
x1002
楔指示物
...
...
@@ -1020,3 +1024,6 @@
!
setname
0
x139
守护神官 守護神官
!
setname
0
x13a
拟声 オノマト
!
setname
0
x13b
叛逆 リベリオン
!
setname
0
x13c
代码破坏者 コードブレイカー
!
setname
0
x13d
星义 ネメシス
!
setname
0
x13e
巴巴罗斯 バルバロス
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