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
235d44df
Commit
235d44df
authored
Jul 26, 2017
by
mercury233
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'master' of
https://github.com/Fluorohydride/ygopro
parents
079d9ac7
c052813b
Changes
16
Hide whitespace changes
Inline
Side-by-side
Showing
16 changed files
with
142 additions
and
76 deletions
+142
-76
gframe/data_manager.cpp
gframe/data_manager.cpp
+1
-6
gframe/deck_con.cpp
gframe/deck_con.cpp
+23
-10
gframe/deck_con.h
gframe/deck_con.h
+2
-0
gframe/deck_manager.cpp
gframe/deck_manager.cpp
+2
-12
gframe/duelclient.cpp
gframe/duelclient.cpp
+46
-3
gframe/game.cpp
gframe/game.cpp
+9
-10
gframe/game.h
gframe/game.h
+4
-0
gframe/gframe.cpp
gframe/gframe.cpp
+2
-0
gframe/menu_handler.cpp
gframe/menu_handler.cpp
+31
-16
gframe/replay.cpp
gframe/replay.cpp
+2
-5
gframe/replay_mode.cpp
gframe/replay_mode.cpp
+1
-1
gframe/single_duel.cpp
gframe/single_duel.cpp
+2
-1
gframe/single_mode.cpp
gframe/single_mode.cpp
+4
-9
gframe/tag_duel.cpp
gframe/tag_duel.cpp
+2
-2
strings.conf
strings.conf
+10
-0
system.conf
system.conf
+1
-1
No files found.
gframe/data_manager.cpp
View file @
235d44df
...
...
@@ -78,12 +78,7 @@ bool DataManager::LoadStrings(const char* file) {
char
linebuf
[
256
];
char
strbuf
[
256
];
int
value
;
fseek
(
fp
,
0
,
SEEK_END
);
int
fsize
=
ftell
(
fp
);
fseek
(
fp
,
0
,
SEEK_SET
);
fgets
(
linebuf
,
256
,
fp
);
while
(
ftell
(
fp
)
<
fsize
)
{
fgets
(
linebuf
,
256
,
fp
);
while
(
fgets
(
linebuf
,
256
,
fp
))
{
if
(
linebuf
[
0
]
!=
'!'
)
continue
;
sscanf
(
linebuf
,
"!%s"
,
strbuf
);
...
...
gframe/deck_con.cpp
View file @
235d44df
...
...
@@ -76,7 +76,9 @@ void DeckBuilder::Initialize() {
hovered_code
=
0
;
hovered_pos
=
0
;
hovered_seq
=
-
1
;
is_lastcard
=
0
;
is_draging
=
false
;
is_starting_dragging
=
false
;
prev_deck
=
mainGame
->
cbDBDecks
->
getSelected
();
prev_operation
=
0
;
is_modified
=
false
;
...
...
@@ -487,25 +489,20 @@ bool DeckBuilder::OnEvent(const irr::SEvent& event) {
if
(
!
check_limit
(
draging_pointer
))
break
;
}
if
(
hovered_pos
==
1
)
pop_main
(
hovered_seq
);
else
if
(
hovered_pos
==
2
)
pop_extra
(
hovered_seq
);
else
if
(
hovered_pos
==
3
)
pop_side
(
hovered_seq
);
is_draging
=
true
;
is_starting_dragging
=
true
;
break
;
}
case
irr
:
:
EMIE_LMOUSE_LEFT_UP
:
{
is_starting_dragging
=
false
;
if
(
!
is_draging
)
break
;
bool
pushed
=
false
;
if
(
hovered_pos
==
1
)
pushed
=
push_main
(
draging_pointer
,
hovered_seq
);
else
if
(
hovered_pos
==
2
)
pushed
=
push_extra
(
draging_pointer
,
hovered_seq
);
pushed
=
push_extra
(
draging_pointer
,
hovered_seq
+
is_lastcard
);
else
if
(
hovered_pos
==
3
)
pushed
=
push_side
(
draging_pointer
,
hovered_seq
);
pushed
=
push_side
(
draging_pointer
,
hovered_seq
+
is_lastcard
);
else
if
(
hovered_pos
==
4
&&
!
mainGame
->
is_siding
)
pushed
=
true
;
if
(
!
pushed
)
{
...
...
@@ -603,6 +600,16 @@ bool DeckBuilder::OnEvent(const irr::SEvent& event) {
break
;
}
case
irr
:
:
EMIE_MOUSE_MOVED
:
{
if
(
is_starting_dragging
)
{
is_draging
=
true
;
if
(
hovered_pos
==
1
)
pop_main
(
hovered_seq
);
else
if
(
hovered_pos
==
2
)
pop_extra
(
hovered_seq
);
else
if
(
hovered_pos
==
3
)
pop_side
(
hovered_seq
);
is_starting_dragging
=
false
;
}
mouse_pos
.
set
(
event
.
MouseInput
.
X
,
event
.
MouseInput
.
Y
);
GetHoveredCard
();
break
;
...
...
@@ -640,6 +647,7 @@ void DeckBuilder::GetHoveredCard() {
int
pre_code
=
hovered_code
;
hovered_pos
=
0
;
hovered_code
=
0
;
is_lastcard
=
0
;
if
(
x
>=
314
&&
x
<=
794
)
{
if
(
y
>=
164
&&
y
<=
435
)
{
int
lx
=
10
,
px
,
py
=
(
y
-
164
)
/
68
;
...
...
@@ -671,6 +679,8 @@ void DeckBuilder::GetHoveredCard() {
hovered_code
=
0
;
}
else
{
hovered_code
=
deckManager
.
current_deck
.
extra
[
hovered_seq
]
->
first
;
if
(
x
>=
772
)
is_lastcard
=
1
;
}
}
else
if
(
y
>=
564
&&
y
<=
628
)
{
int
lx
=
deckManager
.
current_deck
.
side
.
size
();
...
...
@@ -686,6 +696,8 @@ void DeckBuilder::GetHoveredCard() {
hovered_code
=
0
;
}
else
{
hovered_code
=
deckManager
.
current_deck
.
side
[
hovered_seq
]
->
first
;
if
(
x
>=
772
)
is_lastcard
=
1
;
}
}
}
else
if
(
x
>=
810
&&
x
<=
995
&&
y
>=
165
&&
y
<=
626
)
{
...
...
@@ -779,7 +791,8 @@ void DeckBuilder::FilterCards() {
if
(
filter_scltype
)
{
if
((
filter_scltype
==
1
&&
data
.
lscale
!=
filter_scl
)
||
(
filter_scltype
==
2
&&
data
.
lscale
<
filter_scl
)
||
(
filter_scltype
==
3
&&
data
.
lscale
<=
filter_scl
)
||
(
filter_scltype
==
4
&&
(
data
.
lscale
>
filter_scl
||
data
.
lscale
==
0
))
||
(
filter_scltype
==
5
&&
(
data
.
lscale
>=
filter_scl
||
data
.
lscale
==
0
))
||
filter_scltype
==
6
)
||
(
filter_scltype
==
5
&&
(
data
.
lscale
>=
filter_scl
||
data
.
lscale
==
0
))
||
filter_scltype
==
6
||
!
(
data
.
type
&
TYPE_PENDULUM
))
continue
;
}
break
;
...
...
gframe/deck_con.h
View file @
235d44df
...
...
@@ -49,8 +49,10 @@ public:
int
hovered_code
;
int
hovered_pos
;
int
hovered_seq
;
int
is_lastcard
;
int
click_pos
;
bool
is_draging
;
bool
is_starting_dragging
;
int
dragx
;
int
dragy
;
size_t
pre_mainc
;
...
...
gframe/deck_manager.cpp
View file @
235d44df
...
...
@@ -13,12 +13,7 @@ void DeckManager::LoadLFList() {
char
linebuf
[
256
];
wchar_t
strBuffer
[
256
];
if
(
fp
)
{
fseek
(
fp
,
0
,
SEEK_END
);
int
fsize
=
ftell
(
fp
);
fseek
(
fp
,
0
,
SEEK_SET
);
fgets
(
linebuf
,
256
,
fp
);
while
(
ftell
(
fp
)
<
fsize
)
{
fgets
(
linebuf
,
256
,
fp
);
while
(
fgets
(
linebuf
,
256
,
fp
))
{
if
(
linebuf
[
0
]
==
'#'
)
continue
;
int
p
=
0
,
sa
=
0
,
code
,
count
;
...
...
@@ -191,12 +186,7 @@ bool DeckManager::LoadDeck(const wchar_t* file) {
int
cardlist
[
128
];
bool
is_side
=
false
;
char
linebuf
[
256
];
fseek
(
fp
,
0
,
SEEK_END
);
int
fsize
=
ftell
(
fp
);
fseek
(
fp
,
0
,
SEEK_SET
);
fgets
(
linebuf
,
256
,
fp
);
while
(
ftell
(
fp
)
<
fsize
&&
ct
<
128
)
{
fgets
(
linebuf
,
256
,
fp
);
while
(
fgets
(
linebuf
,
256
,
fp
)
&&
ct
<
128
)
{
if
(
linebuf
[
0
]
==
'!'
)
{
is_side
=
true
;
continue
;
...
...
gframe/duelclient.cpp
View file @
235d44df
...
...
@@ -295,6 +295,7 @@ void DuelClient::HandleSTOCPacketLan(char* data, unsigned int len) {
mainGame
->
deckBuilder
.
result_string
[
1
]
=
0
;
mainGame
->
deckBuilder
.
results
.
clear
();
mainGame
->
deckBuilder
.
is_draging
=
false
;
mainGame
->
deckBuilder
.
is_starting_dragging
=
false
;
mainGame
->
deckBuilder
.
pre_mainc
=
deckManager
.
current_deck
.
main
.
size
();
mainGame
->
deckBuilder
.
pre_extrac
=
deckManager
.
current_deck
.
extra
.
size
();
mainGame
->
deckBuilder
.
pre_sidec
=
deckManager
.
current_deck
.
side
.
size
();
...
...
@@ -359,6 +360,8 @@ void DuelClient::HandleSTOCPacketLan(char* data, unsigned int len) {
}
for
(
int
i
=
0
;
i
<
4
;
++
i
)
mainGame
->
chkHostPrepReady
[
i
]
->
setChecked
(
false
);
mainGame
->
btnHostPrepReady
->
setVisible
(
true
);
mainGame
->
btnHostPrepNotReady
->
setVisible
(
false
);
mainGame
->
dInfo
.
time_limit
=
pkt
->
info
.
time_limit
;
mainGame
->
dInfo
.
time_left
[
0
]
=
0
;
mainGame
->
dInfo
.
time_left
[
1
]
=
0
;
...
...
@@ -411,9 +414,18 @@ void DuelClient::HandleSTOCPacketLan(char* data, unsigned int len) {
mainGame
->
chkHostPrepReady
[
selftype
]
->
setChecked
(
false
);
mainGame
->
btnHostPrepDuelist
->
setEnabled
(
false
);
mainGame
->
btnHostPrepOB
->
setEnabled
(
true
);
mainGame
->
btnHostPrepReady
->
setVisible
(
true
);
mainGame
->
btnHostPrepNotReady
->
setVisible
(
false
);
}
else
{
mainGame
->
btnHostPrepDuelist
->
setEnabled
(
true
);
mainGame
->
btnHostPrepOB
->
setEnabled
(
false
);
mainGame
->
btnHostPrepReady
->
setVisible
(
false
);
mainGame
->
btnHostPrepNotReady
->
setVisible
(
false
);
}
if
(
mainGame
->
chkHostPrepReady
[
0
]
->
isChecked
()
&&
mainGame
->
chkHostPrepReady
[
1
]
->
isChecked
())
{
mainGame
->
btnHostPrepStart
->
setEnabled
(
true
);
}
else
{
mainGame
->
btnHostPrepStart
->
setEnabled
(
false
);
}
}
else
{
if
(
selftype
<
4
)
{
...
...
@@ -435,8 +447,18 @@ void DuelClient::HandleSTOCPacketLan(char* data, unsigned int len) {
if
(
selftype
<
4
)
{
mainGame
->
chkHostPrepReady
[
selftype
]
->
setEnabled
(
true
);
mainGame
->
btnHostPrepOB
->
setEnabled
(
true
);
mainGame
->
btnHostPrepReady
->
setVisible
(
true
);
mainGame
->
btnHostPrepNotReady
->
setVisible
(
false
);
}
else
{
mainGame
->
btnHostPrepOB
->
setEnabled
(
false
);
mainGame
->
btnHostPrepReady
->
setVisible
(
false
);
mainGame
->
btnHostPrepNotReady
->
setVisible
(
false
);
}
if
(
mainGame
->
chkHostPrepReady
[
0
]
->
isChecked
()
&&
mainGame
->
chkHostPrepReady
[
1
]
->
isChecked
()
&&
mainGame
->
chkHostPrepReady
[
2
]
->
isChecked
()
&&
mainGame
->
chkHostPrepReady
[
3
]
->
isChecked
())
{
mainGame
->
btnHostPrepStart
->
setEnabled
(
true
);
}
else
{
mainGame
->
btnHostPrepStart
->
setEnabled
(
false
);
}
}
mainGame
->
dInfo
.
player_type
=
selftype
;
...
...
@@ -674,8 +696,16 @@ void DuelClient::HandleSTOCPacketLan(char* data, unsigned int len) {
BufferIO
::
CopyWStr
(
prename
,
mainGame
->
dInfo
.
clientname_tag
,
20
);
}
else
if
(
state
==
PLAYERCHANGE_READY
)
{
mainGame
->
chkHostPrepReady
[
pos
]
->
setChecked
(
true
);
if
(
pos
==
selftype
)
{
mainGame
->
btnHostPrepReady
->
setVisible
(
false
);
mainGame
->
btnHostPrepNotReady
->
setVisible
(
true
);
}
}
else
if
(
state
==
PLAYERCHANGE_NOTREADY
)
{
mainGame
->
chkHostPrepReady
[
pos
]
->
setChecked
(
false
);
if
(
pos
==
selftype
)
{
mainGame
->
btnHostPrepReady
->
setVisible
(
true
);
mainGame
->
btnHostPrepNotReady
->
setVisible
(
false
);
}
}
else
if
(
state
==
PLAYERCHANGE_LEAVE
)
{
mainGame
->
stHostPrepDuelist
[
pos
]
->
setText
(
L""
);
mainGame
->
chkHostPrepReady
[
pos
]
->
setChecked
(
false
);
...
...
@@ -687,6 +717,12 @@ void DuelClient::HandleSTOCPacketLan(char* data, unsigned int len) {
mainGame
->
chkHostPrepReady
[
pos
]
->
setChecked
(
false
);
mainGame
->
stHostPrepOB
->
setText
(
watchbuf
);
}
if
(
mainGame
->
chkHostPrepReady
[
0
]
->
isChecked
()
&&
mainGame
->
chkHostPrepReady
[
1
]
->
isChecked
()
&&
(
!
mainGame
->
dInfo
.
isTag
||
(
mainGame
->
chkHostPrepReady
[
2
]
->
isChecked
()
&&
mainGame
->
chkHostPrepReady
[
3
]
->
isChecked
())))
{
mainGame
->
btnHostPrepStart
->
setEnabled
(
true
);
}
else
{
mainGame
->
btnHostPrepStart
->
setEnabled
(
false
);
}
mainGame
->
gMutex
.
Unlock
();
break
;
}
...
...
@@ -1107,9 +1143,16 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) {
pcard
->
is_highlighting
=
true
;
mainGame
->
dField
.
highlighting_card
=
pcard
;
}
wchar_t
ynbuf
[
256
];
myswprintf
(
ynbuf
,
dataManager
.
GetSysString
(
200
),
dataManager
.
FormatLocation
(
l
,
s
),
dataManager
.
GetName
(
code
));
myswprintf
(
textBuffer
,
L"%ls
\n
%ls"
,
event_string
,
ynbuf
);
int
desc
=
BufferIO
::
ReadInt32
(
pbuf
);
if
(
desc
==
0
)
{
wchar_t
ynbuf
[
256
];
myswprintf
(
ynbuf
,
dataManager
.
GetSysString
(
200
),
dataManager
.
FormatLocation
(
l
,
s
),
dataManager
.
GetName
(
code
));
myswprintf
(
textBuffer
,
L"%ls
\n
%ls"
,
event_string
,
ynbuf
);
}
else
if
(
desc
<
2048
)
{
myswprintf
(
textBuffer
,
dataManager
.
GetSysString
(
desc
),
dataManager
.
GetName
(
code
));
}
else
{
myswprintf
(
textBuffer
,
dataManager
.
GetDesc
(
desc
),
dataManager
.
GetName
(
code
));
}
mainGame
->
gMutex
.
Lock
();
mainGame
->
SetStaticText
(
mainGame
->
stQMessage
,
310
,
mainGame
->
textFont
,
textBuffer
);
mainGame
->
PopupElement
(
mainGame
->
wQuery
);
...
...
gframe/game.cpp
View file @
235d44df
...
...
@@ -191,8 +191,11 @@ bool Game::Initialize() {
env
->
addStaticText
(
dataManager
.
GetSysString
(
1254
),
rect
<
s32
>
(
10
,
235
,
110
,
255
),
false
,
false
,
wHostPrepare
);
cbDeckSelect
=
env
->
addComboBox
(
rect
<
s32
>
(
120
,
230
,
270
,
255
),
wHostPrepare
);
cbDeckSelect
->
setMaxSelectionRows
(
10
);
btnHostPrepReady
=
env
->
addButton
(
rect
<
s32
>
(
170
,
180
,
270
,
205
),
wHostPrepare
,
BUTTON_HP_READY
,
dataManager
.
GetSysString
(
1218
));
btnHostPrepNotReady
=
env
->
addButton
(
rect
<
s32
>
(
170
,
180
,
270
,
205
),
wHostPrepare
,
BUTTON_HP_NOTREADY
,
dataManager
.
GetSysString
(
1219
));
btnHostPrepNotReady
->
setVisible
(
false
);
btnHostPrepStart
=
env
->
addButton
(
rect
<
s32
>
(
230
,
280
,
340
,
305
),
wHostPrepare
,
BUTTON_HP_START
,
dataManager
.
GetSysString
(
1215
));
btnHostPrepCancel
=
env
->
addButton
(
rect
<
s32
>
(
350
,
280
,
460
,
305
),
wHostPrepare
,
BUTTON_HP_CANCEL
,
dataManager
.
GetSysString
(
121
2
));
btnHostPrepCancel
=
env
->
addButton
(
rect
<
s32
>
(
350
,
280
,
460
,
305
),
wHostPrepare
,
BUTTON_HP_CANCEL
,
dataManager
.
GetSysString
(
121
0
));
//img
wCardImg
=
env
->
addStaticText
(
L""
,
rect
<
s32
>
(
1
,
1
,
199
,
273
),
true
,
false
,
0
,
-
1
,
true
);
wCardImg
->
setBackgroundColor
(
0xc0c0c0c0
);
...
...
@@ -272,7 +275,7 @@ bool Game::Initialize() {
chkIgnoreDeckChanges
=
env
->
addCheckBox
(
false
,
rect
<
s32
>
(
posX
,
posY
,
posX
+
260
,
posY
+
25
),
tabSystem
,
-
1
,
dataManager
.
GetSysString
(
1357
));
chkIgnoreDeckChanges
->
setChecked
(
gameConf
.
chkIgnoreDeckChanges
!=
0
);
posY
+=
30
;
chkAutoSearch
=
env
->
addCheckBox
(
false
,
rect
<
s32
>
(
posX
,
posY
,
posX
+
2
25
,
posY
+
25
),
tabSystem
,
CHECKBOX_AUTO_SEARCH
,
dataManager
.
GetSysString
(
1358
));
chkAutoSearch
=
env
->
addCheckBox
(
false
,
rect
<
s32
>
(
posX
,
posY
,
posX
+
2
60
,
posY
+
25
),
tabSystem
,
CHECKBOX_AUTO_SEARCH
,
dataManager
.
GetSysString
(
1358
));
chkAutoSearch
->
setChecked
(
gameConf
.
auto_search_limit
>=
0
);
//
wHand
=
env
->
addWindow
(
rect
<
s32
>
(
500
,
450
,
825
,
605
),
false
,
L""
);
...
...
@@ -588,12 +591,12 @@ bool Game::Initialize() {
btnChainIgnore
->
setVisible
(
false
);
btnChainAlways
->
setVisible
(
false
);
btnChainWhenAvail
->
setVisible
(
false
);
//cancel or finish
btnCancelOrFinish
=
env
->
addButton
(
rect
<
s32
>
(
205
,
230
,
295
,
265
),
0
,
BUTTON_CANCEL_OR_FINISH
,
dataManager
.
GetSysString
(
1295
));
btnCancelOrFinish
->
setVisible
(
false
);
//shuffle
btnShuffle
=
env
->
addButton
(
rect
<
s32
>
(
205
,
230
,
295
,
265
),
0
,
BUTTON_CMD_SHUFFLE
,
dataManager
.
GetSysString
(
1297
));
btnShuffle
->
setVisible
(
false
);
//cancel or finish
btnCancelOrFinish
=
env
->
addButton
(
rect
<
s32
>
(
205
,
230
,
295
,
265
),
0
,
BUTTON_CANCEL_OR_FINISH
,
dataManager
.
GetSysString
(
1295
));
btnCancelOrFinish
->
setVisible
(
false
);
//leave/surrender/exit
btnLeaveGame
=
env
->
addButton
(
rect
<
s32
>
(
205
,
5
,
295
,
80
),
0
,
BUTTON_LEAVE_GAME
,
L""
);
btnLeaveGame
->
setVisible
(
false
);
...
...
@@ -928,11 +931,7 @@ void Game::LoadConfig() {
gameConf
.
separate_clear_button
=
1
;
gameConf
.
auto_search_limit
=
-
1
;
gameConf
.
chkIgnoreDeckChanges
=
0
;
fseek
(
fp
,
0
,
SEEK_END
);
int
fsize
=
ftell
(
fp
);
fseek
(
fp
,
0
,
SEEK_SET
);
while
(
ftell
(
fp
)
<
fsize
)
{
fgets
(
linebuf
,
256
,
fp
);
while
(
fgets
(
linebuf
,
256
,
fp
))
{
sscanf
(
linebuf
,
"%s = %s"
,
strbuf
,
valbuf
);
if
(
!
strcmp
(
strbuf
,
"antialias"
))
{
gameConf
.
antialias
=
atoi
(
valbuf
);
...
...
gframe/game.h
View file @
235d44df
...
...
@@ -262,6 +262,8 @@ public:
irr
::
gui
::
IGUIComboBox
*
cbDeckSelect
;
irr
::
gui
::
IGUIStaticText
*
stHostPrepRule
;
irr
::
gui
::
IGUIStaticText
*
stHostPrepOB
;
irr
::
gui
::
IGUIButton
*
btnHostPrepReady
;
irr
::
gui
::
IGUIButton
*
btnHostPrepNotReady
;
irr
::
gui
::
IGUIButton
*
btnHostPrepStart
;
irr
::
gui
::
IGUIButton
*
btnHostPrepCancel
;
//replay
...
...
@@ -462,6 +464,8 @@ extern Game* mainGame;
#define BUTTON_HP_CANCEL 123
#define BUTTON_HP_KICK 124
#define CHECKBOX_HP_READY 125
#define BUTTON_HP_READY 126
#define BUTTON_HP_NOTREADY 127
#define LISTBOX_REPLAY_LIST 130
#define BUTTON_LOAD_REPLAY 131
#define BUTTON_CANCEL_REPLAY 132
...
...
gframe/gframe.cpp
View file @
235d44df
...
...
@@ -34,11 +34,13 @@ void ClickButton(irr::gui::IGUIElement* btn) {
int
main
(
int
argc
,
char
*
argv
[])
{
#ifdef _WIN32
#ifndef _DEBUG
wchar_t
exepath
[
MAX_PATH
];
GetModuleFileNameW
(
NULL
,
exepath
,
MAX_PATH
);
wchar_t
*
p
=
wcsrchr
(
exepath
,
'\\'
);
*
p
=
'\0'
;
SetCurrentDirectoryW
(
exepath
);
#endif //_DEBUG
#endif //_WIN32
#ifdef _WIN32
WORD
wVersionRequested
;
...
...
gframe/menu_handler.cpp
View file @
235d44df
...
...
@@ -10,6 +10,21 @@
namespace
ygo
{
void
UpdateDeck
()
{
BufferIO
::
CopyWStr
(
mainGame
->
cbDeckSelect
->
getItem
(
mainGame
->
cbDeckSelect
->
getSelected
()),
mainGame
->
gameConf
.
lastdeck
,
64
);
char
deckbuf
[
1024
];
char
*
pdeck
=
deckbuf
;
BufferIO
::
WriteInt32
(
pdeck
,
deckManager
.
current_deck
.
main
.
size
()
+
deckManager
.
current_deck
.
extra
.
size
());
BufferIO
::
WriteInt32
(
pdeck
,
deckManager
.
current_deck
.
side
.
size
());
for
(
size_t
i
=
0
;
i
<
deckManager
.
current_deck
.
main
.
size
();
++
i
)
BufferIO
::
WriteInt32
(
pdeck
,
deckManager
.
current_deck
.
main
[
i
]
->
first
);
for
(
size_t
i
=
0
;
i
<
deckManager
.
current_deck
.
extra
.
size
();
++
i
)
BufferIO
::
WriteInt32
(
pdeck
,
deckManager
.
current_deck
.
extra
[
i
]
->
first
);
for
(
size_t
i
=
0
;
i
<
deckManager
.
current_deck
.
side
.
size
();
++
i
)
BufferIO
::
WriteInt32
(
pdeck
,
deckManager
.
current_deck
.
side
[
i
]
->
first
);
DuelClient
::
SendBufferToServer
(
CTOS_UPDATE_DECK
,
deckbuf
,
pdeck
-
deckbuf
);
}
bool
MenuHandler
::
OnEvent
(
const
irr
::
SEvent
&
event
)
{
switch
(
event
.
EventType
)
{
case
irr
:
:
EET_GUI_EVENT
:
{
...
...
@@ -128,10 +143,22 @@ bool MenuHandler::OnEvent(const irr::SEvent& event) {
DuelClient
::
SendPacketToServer
(
CTOS_HS_KICK
,
csk
);
break
;
}
case
BUTTON_HP_
START
:
{
if
(
!
mainGame
->
chkHostPrepReady
[
0
]
->
isChecked
()
||
!
mainGame
->
chkHostPrepReady
[
1
]
->
isChecked
())
case
BUTTON_HP_
READY
:
{
if
(
mainGame
->
cbDeckSelect
->
getSelected
()
==
-
1
||
!
deckManager
.
LoadDeck
(
mainGame
->
cbDeckSelect
->
getItem
(
mainGame
->
cbDeckSelect
->
getSelected
())))
{
break
;
}
UpdateDeck
();
DuelClient
::
SendPacketToServer
(
CTOS_HS_READY
);
mainGame
->
cbDeckSelect
->
setEnabled
(
false
);
break
;
}
case
BUTTON_HP_NOTREADY
:
{
DuelClient
::
SendPacketToServer
(
CTOS_HS_NOTREADY
);
mainGame
->
cbDeckSelect
->
setEnabled
(
true
);
break
;
}
case
BUTTON_HP_START
:
{
DuelClient
::
SendPacketToServer
(
CTOS_HS_START
);
break
;
}
...
...
@@ -308,19 +335,7 @@ bool MenuHandler::OnEvent(const irr::SEvent& event) {
static_cast
<
irr
::
gui
::
IGUICheckBox
*>
(
caller
)
->
setChecked
(
false
);
break
;
}
BufferIO
::
CopyWStr
(
mainGame
->
cbDeckSelect
->
getItem
(
mainGame
->
cbDeckSelect
->
getSelected
()),
mainGame
->
gameConf
.
lastdeck
,
64
);
char
deckbuf
[
1024
];
char
*
pdeck
=
deckbuf
;
BufferIO
::
WriteInt32
(
pdeck
,
deckManager
.
current_deck
.
main
.
size
()
+
deckManager
.
current_deck
.
extra
.
size
());
BufferIO
::
WriteInt32
(
pdeck
,
deckManager
.
current_deck
.
side
.
size
());
for
(
size_t
i
=
0
;
i
<
deckManager
.
current_deck
.
main
.
size
();
++
i
)
BufferIO
::
WriteInt32
(
pdeck
,
deckManager
.
current_deck
.
main
[
i
]
->
first
);
for
(
size_t
i
=
0
;
i
<
deckManager
.
current_deck
.
extra
.
size
();
++
i
)
BufferIO
::
WriteInt32
(
pdeck
,
deckManager
.
current_deck
.
extra
[
i
]
->
first
);
for
(
size_t
i
=
0
;
i
<
deckManager
.
current_deck
.
side
.
size
();
++
i
)
BufferIO
::
WriteInt32
(
pdeck
,
deckManager
.
current_deck
.
side
[
i
]
->
first
);
DuelClient
::
SendBufferToServer
(
CTOS_UPDATE_DECK
,
deckbuf
,
pdeck
-
deckbuf
);
UpdateDeck
();
DuelClient
::
SendPacketToServer
(
CTOS_HS_READY
);
mainGame
->
cbDeckSelect
->
setEnabled
(
false
);
}
else
{
...
...
gframe/replay.cpp
View file @
235d44df
...
...
@@ -159,18 +159,15 @@ bool Replay::OpenReplay(const wchar_t* name) {
}
if
(
!
fp
)
return
false
;
fseek
(
fp
,
0
,
SEEK_END
);
comp_size
=
ftell
(
fp
)
-
sizeof
(
pheader
);
fseek
(
fp
,
0
,
SEEK_SET
);
fread
(
&
pheader
,
sizeof
(
pheader
),
1
,
fp
);
if
(
pheader
.
flag
&
REPLAY_COMPRESSED
)
{
fread
(
comp_data
,
0x1000
,
1
,
fp
);
comp_size
=
fread
(
comp_data
,
1
,
0x1000
,
fp
);
fclose
(
fp
);
replay_size
=
pheader
.
datasize
;
if
(
LzmaUncompress
(
replay_data
,
&
replay_size
,
comp_data
,
&
comp_size
,
pheader
.
props
,
5
)
!=
SZ_OK
)
return
false
;
}
else
{
fread
(
replay_data
,
0x20000
,
1
,
fp
);
comp_size
=
fread
(
replay_data
,
1
,
0x20000
,
fp
);
fclose
(
fp
);
replay_size
=
comp_size
;
}
...
...
gframe/replay_mode.cpp
View file @
235d44df
...
...
@@ -375,7 +375,7 @@ bool ReplayMode::ReplayAnalyze(char* msg, unsigned int len) {
}
case
MSG_SELECT_EFFECTYN
:
{
player
=
BufferIO
::
ReadInt8
(
pbuf
);
pbuf
+=
8
;
pbuf
+=
12
;
return
ReadReplayResponse
();
}
case
MSG_SELECT_YESNO
:
{
...
...
gframe/single_duel.cpp
View file @
235d44df
...
...
@@ -269,6 +269,7 @@ void SingleDuel::PlayerReady(DuelPlayer* dp, bool is_ready) {
ready
[
dp
->
type
]
=
is_ready
;
STOC_HS_PlayerChange
scpc
;
scpc
.
status
=
(
dp
->
type
<<
4
)
|
(
is_ready
?
PLAYERCHANGE_READY
:
PLAYERCHANGE_NOTREADY
);
NetServer
::
SendPacketToPlayer
(
players
[
dp
->
type
],
STOC_HS_PLAYER_CHANGE
,
scpc
);
if
(
players
[
1
-
dp
->
type
])
NetServer
::
SendPacketToPlayer
(
players
[
1
-
dp
->
type
],
STOC_HS_PLAYER_CHANGE
,
scpc
);
for
(
auto
pit
=
observers
.
begin
();
pit
!=
observers
.
end
();
++
pit
)
...
...
@@ -651,7 +652,7 @@ int SingleDuel::Analyze(char* msgbuffer, unsigned int len) {
}
case
MSG_SELECT_EFFECTYN
:
{
player
=
BufferIO
::
ReadInt8
(
pbuf
);
pbuf
+=
8
;
pbuf
+=
12
;
WaitforResponse
(
player
);
NetServer
::
SendBufferToPlayer
(
players
[
player
],
STOC_GAME_MSG
,
offset
,
pbuf
-
offset
);
return
1
;
...
...
gframe/single_mode.cpp
View file @
235d44df
...
...
@@ -186,7 +186,7 @@ bool SingleMode::SinglePlayAnalyze(char* msg, unsigned int len) {
}
case
MSG_SELECT_EFFECTYN
:
{
player
=
BufferIO
::
ReadInt8
(
pbuf
);
pbuf
+=
8
;
pbuf
+=
12
;
DuelClient
::
ClientAnalyze
(
offset
,
pbuf
-
offset
);
if
(
!
DuelClient
::
ClientAnalyze
(
offset
,
pbuf
-
offset
))
{
mainGame
->
singleSignal
.
Reset
();
...
...
@@ -830,15 +830,10 @@ byte* SingleMode::ScriptReader(const char* script_name, int* slen) {
#endif
if
(
!
fp
)
return
0
;
fseek
(
fp
,
0
,
SEEK_END
);
unsigned
int
len
=
ftell
(
fp
);
if
(
len
>
sizeof
(
buffer
))
{
fclose
(
fp
);
return
0
;
}
fseek
(
fp
,
0
,
SEEK_SET
);
fread
(
buffer
,
len
,
1
,
fp
);
int
len
=
fread
(
buffer
,
1
,
sizeof
(
buffer
),
fp
);
fclose
(
fp
);
if
(
len
>=
sizeof
(
buffer
))
return
0
;
*
slen
=
len
;
return
buffer
;
}
...
...
gframe/tag_duel.cpp
View file @
235d44df
...
...
@@ -240,7 +240,7 @@ void TagDuel::PlayerReady(DuelPlayer* dp, bool is_ready) {
STOC_HS_PlayerChange
scpc
;
scpc
.
status
=
(
dp
->
type
<<
4
)
|
(
is_ready
?
PLAYERCHANGE_READY
:
PLAYERCHANGE_NOTREADY
);
for
(
int
i
=
0
;
i
<
4
;
++
i
)
if
(
players
[
i
]
&&
players
[
i
]
!=
dp
)
if
(
players
[
i
])
NetServer
::
SendPacketToPlayer
(
players
[
i
],
STOC_HS_PLAYER_CHANGE
,
scpc
);
for
(
auto
pit
=
observers
.
begin
();
pit
!=
observers
.
end
();
++
pit
)
NetServer
::
SendPacketToPlayer
(
*
pit
,
STOC_HS_PLAYER_CHANGE
,
scpc
);
...
...
@@ -584,7 +584,7 @@ int TagDuel::Analyze(char* msgbuffer, unsigned int len) {
}
case
MSG_SELECT_EFFECTYN
:
{
player
=
BufferIO
::
ReadInt8
(
pbuf
);
pbuf
+=
8
;
pbuf
+=
12
;
WaitforResponse
(
player
);
NetServer
::
SendBufferToPlayer
(
cur_player
[
player
],
STOC_GAME_MSG
,
offset
,
pbuf
-
offset
);
return
1
;
...
...
strings.conf
View file @
235d44df
...
...
@@ -46,6 +46,9 @@
!
system
92
是否要解放对方怪兽进行上级召唤?
!
system
93
是否要继续选择素材?
!
system
94
是否现在使用这张卡的效果?
!
system
95
是否使用[%
ls
]的效果?
!
system
96
是否使用[%
ls
]的效果代替破坏?
!
system
97
是否把[%
ls
]在魔法与陷阱区域放置?
!
system
100
先攻
!
system
101
后攻
!
system
200
是否在[%
ls
]发动[%
ls
]的效果?
...
...
@@ -249,6 +252,8 @@
!
system
1215
开始
!
system
1216
消息
!
system
1217
刷新主机
!
system
1218
准备
!
system
1219
取消准备
!
system
1220
昵称:
!
system
1221
主机信息:
!
system
1222
主机密码:
...
...
@@ -496,6 +501,7 @@
!
counter
0
x40
指示物(
No
.
51
怪腕之必杀摔角手)
!
counter
0
x1041
捕食指示物
!
counter
0
x42
指示物(爆竹鬼)
!
counter
0
x43
缺陷指示物
#setnames, using tab for comment
!
setname
0
x1
正义盟军
A
・
O
・
J
!
setname
0
x2
次世代 ジェネクス
...
...
@@ -833,3 +839,7 @@
!
setname
0
xff
幻透翼 クリアウィング
!
setname
0
x100
化学结合 ボンディング
!
setname
0
x101
码语者 コード・トーカー
!
setname
0
x102
弹丸 ヴァレット
!
setname
0
x103
幻变骚灵 オルターガイスト
!
setname
0
x104
机怪虫 クローラー
!
setname
0
x105
玄化 メタファイズ
system.conf
View file @
235d44df
...
...
@@ -26,4 +26,4 @@ draw_field_spell = 1
separate_clear_button
=
1
#auto_search_limit >= 0: Start search automatically when the user enters N chars.
auto_search_limit
= -
1
prompt_to_discard_deck_changes
=
1
ignore_deck_changes
=
0
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