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
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
MyCard
ygopro
Commits
0f53b60a
Commit
0f53b60a
authored
Sep 26, 2016
by
mercury233
Browse files
Options
Browse Files
Download
Plain Diff
Merge
https://github.com/Fluorohydride/ygopro
parents
732c8383
dde1ac7a
Changes
12
Hide whitespace changes
Inline
Side-by-side
Showing
12 changed files
with
401 additions
and
34 deletions
+401
-34
gframe/client_field.cpp
gframe/client_field.cpp
+177
-2
gframe/client_field.h
gframe/client_field.h
+6
-5
gframe/duelclient.cpp
gframe/duelclient.cpp
+29
-10
gframe/event_handler.cpp
gframe/event_handler.cpp
+8
-8
gframe/game.cpp
gframe/game.cpp
+15
-2
gframe/replay_mode.cpp
gframe/replay_mode.cpp
+4
-1
gframe/single_duel.cpp
gframe/single_duel.cpp
+2
-1
gframe/single_mode.cpp
gframe/single_mode.cpp
+4
-1
gframe/tag_duel.cpp
gframe/tag_duel.cpp
+2
-1
lflist.conf
lflist.conf
+152
-1
ocgcore
ocgcore
+1
-1
script
script
+1
-1
No files found.
gframe/client_field.cpp
View file @
0f53b60a
#include <stack>
#include "client_field.h"
#include "client_card.h"
#include "duelclient.h"
...
...
@@ -1329,7 +1330,148 @@ static bool is_declarable(T const& cd, int declarable_type) {
return
cd
.
code
==
CARD_MARINE_DOLPHIN
||
cd
.
code
==
CARD_TWINKLE_MOSS
||
(
!
cd
.
alias
&&
(
cd
.
type
&
(
TYPE_MONSTER
+
TYPE_TOKEN
))
!=
(
TYPE_MONSTER
+
TYPE_TOKEN
));
}
void
ClientField
::
UpdateDeclarableCode
(
bool
enter
)
{
template
<
class
T
>
static
bool
is_declarable
(
T
const
&
cd
,
const
std
::
vector
<
int
>&
opcode
)
{
std
::
stack
<
int
>
stack
;
for
(
auto
it
=
opcode
.
begin
();
it
!=
opcode
.
end
();
++
it
)
{
switch
(
*
it
)
{
case
OPCODE_ADD
:
{
if
(
stack
.
size
()
>=
2
)
{
int
rhs
=
stack
.
top
();
stack
.
pop
();
int
lhs
=
stack
.
top
();
stack
.
pop
();
stack
.
push
(
lhs
+
rhs
);
}
break
;
}
case
OPCODE_SUB
:
{
if
(
stack
.
size
()
>=
2
)
{
int
rhs
=
stack
.
top
();
stack
.
pop
();
int
lhs
=
stack
.
top
();
stack
.
pop
();
stack
.
push
(
lhs
-
rhs
);
}
break
;
}
case
OPCODE_MUL
:
{
if
(
stack
.
size
()
>=
2
)
{
int
rhs
=
stack
.
top
();
stack
.
pop
();
int
lhs
=
stack
.
top
();
stack
.
pop
();
stack
.
push
(
lhs
*
rhs
);
}
break
;
}
case
OPCODE_DIV
:
{
if
(
stack
.
size
()
>=
2
)
{
int
rhs
=
stack
.
top
();
stack
.
pop
();
int
lhs
=
stack
.
top
();
stack
.
pop
();
stack
.
push
(
lhs
/
rhs
);
}
break
;
}
case
OPCODE_AND
:
{
if
(
stack
.
size
()
>=
2
)
{
int
rhs
=
stack
.
top
();
stack
.
pop
();
int
lhs
=
stack
.
top
();
stack
.
pop
();
stack
.
push
(
lhs
&&
rhs
);
}
break
;
}
case
OPCODE_OR
:
{
if
(
stack
.
size
()
>=
2
)
{
int
rhs
=
stack
.
top
();
stack
.
pop
();
int
lhs
=
stack
.
top
();
stack
.
pop
();
stack
.
push
(
lhs
||
rhs
);
}
break
;
}
case
OPCODE_NEG
:
{
if
(
stack
.
size
()
>=
1
)
{
int
val
=
stack
.
top
();
stack
.
pop
();
stack
.
push
(
-
val
);
}
break
;
}
case
OPCODE_NOT
:
{
if
(
stack
.
size
()
>=
1
)
{
int
val
=
stack
.
top
();
stack
.
pop
();
stack
.
push
(
!
val
);
}
break
;
}
case
OPCODE_ISCODE
:
{
if
(
stack
.
size
()
>=
1
)
{
int
code
=
stack
.
top
();
stack
.
pop
();
stack
.
push
(
cd
.
code
==
code
);
}
break
;
}
case
OPCODE_ISSETCARD
:
{
if
(
stack
.
size
()
>=
1
)
{
int
set_code
=
stack
.
top
();
stack
.
pop
();
unsigned
long
long
sc
=
cd
.
setcode
;
bool
res
=
false
;
int
settype
=
set_code
&
0xfff
;
int
setsubtype
=
set_code
&
0xf000
;
while
(
sc
)
{
if
((
sc
&
0xfff
)
==
settype
&&
(
sc
&
0xf000
&
setsubtype
)
==
setsubtype
)
res
=
true
;
sc
=
sc
>>
16
;
}
stack
.
push
(
res
);
}
break
;
}
case
OPCODE_ISTYPE
:
{
if
(
stack
.
size
()
>=
1
)
{
int
val
=
stack
.
top
();
stack
.
pop
();
stack
.
push
(
cd
.
type
&
val
);
}
break
;
}
case
OPCODE_ISRACE
:
{
if
(
stack
.
size
()
>=
1
)
{
int
race
=
stack
.
top
();
stack
.
pop
();
stack
.
push
(
cd
.
race
&
race
);
}
break
;
}
case
OPCODE_ISATTRIBUTE
:
{
if
(
stack
.
size
()
>=
1
)
{
int
attribute
=
stack
.
top
();
stack
.
pop
();
stack
.
push
(
cd
.
attribute
&
attribute
);
}
break
;
}
default:
{
stack
.
push
(
*
it
);
break
;
}
}
}
if
(
stack
.
size
()
!=
1
||
stack
.
top
()
==
0
)
return
false
;
return
cd
.
code
==
CARD_MARINE_DOLPHIN
||
cd
.
code
==
CARD_TWINKLE_MOSS
||
(
!
cd
.
alias
&&
(
cd
.
type
&
(
TYPE_MONSTER
+
TYPE_TOKEN
))
!=
(
TYPE_MONSTER
+
TYPE_TOKEN
));
}
void
ClientField
::
UpdateDeclarableCodeType
(
bool
enter
)
{
const
wchar_t
*
pname
=
mainGame
->
ebANCard
->
getText
();
int
trycode
=
BufferIO
::
GetVal
(
pname
);
CardString
cstr
;
...
...
@@ -1341,7 +1483,7 @@ void ClientField::UpdateDeclarableCode(bool enter) {
ancard
.
push_back
(
trycode
);
return
;
}
if
(
pname
[
0
]
==
0
||
(
pname
[
1
]
==
0
&&
!
enter
)
)
if
(
(
pname
[
0
]
==
0
||
pname
[
1
]
==
0
)
&&
!
enter
)
return
;
mainGame
->
lstANCard
->
clear
();
ancard
.
clear
();
...
...
@@ -1356,4 +1498,37 @@ void ClientField::UpdateDeclarableCode(bool enter) {
}
}
}
void
ClientField
::
UpdateDeclarableCodeOpcode
(
bool
enter
)
{
const
wchar_t
*
pname
=
mainGame
->
ebANCard
->
getText
();
int
trycode
=
BufferIO
::
GetVal
(
pname
);
CardString
cstr
;
CardData
cd
;
if
(
dataManager
.
GetString
(
trycode
,
&
cstr
)
&&
dataManager
.
GetData
(
trycode
,
&
cd
)
&&
is_declarable
(
cd
,
opcode
))
{
mainGame
->
lstANCard
->
clear
();
ancard
.
clear
();
mainGame
->
lstANCard
->
addItem
(
cstr
.
name
);
ancard
.
push_back
(
trycode
);
return
;
}
if
((
pname
[
0
]
==
0
||
pname
[
1
]
==
0
)
&&
!
enter
)
return
;
mainGame
->
lstANCard
->
clear
();
ancard
.
clear
();
for
(
auto
cit
=
dataManager
.
_strings
.
begin
();
cit
!=
dataManager
.
_strings
.
end
();
++
cit
)
{
if
(
wcsstr
(
cit
->
second
.
name
,
pname
)
!=
0
)
{
auto
cp
=
dataManager
.
GetCodePointer
(
cit
->
first
);
//verified by _strings
//datas.alias can be double card names or alias
if
(
is_declarable
(
cp
->
second
,
opcode
))
{
mainGame
->
lstANCard
->
addItem
(
cit
->
second
.
name
);
ancard
.
push_back
(
cit
->
first
);
}
}
}
}
void
ClientField
::
UpdateDeclarableCode
(
bool
enter
)
{
if
(
opcode
.
size
()
==
0
)
UpdateDeclarableCodeType
(
enter
);
else
UpdateDeclarableCodeOpcode
(
enter
);
}
}
gframe/client_field.h
View file @
0f53b60a
...
...
@@ -37,9 +37,7 @@ public:
std
::
vector
<
ClientCard
*>
activatable_cards
;
std
::
vector
<
ClientCard
*>
attackable_cards
;
std
::
vector
<
ClientCard
*>
conti_cards
;
std
::
vector
<
int
>
activatable_descs
;
std
::
set
<
int
>
reset_descs
;
std
::
set
<
int
>
conti_descs
;
std
::
vector
<
std
::
pair
<
int
,
int
>>
activatable_descs
;
std
::
vector
<
int
>
select_options
;
std
::
vector
<
ChainInfo
>
chains
;
int
extra_p_count
[
2
];
...
...
@@ -65,6 +63,7 @@ public:
std
::
vector
<
ClientCard
*>
selected_cards
;
std
::
set
<
ClientCard
*>
selectsum_cards
;
std
::
vector
<
ClientCard
*>
selectsum_all
;
std
::
vector
<
int
>
opcode
;
std
::
vector
<
ClientCard
*>
display_cards
;
std
::
vector
<
int
>
sort_list
;
std
::
map
<
int
,
int
>
player_desc_hints
[
2
];
...
...
@@ -106,7 +105,9 @@ public:
bool
check_sel_sum_s
(
const
std
::
set
<
ClientCard
*>&
left
,
int
index
,
int
acc
);
void
check_sel_sum_t
(
const
std
::
set
<
ClientCard
*>&
left
,
int
acc
);
bool
check_sum
(
std
::
set
<
ClientCard
*>::
const_iterator
index
,
std
::
set
<
ClientCard
*>::
const_iterator
end
,
int
acc
,
int
count
);
void
UpdateDeclarableCodeType
(
bool
enter
);
void
UpdateDeclarableCodeOpcode
(
bool
enter
);
void
UpdateDeclarableCode
(
bool
enter
);
irr
::
gui
::
IGUIElement
*
panel
;
...
...
@@ -127,7 +128,7 @@ public:
virtual
bool
OnEvent
(
const
irr
::
SEvent
&
event
);
void
GetHoverField
(
int
x
,
int
y
);
void
ShowMenu
(
int
flag
,
int
x
,
int
y
);
void
UpdateChainButtons
();
void
UpdateChainButtons
();
void
ShowCancelOrFinishButton
(
int
buttonOp
);
void
SetResponseSelectedCards
()
const
;
};
...
...
gframe/duelclient.cpp
View file @
0f53b60a
...
...
@@ -943,7 +943,7 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) {
desc
=
BufferIO
::
ReadInt32
(
pbuf
);
pcard
=
mainGame
->
dField
.
GetCard
(
con
,
loc
,
seq
);
mainGame
->
dField
.
activatable_cards
.
push_back
(
pcard
);
mainGame
->
dField
.
activatable_descs
.
push_back
(
desc
);
mainGame
->
dField
.
activatable_descs
.
push_back
(
std
::
make_pair
(
desc
,
0
)
);
pcard
->
cmdFlag
|=
COMMAND_ACTIVATE
;
if
(
pcard
->
location
==
LOCATION_GRAVE
)
mainGame
->
dField
.
grave_act
=
true
;
...
...
@@ -1057,7 +1057,7 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) {
desc
=
BufferIO
::
ReadInt32
(
pbuf
);
pcard
=
mainGame
->
dField
.
GetCard
(
con
,
loc
,
seq
);
mainGame
->
dField
.
activatable_cards
.
push_back
(
pcard
);
mainGame
->
dField
.
activatable_descs
.
push_back
(
desc
);
mainGame
->
dField
.
activatable_descs
.
push_back
(
std
::
make_pair
(
desc
,
0
)
);
pcard
->
cmdFlag
|=
COMMAND_ACTIVATE
;
if
(
pcard
->
location
==
LOCATION_GRAVE
)
mainGame
->
dField
.
grave_act
=
true
;
...
...
@@ -1204,8 +1204,6 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) {
mainGame
->
dField
.
activatable_cards
.
clear
();
mainGame
->
dField
.
activatable_descs
.
clear
();
mainGame
->
dField
.
conti_cards
.
clear
();
mainGame
->
dField
.
reset_descs
.
clear
();
mainGame
->
dField
.
conti_descs
.
clear
();
for
(
int
i
=
0
;
i
<
count
;
++
i
)
{
int
flag
=
BufferIO
::
ReadInt8
(
pbuf
);
code
=
BufferIO
::
ReadInt32
(
pbuf
);
...
...
@@ -1216,22 +1214,19 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) {
desc
=
BufferIO
::
ReadInt32
(
pbuf
);
pcard
=
mainGame
->
dField
.
GetCard
(
c
,
l
,
s
,
ss
);
mainGame
->
dField
.
activatable_cards
.
push_back
(
pcard
);
mainGame
->
dField
.
activatable_descs
.
push_back
(
desc
);
mainGame
->
dField
.
activatable_descs
.
push_back
(
std
::
make_pair
(
desc
,
flag
)
);
pcard
->
is_selected
=
false
;
if
(
flag
==
0x1
)
{
if
(
flag
==
EDESC_OPERATION
)
{
pcard
->
is_conti
=
true
;
pcard
->
chain_code
=
code
;
mainGame
->
dField
.
conti_cards
.
push_back
(
pcard
);
mainGame
->
dField
.
conti_act
=
true
;
mainGame
->
dField
.
conti_descs
.
insert
(
desc
);
conti_exist
=
true
;
}
else
{
pcard
->
chain_code
=
code
;
pcard
->
is_selectable
=
true
;
if
(
flag
==
0x2
)
{
if
(
flag
==
EDESC_RESET
)
pcard
->
cmdFlag
|=
COMMAND_RESET
;
mainGame
->
dField
.
reset_descs
.
insert
(
desc
);
}
else
pcard
->
cmdFlag
|=
COMMAND_ACTIVATE
;
if
(
l
==
LOCATION_GRAVE
)
...
...
@@ -2933,6 +2928,7 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) {
case
MSG_ANNOUNCE_CARD
:
{
/*int player = */
mainGame
->
LocalPlayer
(
BufferIO
::
ReadInt8
(
pbuf
));
mainGame
->
dField
.
declarable_type
=
BufferIO
::
ReadInt32
(
pbuf
);
mainGame
->
dField
.
opcode
.
clear
();
if
(
select_hint
)
myswprintf
(
textBuffer
,
L"%ls"
,
dataManager
.
GetDesc
(
select_hint
));
else
myswprintf
(
textBuffer
,
dataManager
.
GetSysString
(
564
));
...
...
@@ -2940,6 +2936,7 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) {
mainGame
->
gMutex
.
Lock
();
mainGame
->
ebANCard
->
setText
(
L""
);
mainGame
->
wANCard
->
setText
(
textBuffer
);
mainGame
->
dField
.
UpdateDeclarableCode
(
true
);
mainGame
->
PopupElement
(
mainGame
->
wANCard
);
mainGame
->
gMutex
.
Unlock
();
return
false
;
...
...
@@ -2964,6 +2961,25 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) {
mainGame
->
gMutex
.
Unlock
();
return
false
;
}
case
MSG_ANNOUNCE_CARD_FILTER
:
{
/*int player = */
mainGame
->
LocalPlayer
(
BufferIO
::
ReadInt8
(
pbuf
));
int
count
=
BufferIO
::
ReadInt8
(
pbuf
);
mainGame
->
dField
.
declarable_type
=
0
;
mainGame
->
dField
.
opcode
.
clear
();
for
(
int
i
=
0
;
i
<
count
;
++
i
)
mainGame
->
dField
.
opcode
.
push_back
(
BufferIO
::
ReadInt32
(
pbuf
));
if
(
select_hint
)
myswprintf
(
textBuffer
,
L"%ls"
,
dataManager
.
GetDesc
(
select_hint
));
else
myswprintf
(
textBuffer
,
dataManager
.
GetSysString
(
564
));
select_hint
=
0
;
mainGame
->
gMutex
.
Lock
();
mainGame
->
ebANCard
->
setText
(
L""
);
mainGame
->
wANCard
->
setText
(
textBuffer
);
mainGame
->
dField
.
UpdateDeclarableCode
(
true
);
mainGame
->
PopupElement
(
mainGame
->
wANCard
);
mainGame
->
gMutex
.
Unlock
();
return
false
;
}
case
MSG_CARD_HINT
:
{
int
c
=
mainGame
->
LocalPlayer
(
BufferIO
::
ReadInt8
(
pbuf
));
int
l
=
BufferIO
::
ReadInt8
(
pbuf
);
...
...
@@ -3296,6 +3312,9 @@ void DuelClient::SendResponse() {
break
;
}
case
MSG_SELECT_SUM
:
{
for
(
int
i
=
0
;
i
<
mainGame
->
dField
.
must_select_count
;
++
i
)
{
mainGame
->
dField
.
selected_cards
[
i
]
->
is_selected
=
false
;
}
for
(
size_t
i
=
0
;
i
<
mainGame
->
dField
.
selectsum_all
.
size
();
++
i
)
{
mainGame
->
dField
.
selectsum_all
[
i
]
->
is_selectable
=
false
;
mainGame
->
dField
.
selectsum_all
[
i
]
->
is_selected
=
false
;
...
...
gframe/event_handler.cpp
View file @
0f53b60a
...
...
@@ -388,15 +388,15 @@ bool ClientField::OnEvent(const irr::SEvent& event) {
DuelClient
::
SetResponseI
(
selected_option
);
}
else
if
(
mainGame
->
dInfo
.
curMsg
==
MSG_SELECT_IDLECMD
)
{
int
index
=
0
;
while
(
activatable_cards
[
index
]
!=
command_card
||
activatable_descs
[
index
]
!=
select_options
[
selected_option
])
index
++
;
while
(
activatable_cards
[
index
]
!=
command_card
||
activatable_descs
[
index
]
.
first
!=
select_options
[
selected_option
])
index
++
;
DuelClient
::
SetResponseI
((
index
<<
16
)
+
5
);
}
else
if
(
mainGame
->
dInfo
.
curMsg
==
MSG_SELECT_BATTLECMD
)
{
int
index
=
0
;
while
(
activatable_cards
[
index
]
!=
command_card
||
activatable_descs
[
index
]
!=
select_options
[
selected_option
])
index
++
;
while
(
activatable_cards
[
index
]
!=
command_card
||
activatable_descs
[
index
]
.
first
!=
select_options
[
selected_option
])
index
++
;
DuelClient
::
SetResponseI
(
index
<<
16
);
}
else
{
int
index
=
0
;
while
(
activatable_cards
[
index
]
!=
command_card
||
activatable_descs
[
index
]
!=
select_options
[
selected_option
])
index
++
;
while
(
activatable_cards
[
index
]
!=
command_card
||
activatable_descs
[
index
]
.
first
!=
select_options
[
selected_option
])
index
++
;
DuelClient
::
SetResponseI
(
index
);
}
mainGame
->
HideElement
(
mainGame
->
wOptions
,
true
);
...
...
@@ -430,14 +430,14 @@ bool ClientField::OnEvent(const irr::SEvent& event) {
select_options
.
clear
();
for
(
size_t
i
=
0
;
i
<
activatable_cards
.
size
();
++
i
)
{
if
(
activatable_cards
[
i
]
==
clicked_card
)
{
if
(
conti_descs
.
find
(
activatable_descs
[
i
])
!=
conti_descs
.
end
()
)
if
(
activatable_descs
[
i
].
second
==
EDESC_OPERATION
)
continue
;
if
(
reset_descs
.
find
(
activatable_descs
[
i
])
!=
reset_descs
.
end
()
)
{
if
(
activatable_descs
[
i
].
second
==
EDESC_RESET
)
{
if
(
id
==
BUTTON_CMD_ACTIVATE
)
continue
;
}
else
{
if
(
id
==
BUTTON_CMD_RESET
)
continue
;
}
select_options
.
push_back
(
activatable_descs
[
i
]);
select_options
.
push_back
(
activatable_descs
[
i
]
.
first
);
if
(
index
==
-
1
)
index
=
i
;
}
}
...
...
@@ -708,12 +708,12 @@ bool ClientField::OnEvent(const irr::SEvent& event) {
select_options
.
clear
();
for
(
size_t
i
=
0
;
i
<
activatable_cards
.
size
();
++
i
)
{
if
(
activatable_cards
[
i
]
==
command_card
)
{
if
(
conti_descs
.
find
(
activatable_descs
[
i
])
!=
conti_descs
.
end
()
)
{
if
(
activatable_descs
[
i
].
second
==
EDESC_OPERATION
)
{
if
(
list_command
==
COMMAND_ACTIVATE
)
continue
;
}
else
{
if
(
list_command
==
COMMAND_OPERATION
)
continue
;
}
select_options
.
push_back
(
activatable_descs
[
i
]);
select_options
.
push_back
(
activatable_descs
[
i
]
.
first
);
if
(
index
==
-
1
)
index
=
i
;
}
}
...
...
gframe/game.cpp
View file @
0f53b60a
...
...
@@ -66,8 +66,21 @@ bool Game::Initialize() {
guiFont
=
irr
::
gui
::
CGUITTFont
::
createTTFont
(
env
,
gameConf
.
textfont
,
gameConf
.
textfontsize
);
textFont
=
guiFont
;
smgr
=
device
->
getSceneManager
();
device
->
setWindowCaption
(
L"
[---]
"
);
device
->
setWindowCaption
(
L"
YGOPro
"
);
device
->
setResizable
(
false
);
#ifdef _WIN32
HINSTANCE
hInstance
=
(
HINSTANCE
)
GetModuleHandle
(
NULL
);
HICON
hSmallIcon
=
(
HICON
)
LoadImage
(
hInstance
,
MAKEINTRESOURCE
(
1
),
IMAGE_ICON
,
16
,
16
,
LR_DEFAULTCOLOR
);
HICON
hBigIcon
=
(
HICON
)
LoadImage
(
hInstance
,
MAKEINTRESOURCE
(
1
),
IMAGE_ICON
,
32
,
32
,
LR_DEFAULTCOLOR
);
HWND
hWnd
;
irr
::
video
::
SExposedVideoData
exposedData
=
driver
->
getExposedVideoData
();
if
(
gameConf
.
use_d3d
)
hWnd
=
reinterpret_cast
<
HWND
>
(
exposedData
.
D3D9
.
HWnd
);
else
hWnd
=
reinterpret_cast
<
HWND
>
(
exposedData
.
OpenGLWin32
.
HWnd
);
SendMessage
(
hWnd
,
WM_SETICON
,
ICON_SMALL
,
(
long
)
hSmallIcon
);
SendMessage
(
hWnd
,
WM_SETICON
,
ICON_BIG
,
(
long
)
hBigIcon
);
#endif
//main menu
wchar_t
strbuf
[
256
];
myswprintf
(
strbuf
,
L"YGOPro Version:%X.0%X.%X"
,
PRO_VERSION
>>
12
,
(
PRO_VERSION
>>
4
)
&
0xff
,
PRO_VERSION
&
0xf
);
...
...
@@ -632,7 +645,7 @@ void Game::MainLoop() {
usleep
(
20000
);
#endif
if
(
cur_time
>=
1000
)
{
myswprintf
(
cap
,
L"FPS: %d"
,
fps
);
myswprintf
(
cap
,
L"
YGOPro
FPS: %d"
,
fps
);
device
->
setWindowCaption
(
cap
);
fps
=
0
;
cur_time
-=
1000
;
...
...
gframe/replay_mode.cpp
View file @
0f53b60a
...
...
@@ -474,6 +474,8 @@ bool ReplayMode::ReplayAnalyze(char* msg, unsigned int len) {
}
case
MSG_REVERSE_DECK
:
{
DuelClient
::
ClientAnalyze
(
offset
,
pbuf
-
offset
);
ReplayRefreshDeck
(
0
);
ReplayRefreshDeck
(
1
);
break
;
}
case
MSG_DECK_TOP
:
{
...
...
@@ -754,7 +756,8 @@ bool ReplayMode::ReplayAnalyze(char* msg, unsigned int len) {
pbuf
+=
4
;
return
ReadReplayResponse
();
}
case
MSG_ANNOUNCE_NUMBER
:
{
case
MSG_ANNOUNCE_NUMBER
:
case
MSG_ANNOUNCE_CARD_FILTER
:
{
player
=
BufferIO
::
ReadInt8
(
pbuf
);
count
=
BufferIO
::
ReadInt8
(
pbuf
);
pbuf
+=
4
*
count
;
...
...
gframe/single_duel.cpp
View file @
0f53b60a
...
...
@@ -1273,7 +1273,8 @@ int SingleDuel::Analyze(char* msgbuffer, unsigned int len) {
NetServer
::
SendBufferToPlayer
(
players
[
player
],
STOC_GAME_MSG
,
offset
,
pbuf
-
offset
);
return
1
;
}
case
MSG_ANNOUNCE_NUMBER
:
{
case
MSG_ANNOUNCE_NUMBER
:
case
MSG_ANNOUNCE_CARD_FILTER
:
{
player
=
BufferIO
::
ReadInt8
(
pbuf
);
count
=
BufferIO
::
ReadInt8
(
pbuf
);
pbuf
+=
4
*
count
;
...
...
gframe/single_mode.cpp
View file @
0f53b60a
...
...
@@ -317,6 +317,8 @@ bool SingleMode::SinglePlayAnalyze(char* msg, unsigned int len) {
}
case
MSG_REVERSE_DECK
:
{
DuelClient
::
ClientAnalyze
(
offset
,
pbuf
-
offset
);
SinglePlayRefreshDeck
(
0
);
SinglePlayRefreshDeck
(
1
);
break
;
}
case
MSG_DECK_TOP
:
{
...
...
@@ -586,7 +588,8 @@ bool SingleMode::SinglePlayAnalyze(char* msg, unsigned int len) {
}
break
;
}
case
MSG_ANNOUNCE_NUMBER
:
{
case
MSG_ANNOUNCE_NUMBER
:
case
MSG_ANNOUNCE_CARD_FILTER
:
{
player
=
BufferIO
::
ReadInt8
(
pbuf
);
count
=
BufferIO
::
ReadInt8
(
pbuf
);
pbuf
+=
4
*
count
;
...
...
gframe/tag_duel.cpp
View file @
0f53b60a
...
...
@@ -1312,7 +1312,8 @@ int TagDuel::Analyze(char* msgbuffer, unsigned int len) {
NetServer
::
SendBufferToPlayer
(
cur_player
[
player
],
STOC_GAME_MSG
,
offset
,
pbuf
-
offset
);
return
1
;
}
case
MSG_ANNOUNCE_NUMBER
:
{
case
MSG_ANNOUNCE_NUMBER
:
case
MSG_ANNOUNCE_CARD_FILTER
:
{
player
=
BufferIO
::
ReadInt8
(
pbuf
);
count
=
BufferIO
::
ReadInt8
(
pbuf
);
pbuf
+=
4
*
count
;
...
...
lflist.conf
View file @
0f53b60a
#[2016.7][2016.4][2016.1][2015.10][2015.4][2015.1][2014.10][2014.7][2014.4][2014.2][2013.9][2016.8 TCG][2016.4 TCG][2015.11 TCG][2015.7 TCG][2015.4 TCG][2015.1 TCG][2014.10 TCG][2014.7 TCG][2014.4 TCG][2014.1.1 TCG][2013.10.11 TCG][2013.3.1][2012.9.1][2012.3.1][2011.9.1]
#[2016.10][2016.7][2016.4][2016.1][2015.10][2015.4][2015.1][2014.10][2014.7][2014.4][2014.2][2013.9][2016.8 TCG][2016.4 TCG][2015.11 TCG][2015.7 TCG][2015.4 TCG][2015.1 TCG][2014.10 TCG][2014.7 TCG][2014.4 TCG][2014.1.1 TCG][2013.10.11 TCG][2013.3.1][2012.9.1][2012.3.1][2011.9.1]
!
2016
.
10
#forbidden
20663556
0
--イレカエル
44910027
0
--ヴィクトリー・ドラゴン
20366274
0
--エルシャドール・ネフィリム
53804307
0
--焔征竜-ブラスター
68819554
0
--
Em
ダメージ・ジャグラー
07563579
0
--
Em
ヒグルミ
17330916
0
--
EM
モンキーボード
90411554
0
--巌征竜-レドックス
17412721
0
--旧神ノーデン
78010363
0
--黒き森のウィッチ
07391448
0
--ゴヨウ·ガーディアン
34124316
0
--サイバーポッド
21593977
0
--処刑人-マキュラ
16923472
0
--ゼンマイハンター
56570271
0
--
D
-
HERO
ディスクガイ
18326736
0
--星守の騎士 プトレマイオス
33184167
0
--同族感染ウィルス
54719828
0
--
No
.
16
色の支配者ショック・ルーラー
26400609
0
--瀑征竜-タイダル
50321796
0
--氷結界の龍 ブリューナク
78706415
0
--ファイバーポッド
93369354
0
--フィッシュボーグ-ガンナー
34206604
0
--魔導サイエンティスト
96782886
0
--メンタルマスター
03078576
0
--八汰烏
34086406
0
--ラヴァルバル・チェイン
89399912
0
--嵐征竜-テンペスト
14878871
0
--レスキューキャット
57421866
0
--レベル・スティーラー
41482598
0
--悪夢の蜃気楼
44763025
0
--いたずら好きな双子悪魔
19613556
0
--大嵐
17375316
0
--押収
74191942
0
--苦渋の選択
42829885
0
--強引な番兵
45986603
0
--強奪
55144522
0
--強欲な壺
04031928
0
--心変わり
12580477
0
--サンダー·ボルト
23557835
0
--次元融合
57953380
0
--生還の宝札
87910978
0
--洗脳-ブレインコントロール
60682203
0
--大寒波
69243953
0
--蝶の短剣-エルマ
79571449
0
--天使の施し
70828912
0
--早すぎた埋葬
42703248
0
--ハリケーン
34906152
0
--マスドライバー
46448938
0
--魔導書の神判
77565204
0
--未来融合-フューチャー·フュージョン
46411259
0
--突然変異
85602018
0
--遺言状
27174286
0
--異次元からの帰還
93016201
0
--王宮の弾圧
61740673
0
--王宮の勅命
03280747
0
--第六感
64697231
0
--ダスト·シュート
80604091
0
--血の代償
35316708
0
--刻の封印
17178486
0
--ライフチェンジャー
28566710
0
--ラストバトル!
#limit
64034255
1
--
A
·ジェネクス·バードマン
40044918
1
--
E
·
HERO
エアーマン
50720316
1
--
E
·
HERO
シャドー·ミスト
40318957
1
--
EM
ドクロバット・ジョーカー
47075569
1
--
EM
ペンデュラム・マジシャン
74586817
1
--
PSY
フレームロード・Ω
06602300
1
--重爆撃禽 ボム・フェネクス
28985331
1
--終末の騎士
00423585
1
--召喚僧サモンプリースト
78868119
1
--深海のディーヴァ
31560081
1
--聖なる魔術師
65192027
1
--ダーク·アームド·ドラゴン
15341821
1
--ダンディライオン
90953320
1
--
TG
ハイパー·ライブラリアン
69015963
1
--デビル・フランケン
16226786
1
--深淵の暗殺者
90307777
1
--影霊衣の術士 シュリット
28297833
1
--ネクロフェイス
18239909
1
--爆竜剣士イグニスター
P
84764038
1
--彼岸の悪鬼 スカラマリオン
83531441
1
--彼岸の旅人 ダンテ
52687916
1
--氷結界の龍 トリシューラ
33396948
1
--封印されしエクゾディア
07902349
1
--封印されし者の左腕
70903634
1
--封印されし者の右腕
44519536
1
--封印されし者の左足
08124921
1
--封印されし者の右足
26674724
1
--ブリューナクの影霊衣
10802915
1
--魔界発現世行きデスガイド
31178212
1
--マジェスペクター・ユニコーン
33508719
1
--メタモルポット
89463537
1
--ユニコールの影霊衣
92746535
1
--竜剣士ラスター
P
88264978
1
--レッドアイズ·ダークネスメタルドラゴン
48976825
1
--異次元からの埋葬
33782437
1
--一時休戦
66957584
1
--インフェルニティガン
81439173
1
--おろかな埋葬
23701465
1
--原初の種
96729612
1
--儀式の準備
67723438
1
--緊急テレポート
45305419
1
--継承の印
17639150
1
--機殻の生贄
83764718
1
--死者蘇生
32807846
1
--増援
54447022
1
--ソウル・チャージ
48130397
1
--超融合
72892473
1
--手札抹殺
67169062
1
--貪欲な壺
97211663
1
--影霊衣の反魂術
18144506
1
--ハーピィの羽根帚
22842126
1
--汎神の帝王
53129443
1
--ブラック·ホール
53208660
1
--ペンデュラム・コール
93600443
1
--マスク・チェンジ・セカンド
15854426
1
--霞の谷の神風
58577036
1
--名推理
31222701
1
--揺れる眼差し
23171610
1
--リミッター解除
14733538
1
--竜呼相打つ
62265044
1
--竜の渓谷
02295440
1
--ワン·フォー·ワン
05851097
1
--虚無空間
84749824
1
--神の警告
41420027
1
--神の宣告
36468556
1
--停戦協定
83555666
1
--破壊輪
32723153
1
--マジカル·エクスプロージョン
#semi limit
85103922
2
--アーティファクト-モラルタ
45222299
2
--イビリチュア·ガストクラーケ
68184115
2
--甲虫装機 ダンセル
74311226
2
--海皇の竜騎隊
72989439
2
--カオス·ソルジャー -開闢の使者-
72714461
2
--慧眼の魔術師
45206713
2
--
DD
スワラル・スライム
19580308
2
--
DD
ラミア
70583986
2
--氷結界の虎王ドゥローレン
91110378
2
--光天使スローネ
41386308
2
--マスマティシャン
92826944
2
--馬頭鬼
10028593
2
--輪廻天狗
06417578
2
--神の写し身との接触
84171830
2
--真帝王領域
91623717
2
--連鎖爆撃
43040603
2
--モンスターゲート
!
2016
.
7
#forbidden
20663556
0
--イレカエル
...
...
ocgcore
@
b2d98347
Subproject commit
37aa2592eed548e2b818f3114a3d2b3af24064c8
Subproject commit
b2d983470ed5da3989e2b217c3e13b3c4e9352f5
script
@
87fa54ee
Subproject commit
70765704de64b2b4c81b247f4941e5cc5d8e8a78
Subproject commit
87fa54eec4036f9cdcbfd8af3dda34e49692c03e
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