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
e1ac1164
Commit
e1ac1164
authored
Sep 02, 2024
by
nanahira
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'master' of github.com:Fluorohydride/ygopro
parents
41fc6203
88f2f8e1
Changes
26
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
26 changed files
with
352 additions
and
332 deletions
+352
-332
gframe/client_card.cpp
gframe/client_card.cpp
+4
-4
gframe/client_card.h
gframe/client_card.h
+1
-1
gframe/config.h
gframe/config.h
+9
-25
gframe/data_manager.cpp
gframe/data_manager.cpp
+5
-5
gframe/deck_con.cpp
gframe/deck_con.cpp
+15
-14
gframe/deck_manager.cpp
gframe/deck_manager.cpp
+110
-75
gframe/deck_manager.h
gframe/deck_manager.h
+4
-3
gframe/drawing.cpp
gframe/drawing.cpp
+7
-7
gframe/duelclient.cpp
gframe/duelclient.cpp
+14
-13
gframe/event_handler.cpp
gframe/event_handler.cpp
+2
-3
gframe/game.cpp
gframe/game.cpp
+62
-60
gframe/game.h
gframe/game.h
+13
-0
gframe/gframe.cpp
gframe/gframe.cpp
+2
-1
gframe/image_manager.cpp
gframe/image_manager.cpp
+2
-0
gframe/image_manager.h
gframe/image_manager.h
+1
-0
gframe/menu_handler.cpp
gframe/menu_handler.cpp
+30
-29
gframe/netserver.cpp
gframe/netserver.cpp
+4
-3
gframe/network.h
gframe/network.h
+1
-1
gframe/replay.cpp
gframe/replay.cpp
+38
-68
gframe/replay.h
gframe/replay.h
+7
-4
gframe/replay_mode.cpp
gframe/replay_mode.cpp
+1
-0
gframe/single_duel.cpp
gframe/single_duel.cpp
+5
-5
gframe/single_mode.cpp
gframe/single_mode.cpp
+1
-0
gframe/sound_manager.cpp
gframe/sound_manager.cpp
+1
-0
gframe/tag_duel.cpp
gframe/tag_duel.cpp
+4
-4
strings.conf
strings.conf
+9
-7
No files found.
gframe/client_card.cpp
View file @
e1ac1164
...
@@ -32,12 +32,12 @@ ClientCard::~ClientCard() {
...
@@ -32,12 +32,12 @@ ClientCard::~ClientCard() {
}
}
overlayed
.
clear
();
overlayed
.
clear
();
}
}
void
ClientCard
::
SetCode
(
int
code
)
{
void
ClientCard
::
SetCode
(
int
x
)
{
if
((
location
==
LOCATION_HAND
)
&&
(
this
->
code
!=
(
unsigned
int
)
code
))
{
if
((
location
==
LOCATION_HAND
)
&&
(
code
!=
(
unsigned
int
)
x
))
{
this
->
code
=
code
;
code
=
x
;
mainGame
->
dField
.
MoveCard
(
this
,
5
);
mainGame
->
dField
.
MoveCard
(
this
,
5
);
}
else
}
else
this
->
code
=
code
;
code
=
x
;
}
}
void
ClientCard
::
UpdateInfo
(
unsigned
char
*
buf
)
{
void
ClientCard
::
UpdateInfo
(
unsigned
char
*
buf
)
{
int
flag
=
BufferIO
::
ReadInt32
(
buf
);
int
flag
=
BufferIO
::
ReadInt32
(
buf
);
...
...
gframe/client_card.h
View file @
e1ac1164
...
@@ -98,7 +98,7 @@ public:
...
@@ -98,7 +98,7 @@ public:
ClientCard
()
=
default
;
ClientCard
()
=
default
;
~
ClientCard
();
~
ClientCard
();
void
SetCode
(
int
code
);
void
SetCode
(
int
x
);
void
UpdateInfo
(
unsigned
char
*
buf
);
void
UpdateInfo
(
unsigned
char
*
buf
);
void
ClearTarget
();
void
ClearTarget
();
void
ClearData
();
void
ClearData
();
...
...
gframe/config.h
View file @
e1ac1164
#ifndef __CONFIG_H
#ifndef YGOPRO_CONFIG_H
#define __CONFIG_H
#define YGOPRO_CONFIG_H
#pragma once
#define _IRR_STATIC_LIB_
#define _IRR_STATIC_LIB_
#define IRR_COMPILE_WITH_DX9_DEV_PACK
#define IRR_COMPILE_WITH_DX9_DEV_PACK
...
@@ -41,43 +39,29 @@
...
@@ -41,43 +39,29 @@
#define SOCKADDR sockaddr
#define SOCKADDR sockaddr
#define SOCKET_ERRNO() (errno)
#define SOCKET_ERRNO() (errno)
#include <wchar.h>
#define mywcsncasecmp wcsncasecmp
#define mywcsncasecmp wcsncasecmp
#define mystrncasecmp strncasecmp
#define mystrncasecmp strncasecmp
inline
int
_wtoi
(
const
wchar_t
*
s
)
{
wchar_t
*
endptr
;
return
(
int
)
wcstol
(
s
,
&
endptr
,
10
);
}
#endif
#endif
#include <wchar.h>
inline
int
_wtoi
(
const
wchar_t
*
str
){
return
(
int
)
wcstol
(
str
,
0
,
10
);
}
template
<
size_t
N
,
typename
...
TR
>
template
<
size_t
N
,
typename
...
TR
>
inline
int
myswprintf
(
wchar_t
(
&
buf
)[
N
],
const
wchar_t
*
fmt
,
TR
...
args
)
{
inline
int
myswprintf
(
wchar_t
(
&
buf
)[
N
],
const
wchar_t
*
fmt
,
TR
...
args
)
{
return
swprintf
(
buf
,
N
,
fmt
,
args
...);
return
swprintf
(
buf
,
N
,
fmt
,
args
...);
}
}
#include <irrlicht.h>
#ifdef __APPLE__
#include <OpenGL/gl.h>
#include <OpenGL/glu.h>
#else //__APPLE__
#include <GL/gl.h>
#include <GL/glu.h>
#endif //__APPLE__
#include "CGUITTFont.h"
#include "CGUIImageButton.h"
#include <iostream>
#include <stdio.h>
#include <stdio.h>
#include <stdlib.h>
#include <stdlib.h>
#include <time.h>
#include <iostream>
#include <thread>
#include <mutex>
#include <algorithm>
#include <algorithm>
#include <string>
#include "bufferio.h"
#include "bufferio.h"
#include "myfilesystem.h"
#include "mysignal.h"
#include "../ocgcore/ocgapi.h"
#include "../ocgcore/ocgapi.h"
#include "../ocgcore/common.h"
#include "../ocgcore/common.h"
#include <irrlicht.h>
using
namespace
irr
;
using
namespace
irr
;
using
namespace
core
;
using
namespace
core
;
using
namespace
scene
;
using
namespace
scene
;
...
...
gframe/data_manager.cpp
View file @
e1ac1164
...
@@ -127,7 +127,7 @@ bool DataManager::LoadStrings(IReadFile* reader) {
...
@@ -127,7 +127,7 @@ bool DataManager::LoadStrings(IReadFile* reader) {
while
(
reader
->
read
(
&
ch
[
0
],
1
))
{
while
(
reader
->
read
(
&
ch
[
0
],
1
))
{
if
(
ch
[
0
]
==
'\0'
)
if
(
ch
[
0
]
==
'\0'
)
break
;
break
;
strcat
(
linebuf
,
ch
);
st
d
::
st
rcat
(
linebuf
,
ch
);
if
(
ch
[
0
]
==
'\n'
)
{
if
(
ch
[
0
]
==
'\n'
)
{
ReadStringConfLine
(
linebuf
);
ReadStringConfLine
(
linebuf
);
linebuf
[
0
]
=
'\0'
;
linebuf
[
0
]
=
'\0'
;
...
@@ -144,22 +144,22 @@ void DataManager::ReadStringConfLine(const char* linebuf) {
...
@@ -144,22 +144,22 @@ void DataManager::ReadStringConfLine(const char* linebuf) {
wchar_t
strBuffer
[
4096
]{};
wchar_t
strBuffer
[
4096
]{};
if
(
sscanf
(
linebuf
,
"!%63s"
,
strbuf
)
!=
1
)
if
(
sscanf
(
linebuf
,
"!%63s"
,
strbuf
)
!=
1
)
return
;
return
;
if
(
!
strcmp
(
strbuf
,
"system"
))
{
if
(
!
st
d
::
st
rcmp
(
strbuf
,
"system"
))
{
if
(
sscanf
(
&
linebuf
[
7
],
"%d %240[^
\n
]"
,
&
value
,
strbuf
)
!=
2
)
if
(
sscanf
(
&
linebuf
[
7
],
"%d %240[^
\n
]"
,
&
value
,
strbuf
)
!=
2
)
return
;
return
;
BufferIO
::
DecodeUTF8
(
strbuf
,
strBuffer
);
BufferIO
::
DecodeUTF8
(
strbuf
,
strBuffer
);
_sysStrings
[
value
]
=
strBuffer
;
_sysStrings
[
value
]
=
strBuffer
;
}
else
if
(
!
strcmp
(
strbuf
,
"victory"
))
{
}
else
if
(
!
st
d
::
st
rcmp
(
strbuf
,
"victory"
))
{
if
(
sscanf
(
&
linebuf
[
8
],
"%x %240[^
\n
]"
,
&
value
,
strbuf
)
!=
2
)
if
(
sscanf
(
&
linebuf
[
8
],
"%x %240[^
\n
]"
,
&
value
,
strbuf
)
!=
2
)
return
;
return
;
BufferIO
::
DecodeUTF8
(
strbuf
,
strBuffer
);
BufferIO
::
DecodeUTF8
(
strbuf
,
strBuffer
);
_victoryStrings
[
value
]
=
strBuffer
;
_victoryStrings
[
value
]
=
strBuffer
;
}
else
if
(
!
strcmp
(
strbuf
,
"counter"
))
{
}
else
if
(
!
st
d
::
st
rcmp
(
strbuf
,
"counter"
))
{
if
(
sscanf
(
&
linebuf
[
8
],
"%x %240[^
\n
]"
,
&
value
,
strbuf
)
!=
2
)
if
(
sscanf
(
&
linebuf
[
8
],
"%x %240[^
\n
]"
,
&
value
,
strbuf
)
!=
2
)
return
;
return
;
BufferIO
::
DecodeUTF8
(
strbuf
,
strBuffer
);
BufferIO
::
DecodeUTF8
(
strbuf
,
strBuffer
);
_counterStrings
[
value
]
=
strBuffer
;
_counterStrings
[
value
]
=
strBuffer
;
}
else
if
(
!
strcmp
(
strbuf
,
"setname"
))
{
}
else
if
(
!
st
d
::
st
rcmp
(
strbuf
,
"setname"
))
{
//using tab for comment
//using tab for comment
if
(
sscanf
(
&
linebuf
[
8
],
"%x %240[^
\t\n
]"
,
&
value
,
strbuf
)
!=
2
)
if
(
sscanf
(
&
linebuf
[
8
],
"%x %240[^
\t\n
]"
,
&
value
,
strbuf
)
!=
2
)
return
;
return
;
...
...
gframe/deck_con.cpp
View file @
e1ac1164
#include "config.h"
#include "config.h"
#include "deck_con.h"
#include "deck_con.h"
#include "myfilesystem.h"
#include "data_manager.h"
#include "data_manager.h"
#include "deck_manager.h"
#include "deck_manager.h"
#include "image_manager.h"
#include "image_manager.h"
...
@@ -504,7 +505,7 @@ bool DeckBuilder::OnEvent(const irr::SEvent& event) {
...
@@ -504,7 +505,7 @@ bool DeckBuilder::OnEvent(const irr::SEvent& event) {
}
}
for
(
int
i
=
0
;
i
<
(
int
)
mainGame
->
lstDecks
->
getItemCount
();
i
++
)
{
for
(
int
i
=
0
;
i
<
(
int
)
mainGame
->
lstDecks
->
getItemCount
();
i
++
)
{
if
(
!
mywcsncasecmp
(
mainGame
->
lstDecks
->
getListItem
(
i
),
deckname
,
256
))
{
if
(
!
mywcsncasecmp
(
mainGame
->
lstDecks
->
getListItem
(
i
),
deckname
,
256
))
{
deckManager
.
LoadDeck
(
filepath
);
deckManager
.
Load
Current
Deck
(
filepath
);
prev_deck
=
i
;
prev_deck
=
i
;
mainGame
->
cbDBDecks
->
setSelected
(
prev_deck
);
mainGame
->
cbDBDecks
->
setSelected
(
prev_deck
);
mainGame
->
lstDecks
->
setSelected
(
prev_deck
);
mainGame
->
lstDecks
->
setSelected
(
prev_deck
);
...
@@ -538,7 +539,7 @@ bool DeckBuilder::OnEvent(const irr::SEvent& event) {
...
@@ -538,7 +539,7 @@ bool DeckBuilder::OnEvent(const irr::SEvent& event) {
ChangeCategory
(
catesel
);
ChangeCategory
(
catesel
);
for
(
int
i
=
0
;
i
<
(
int
)
mainGame
->
lstDecks
->
getItemCount
();
i
++
)
{
for
(
int
i
=
0
;
i
<
(
int
)
mainGame
->
lstDecks
->
getItemCount
();
i
++
)
{
if
(
!
mywcsncasecmp
(
mainGame
->
lstDecks
->
getListItem
(
i
),
newdeckname
,
256
))
{
if
(
!
mywcsncasecmp
(
mainGame
->
lstDecks
->
getListItem
(
i
),
newdeckname
,
256
))
{
deckManager
.
LoadDeck
(
newfilepath
);
deckManager
.
Load
Current
Deck
(
newfilepath
);
prev_deck
=
i
;
prev_deck
=
i
;
mainGame
->
cbDBDecks
->
setSelected
(
prev_deck
);
mainGame
->
cbDBDecks
->
setSelected
(
prev_deck
);
mainGame
->
lstDecks
->
setSelected
(
prev_deck
);
mainGame
->
lstDecks
->
setSelected
(
prev_deck
);
...
@@ -565,7 +566,7 @@ bool DeckBuilder::OnEvent(const irr::SEvent& event) {
...
@@ -565,7 +566,7 @@ bool DeckBuilder::OnEvent(const irr::SEvent& event) {
if
(
decksel
!=
-
1
)
{
if
(
decksel
!=
-
1
)
{
mainGame
->
lstDecks
->
setSelected
(
decksel
);
mainGame
->
lstDecks
->
setSelected
(
decksel
);
mainGame
->
cbDBDecks
->
setSelected
(
decksel
);
mainGame
->
cbDBDecks
->
setSelected
(
decksel
);
deckManager
.
LoadDeck
(
mainGame
->
cbDBCategory
,
mainGame
->
cbDBDecks
);
deckManager
.
Load
Current
Deck
(
mainGame
->
cbDBCategory
,
mainGame
->
cbDBDecks
);
}
}
RefreshReadonly
(
prev_category
);
RefreshReadonly
(
prev_category
);
prev_deck
=
decksel
;
prev_deck
=
decksel
;
...
@@ -602,7 +603,7 @@ bool DeckBuilder::OnEvent(const irr::SEvent& event) {
...
@@ -602,7 +603,7 @@ bool DeckBuilder::OnEvent(const irr::SEvent& event) {
ChangeCategory
(
catesel
);
ChangeCategory
(
catesel
);
for
(
int
i
=
0
;
i
<
(
int
)
mainGame
->
lstDecks
->
getItemCount
();
i
++
)
{
for
(
int
i
=
0
;
i
<
(
int
)
mainGame
->
lstDecks
->
getItemCount
();
i
++
)
{
if
(
!
mywcsncasecmp
(
mainGame
->
lstDecks
->
getListItem
(
i
),
deckname
,
256
))
{
if
(
!
mywcsncasecmp
(
mainGame
->
lstDecks
->
getListItem
(
i
),
deckname
,
256
))
{
deckManager
.
LoadDeck
(
newfilepath
);
deckManager
.
Load
Current
Deck
(
newfilepath
);
prev_deck
=
i
;
prev_deck
=
i
;
mainGame
->
cbDBDecks
->
setSelected
(
prev_deck
);
mainGame
->
cbDBDecks
->
setSelected
(
prev_deck
);
mainGame
->
lstDecks
->
setSelected
(
prev_deck
);
mainGame
->
lstDecks
->
setSelected
(
prev_deck
);
...
@@ -640,7 +641,7 @@ bool DeckBuilder::OnEvent(const irr::SEvent& event) {
...
@@ -640,7 +641,7 @@ bool DeckBuilder::OnEvent(const irr::SEvent& event) {
ChangeCategory
(
catesel
);
ChangeCategory
(
catesel
);
for
(
int
i
=
0
;
i
<
(
int
)
mainGame
->
lstDecks
->
getItemCount
();
i
++
)
{
for
(
int
i
=
0
;
i
<
(
int
)
mainGame
->
lstDecks
->
getItemCount
();
i
++
)
{
if
(
!
mywcsncasecmp
(
mainGame
->
lstDecks
->
getListItem
(
i
),
deckname
,
256
))
{
if
(
!
mywcsncasecmp
(
mainGame
->
lstDecks
->
getListItem
(
i
),
deckname
,
256
))
{
deckManager
.
LoadDeck
(
newfilepath
);
deckManager
.
Load
Current
Deck
(
newfilepath
);
prev_deck
=
i
;
prev_deck
=
i
;
mainGame
->
cbDBDecks
->
setSelected
(
prev_deck
);
mainGame
->
cbDBDecks
->
setSelected
(
prev_deck
);
mainGame
->
lstDecks
->
setSelected
(
prev_deck
);
mainGame
->
lstDecks
->
setSelected
(
prev_deck
);
...
@@ -693,7 +694,7 @@ bool DeckBuilder::OnEvent(const irr::SEvent& event) {
...
@@ -693,7 +694,7 @@ bool DeckBuilder::OnEvent(const irr::SEvent& event) {
break
;
break
;
}
}
case
BUTTON_SIDE_RELOAD
:
{
case
BUTTON_SIDE_RELOAD
:
{
deckManager
.
LoadDeck
(
mainGame
->
cbCategorySelect
,
mainGame
->
cbDeckSelect
);
deckManager
.
Load
Current
Deck
(
mainGame
->
cbCategorySelect
,
mainGame
->
cbDeckSelect
);
break
;
break
;
}
}
case
BUTTON_BIG_CARD_ORIG_SIZE
:
{
case
BUTTON_BIG_CARD_ORIG_SIZE
:
{
...
@@ -739,7 +740,7 @@ bool DeckBuilder::OnEvent(const irr::SEvent& event) {
...
@@ -739,7 +740,7 @@ bool DeckBuilder::OnEvent(const irr::SEvent& event) {
sel
=
count
-
1
;
sel
=
count
-
1
;
mainGame
->
cbDBDecks
->
setSelected
(
sel
);
mainGame
->
cbDBDecks
->
setSelected
(
sel
);
if
(
sel
!=
-
1
)
if
(
sel
!=
-
1
)
deckManager
.
LoadDeck
(
mainGame
->
cbDBCategory
,
mainGame
->
cbDBDecks
);
deckManager
.
Load
Current
Deck
(
mainGame
->
cbDBCategory
,
mainGame
->
cbDBDecks
);
mainGame
->
stACMessage
->
setText
(
dataManager
.
GetSysString
(
1338
));
mainGame
->
stACMessage
->
setText
(
dataManager
.
GetSysString
(
1338
));
mainGame
->
PopupElement
(
mainGame
->
wACMessage
,
20
);
mainGame
->
PopupElement
(
mainGame
->
wACMessage
,
20
);
prev_deck
=
sel
;
prev_deck
=
sel
;
...
@@ -753,7 +754,7 @@ bool DeckBuilder::OnEvent(const irr::SEvent& event) {
...
@@ -753,7 +754,7 @@ bool DeckBuilder::OnEvent(const irr::SEvent& event) {
ChangeCategory
(
catesel
);
ChangeCategory
(
catesel
);
}
else
if
(
prev_operation
==
COMBOBOX_DBDECKS
)
{
}
else
if
(
prev_operation
==
COMBOBOX_DBDECKS
)
{
int
decksel
=
mainGame
->
cbDBDecks
->
getSelected
();
int
decksel
=
mainGame
->
cbDBDecks
->
getSelected
();
deckManager
.
LoadDeck
(
mainGame
->
cbDBCategory
,
mainGame
->
cbDBDecks
);
deckManager
.
Load
Current
Deck
(
mainGame
->
cbDBCategory
,
mainGame
->
cbDBDecks
);
prev_deck
=
decksel
;
prev_deck
=
decksel
;
is_modified
=
false
;
is_modified
=
false
;
}
else
if
(
prev_operation
==
BUTTON_MANAGE_DECK
)
{
}
else
if
(
prev_operation
==
BUTTON_MANAGE_DECK
)
{
...
@@ -870,7 +871,7 @@ bool DeckBuilder::OnEvent(const irr::SEvent& event) {
...
@@ -870,7 +871,7 @@ bool DeckBuilder::OnEvent(const irr::SEvent& event) {
}
}
int
decksel
=
mainGame
->
cbDBDecks
->
getSelected
();
int
decksel
=
mainGame
->
cbDBDecks
->
getSelected
();
if
(
decksel
>=
0
)
{
if
(
decksel
>=
0
)
{
deckManager
.
LoadDeck
(
mainGame
->
cbDBCategory
,
mainGame
->
cbDBDecks
);
deckManager
.
Load
Current
Deck
(
mainGame
->
cbDBCategory
,
mainGame
->
cbDBDecks
);
}
}
prev_deck
=
decksel
;
prev_deck
=
decksel
;
is_modified
=
false
;
is_modified
=
false
;
...
@@ -1029,7 +1030,7 @@ bool DeckBuilder::OnEvent(const irr::SEvent& event) {
...
@@ -1029,7 +1030,7 @@ bool DeckBuilder::OnEvent(const irr::SEvent& event) {
wchar_t
catepath
[
256
];
wchar_t
catepath
[
256
];
deckManager
.
GetCategoryPath
(
catepath
,
mainGame
->
lstCategories
->
getSelected
(),
mainGame
->
lstCategories
->
getListItem
(
mainGame
->
lstCategories
->
getSelected
()));
deckManager
.
GetCategoryPath
(
catepath
,
mainGame
->
lstCategories
->
getSelected
(),
mainGame
->
lstCategories
->
getListItem
(
mainGame
->
lstCategories
->
getSelected
()));
myswprintf
(
filepath
,
L"%ls/%ls.ydk"
,
catepath
,
mainGame
->
lstDecks
->
getListItem
(
decksel
));
myswprintf
(
filepath
,
L"%ls/%ls.ydk"
,
catepath
,
mainGame
->
lstDecks
->
getListItem
(
decksel
));
deckManager
.
LoadDeck
(
filepath
,
showing_pack
);
deckManager
.
Load
Current
Deck
(
filepath
,
showing_pack
);
RefreshPackListScroll
();
RefreshPackListScroll
();
prev_deck
=
decksel
;
prev_deck
=
decksel
;
break
;
break
;
...
@@ -1343,12 +1344,12 @@ void DeckBuilder::GetHoveredCard() {
...
@@ -1343,12 +1344,12 @@ void DeckBuilder::GetHoveredCard() {
}
else
if
(
x
>=
810
&&
x
<=
995
&&
y
>=
165
&&
y
<=
626
)
{
}
else
if
(
x
>=
810
&&
x
<=
995
&&
y
>=
165
&&
y
<=
626
)
{
hovered_pos
=
4
;
hovered_pos
=
4
;
hovered_seq
=
(
y
-
165
)
/
66
;
hovered_seq
=
(
y
-
165
)
/
66
;
int
pos
=
mainGame
->
scrFilter
->
getPos
()
+
hovered_seq
;
int
current_
pos
=
mainGame
->
scrFilter
->
getPos
()
+
hovered_seq
;
if
(
pos
>=
(
int
)
results
.
size
())
{
if
(
current_
pos
>=
(
int
)
results
.
size
())
{
hovered_seq
=
-
1
;
hovered_seq
=
-
1
;
hovered_code
=
0
;
hovered_code
=
0
;
}
else
{
}
else
{
hovered_code
=
results
[
pos
]
->
first
;
hovered_code
=
results
[
current_
pos
]
->
first
;
}
}
}
}
if
(
is_draging
)
{
if
(
is_draging
)
{
...
@@ -1677,7 +1678,7 @@ void DeckBuilder::ChangeCategory(int catesel) {
...
@@ -1677,7 +1678,7 @@ void DeckBuilder::ChangeCategory(int catesel) {
mainGame
->
RefreshDeck
(
mainGame
->
cbDBCategory
,
mainGame
->
cbDBDecks
);
mainGame
->
RefreshDeck
(
mainGame
->
cbDBCategory
,
mainGame
->
cbDBDecks
);
mainGame
->
cbDBDecks
->
setSelected
(
0
);
mainGame
->
cbDBDecks
->
setSelected
(
0
);
RefreshReadonly
(
catesel
);
RefreshReadonly
(
catesel
);
deckManager
.
LoadDeck
(
mainGame
->
cbDBCategory
,
mainGame
->
cbDBDecks
);
deckManager
.
Load
Current
Deck
(
mainGame
->
cbDBCategory
,
mainGame
->
cbDBDecks
);
is_modified
=
false
;
is_modified
=
false
;
prev_category
=
catesel
;
prev_category
=
catesel
;
prev_deck
=
0
;
prev_deck
=
0
;
...
...
gframe/deck_manager.cpp
View file @
e1ac1164
This diff is collapsed.
Click to expand it.
gframe/deck_manager.h
View file @
e1ac1164
...
@@ -64,14 +64,14 @@ public:
...
@@ -64,14 +64,14 @@ public:
const
std
::
unordered_map
<
int
,
int
>*
GetLFListContent
(
int
lfhash
);
const
std
::
unordered_map
<
int
,
int
>*
GetLFListContent
(
int
lfhash
);
int
CheckDeck
(
Deck
&
deck
,
int
lfhash
,
int
rule
);
int
CheckDeck
(
Deck
&
deck
,
int
lfhash
,
int
rule
);
int
LoadDeck
(
Deck
&
deck
,
int
*
dbuf
,
int
mainc
,
int
sidec
,
bool
is_packlist
=
false
);
int
LoadDeck
(
Deck
&
deck
,
int
*
dbuf
,
int
mainc
,
int
sidec
,
bool
is_packlist
=
false
);
int
LoadDeck
(
Deck
&
deck
,
std
::
istringstream
&
deckStream
,
bool
is_packlist
=
false
);
bool
LoadSide
(
Deck
&
deck
,
int
*
dbuf
,
int
mainc
,
int
sidec
);
bool
LoadSide
(
Deck
&
deck
,
int
*
dbuf
,
int
mainc
,
int
sidec
);
void
GetCategoryPath
(
wchar_t
*
ret
,
int
index
,
const
wchar_t
*
text
);
void
GetCategoryPath
(
wchar_t
*
ret
,
int
index
,
const
wchar_t
*
text
);
void
GetDeckFile
(
wchar_t
*
ret
,
irr
::
gui
::
IGUIComboBox
*
cbCategory
,
irr
::
gui
::
IGUIComboBox
*
cbDeck
);
void
GetDeckFile
(
wchar_t
*
ret
,
irr
::
gui
::
IGUIComboBox
*
cbCategory
,
irr
::
gui
::
IGUIComboBox
*
cbDeck
);
bool
LoadDeck
(
irr
::
gui
::
IGUIComboBox
*
cbCategory
,
irr
::
gui
::
IGUIComboBox
*
cbDeck
);
FILE
*
OpenDeckFile
(
const
wchar_t
*
file
,
const
char
*
mode
);
FILE
*
OpenDeckFile
(
const
wchar_t
*
file
,
const
char
*
mode
);
IReadFile
*
OpenDeckReader
(
const
wchar_t
*
file
);
IReadFile
*
OpenDeckReader
(
const
wchar_t
*
file
);
bool
LoadDeck
(
const
wchar_t
*
file
,
bool
is_packlist
=
false
);
bool
Load
Current
Deck
(
const
wchar_t
*
file
,
bool
is_packlist
=
false
);
bool
Load
Deck
(
std
::
istringstream
*
deckStream
,
bool
is_packlist
=
false
);
bool
Load
CurrentDeck
(
irr
::
gui
::
IGUIComboBox
*
cbCategory
,
irr
::
gui
::
IGUIComboBox
*
cbDeck
);
bool
SaveDeck
(
Deck
&
deck
,
const
wchar_t
*
file
);
bool
SaveDeck
(
Deck
&
deck
,
const
wchar_t
*
file
);
bool
DeleteDeck
(
const
wchar_t
*
file
);
bool
DeleteDeck
(
const
wchar_t
*
file
);
wchar_t
DeckFormatBuffer
[
128
];
wchar_t
DeckFormatBuffer
[
128
];
...
@@ -81,6 +81,7 @@ public:
...
@@ -81,6 +81,7 @@ public:
bool
CreateCategory
(
const
wchar_t
*
name
);
bool
CreateCategory
(
const
wchar_t
*
name
);
bool
RenameCategory
(
const
wchar_t
*
oldname
,
const
wchar_t
*
newname
);
bool
RenameCategory
(
const
wchar_t
*
oldname
,
const
wchar_t
*
newname
);
bool
DeleteCategory
(
const
wchar_t
*
name
);
bool
DeleteCategory
(
const
wchar_t
*
name
);
bool
SaveDeckBuffer
(
const
int
deckbuf
[],
const
wchar_t
*
name
);
};
};
extern
DeckManager
deckManager
;
extern
DeckManager
deckManager
;
...
...
gframe/drawing.cpp
View file @
e1ac1164
...
@@ -224,7 +224,7 @@ void Game::DrawBackGround() {
...
@@ -224,7 +224,7 @@ void Game::DrawBackGround() {
}
}
}
}
void
Game
::
DrawLinkedZones
(
ClientCard
*
pcard
)
{
void
Game
::
DrawLinkedZones
(
ClientCard
*
pcard
)
{
int
mark
=
pcard
->
link_marker
;
auto
mark
=
pcard
->
link_marker
;
ClientCard
*
pcard2
;
ClientCard
*
pcard2
;
if
(
dField
.
hovered_sequence
<
5
)
{
if
(
dField
.
hovered_sequence
<
5
)
{
if
(
mark
&
LINK_MARKER_LEFT
&&
dField
.
hovered_sequence
>
0
)
{
if
(
mark
&
LINK_MARKER_LEFT
&&
dField
.
hovered_sequence
>
0
)
{
...
@@ -241,25 +241,25 @@ void Game::DrawLinkedZones(ClientCard* pcard) {
...
@@ -241,25 +241,25 @@ void Game::DrawLinkedZones(ClientCard* pcard) {
if
((
mark
&
LINK_MARKER_TOP_LEFT
&&
dField
.
hovered_sequence
==
2
)
if
((
mark
&
LINK_MARKER_TOP_LEFT
&&
dField
.
hovered_sequence
==
2
)
||
(
mark
&
LINK_MARKER_TOP
&&
dField
.
hovered_sequence
==
1
)
||
(
mark
&
LINK_MARKER_TOP
&&
dField
.
hovered_sequence
==
1
)
||
(
mark
&
LINK_MARKER_TOP_RIGHT
&&
dField
.
hovered_sequence
==
0
))
{
||
(
mark
&
LINK_MARKER_TOP_RIGHT
&&
dField
.
hovered_sequence
==
0
))
{
int
mark
=
(
dField
.
hovered_sequence
==
2
)
?
LINK_MARKER_BOTTOM_RIGHT
:
(
dField
.
hovered_sequence
==
1
)
?
LINK_MARKER_BOTTOM
:
LINK_MARKER_BOTTOM_LEFT
;
int
arrow
=
(
dField
.
hovered_sequence
==
2
)
?
LINK_MARKER_BOTTOM_RIGHT
:
(
dField
.
hovered_sequence
==
1
)
?
LINK_MARKER_BOTTOM
:
LINK_MARKER_BOTTOM_LEFT
;
pcard2
=
dField
.
mzone
[
dField
.
hovered_controler
][
5
];
pcard2
=
dField
.
mzone
[
dField
.
hovered_controler
][
5
];
if
(
!
pcard2
)
{
if
(
!
pcard2
)
{
pcard2
=
dField
.
mzone
[
1
-
dField
.
hovered_controler
][
6
];
pcard2
=
dField
.
mzone
[
1
-
dField
.
hovered_controler
][
6
];
mark
=
(
dField
.
hovered_sequence
==
2
)
?
LINK_MARKER_TOP_LEFT
:
(
dField
.
hovered_sequence
==
1
)
?
LINK_MARKER_TOP
:
LINK_MARKER_TOP_RIGHT
;
arrow
=
(
dField
.
hovered_sequence
==
2
)
?
LINK_MARKER_TOP_LEFT
:
(
dField
.
hovered_sequence
==
1
)
?
LINK_MARKER_TOP
:
LINK_MARKER_TOP_RIGHT
;
}
}
CheckMutual
(
pcard2
,
mark
);
CheckMutual
(
pcard2
,
arrow
);
driver
->
drawVertexPrimitiveList
(
&
matManager
.
vFieldMzone
[
dField
.
hovered_controler
][
5
],
4
,
matManager
.
iRectangle
,
2
);
driver
->
drawVertexPrimitiveList
(
&
matManager
.
vFieldMzone
[
dField
.
hovered_controler
][
5
],
4
,
matManager
.
iRectangle
,
2
);
}
}
if
((
mark
&
LINK_MARKER_TOP_LEFT
&&
dField
.
hovered_sequence
==
4
)
if
((
mark
&
LINK_MARKER_TOP_LEFT
&&
dField
.
hovered_sequence
==
4
)
||
(
mark
&
LINK_MARKER_TOP
&&
dField
.
hovered_sequence
==
3
)
||
(
mark
&
LINK_MARKER_TOP
&&
dField
.
hovered_sequence
==
3
)
||
(
mark
&
LINK_MARKER_TOP_RIGHT
&&
dField
.
hovered_sequence
==
2
))
{
||
(
mark
&
LINK_MARKER_TOP_RIGHT
&&
dField
.
hovered_sequence
==
2
))
{
int
mark
=
(
dField
.
hovered_sequence
==
4
)
?
LINK_MARKER_BOTTOM_RIGHT
:
(
dField
.
hovered_sequence
==
3
)
?
LINK_MARKER_BOTTOM
:
LINK_MARKER_BOTTOM_LEFT
;
int
arrow
=
(
dField
.
hovered_sequence
==
4
)
?
LINK_MARKER_BOTTOM_RIGHT
:
(
dField
.
hovered_sequence
==
3
)
?
LINK_MARKER_BOTTOM
:
LINK_MARKER_BOTTOM_LEFT
;
pcard2
=
dField
.
mzone
[
dField
.
hovered_controler
][
6
];
pcard2
=
dField
.
mzone
[
dField
.
hovered_controler
][
6
];
if
(
!
pcard2
)
{
if
(
!
pcard2
)
{
pcard2
=
dField
.
mzone
[
1
-
dField
.
hovered_controler
][
5
];
pcard2
=
dField
.
mzone
[
1
-
dField
.
hovered_controler
][
5
];
mark
=
(
dField
.
hovered_sequence
==
4
)
?
LINK_MARKER_TOP_LEFT
:
(
dField
.
hovered_sequence
==
3
)
?
LINK_MARKER_TOP
:
LINK_MARKER_TOP_RIGHT
;
arrow
=
(
dField
.
hovered_sequence
==
4
)
?
LINK_MARKER_TOP_LEFT
:
(
dField
.
hovered_sequence
==
3
)
?
LINK_MARKER_TOP
:
LINK_MARKER_TOP_RIGHT
;
}
}
CheckMutual
(
pcard2
,
mark
);
CheckMutual
(
pcard2
,
arrow
);
driver
->
drawVertexPrimitiveList
(
&
matManager
.
vFieldMzone
[
dField
.
hovered_controler
][
6
],
4
,
matManager
.
iRectangle
,
2
);
driver
->
drawVertexPrimitiveList
(
&
matManager
.
vFieldMzone
[
dField
.
hovered_controler
][
6
],
4
,
matManager
.
iRectangle
,
2
);
}
}
}
}
...
...
gframe/duelclient.cpp
View file @
e1ac1164
...
@@ -11,6 +11,7 @@
...
@@ -11,6 +11,7 @@
#ifdef _WIN32
#ifdef _WIN32
#include <Windns.h>
#include <Windns.h>
#endif
#endif
#include <thread>
namespace
ygo
{
namespace
ygo
{
...
@@ -52,7 +53,7 @@ bool DuelClient::StartClient(unsigned int ip, unsigned short port, bool create_g
...
@@ -52,7 +53,7 @@ bool DuelClient::StartClient(unsigned int ip, unsigned short port, bool create_g
client_base
=
event_base_new
();
client_base
=
event_base_new
();
if
(
!
client_base
)
if
(
!
client_base
)
return
false
;
return
false
;
memset
(
&
sin
,
0
,
sizeof
(
sin
)
);
std
::
memset
(
&
sin
,
0
,
sizeof
sin
);
sin
.
sin_family
=
AF_INET
;
sin
.
sin_family
=
AF_INET
;
sin
.
sin_addr
.
s_addr
=
htonl
(
ip
);
sin
.
sin_addr
.
s_addr
=
htonl
(
ip
);
sin
.
sin_port
=
htons
(
port
);
sin
.
sin_port
=
htons
(
port
);
...
@@ -73,8 +74,8 @@ bool DuelClient::StartClient(unsigned int ip, unsigned short port, bool create_g
...
@@ -73,8 +74,8 @@ bool DuelClient::StartClient(unsigned int ip, unsigned short port, bool create_g
rnd
.
reset
((
uint_fast32_t
)
std
::
random_device
()());
rnd
.
reset
((
uint_fast32_t
)
std
::
random_device
()());
if
(
!
create_game
)
{
if
(
!
create_game
)
{
timeval
timeout
=
{
5
,
0
};
timeval
timeout
=
{
5
,
0
};
event
*
resp
_event
=
event_new
(
client_base
,
0
,
EV_TIMEOUT
,
ConnectTimeout
,
0
);
event
*
timeout
_event
=
event_new
(
client_base
,
0
,
EV_TIMEOUT
,
ConnectTimeout
,
0
);
event_add
(
resp
_event
,
&
timeout
);
event_add
(
timeout
_event
,
&
timeout
);
}
}
std
::
thread
(
ClientThread
).
detach
();
std
::
thread
(
ClientThread
).
detach
();
return
true
;
return
true
;
...
@@ -112,7 +113,7 @@ void DuelClient::StopClient(bool is_exiting) {
...
@@ -112,7 +113,7 @@ void DuelClient::StopClient(bool is_exiting) {
void
DuelClient
::
ClientRead
(
bufferevent
*
bev
,
void
*
ctx
)
{
void
DuelClient
::
ClientRead
(
bufferevent
*
bev
,
void
*
ctx
)
{
evbuffer
*
input
=
bufferevent_get_input
(
bev
);
evbuffer
*
input
=
bufferevent_get_input
(
bev
);
int
len
=
evbuffer_get_length
(
input
);
int
len
=
evbuffer_get_length
(
input
);
unsigned
char
*
duel_client_read
=
new
unsigned
char
[
std
::
min
(
len
,
SIZE_NETWORK_BUFFER
)
];
unsigned
char
*
duel_client_read
=
new
unsigned
char
[
SIZE_NETWORK_BUFFER
];
unsigned
short
packet_len
;
unsigned
short
packet_len
;
while
(
len
>=
2
)
{
while
(
len
>=
2
)
{
evbuffer_copyout
(
input
,
&
packet_len
,
sizeof
packet_len
);
evbuffer_copyout
(
input
,
&
packet_len
,
sizeof
packet_len
);
...
@@ -157,10 +158,10 @@ void DuelClient::ClientEvent(bufferevent *bev, short events, void *ctx) {
...
@@ -157,10 +158,10 @@ void DuelClient::ClientEvent(bufferevent *bev, short events, void *ctx) {
BufferIO
::
CopyWStr
(
mainGame
->
ebServerPass
->
getText
(),
cscg
.
pass
,
20
);
BufferIO
::
CopyWStr
(
mainGame
->
ebServerPass
->
getText
(),
cscg
.
pass
,
20
);
cscg
.
info
.
rule
=
mainGame
->
cbRule
->
getSelected
();
cscg
.
info
.
rule
=
mainGame
->
cbRule
->
getSelected
();
cscg
.
info
.
mode
=
mainGame
->
cbMatchMode
->
getSelected
();
cscg
.
info
.
mode
=
mainGame
->
cbMatchMode
->
getSelected
();
cscg
.
info
.
start_hand
=
_wtoi
(
mainGame
->
ebStartHand
->
getText
()
);
cscg
.
info
.
start_hand
=
wcstol
(
mainGame
->
ebStartHand
->
getText
(),
nullptr
,
10
);
cscg
.
info
.
start_lp
=
_wtoi
(
mainGame
->
ebStartLP
->
getText
()
);
cscg
.
info
.
start_lp
=
wcstol
(
mainGame
->
ebStartLP
->
getText
(),
nullptr
,
10
);
cscg
.
info
.
draw_count
=
_wtoi
(
mainGame
->
ebDrawCount
->
getText
()
);
cscg
.
info
.
draw_count
=
wcstol
(
mainGame
->
ebDrawCount
->
getText
(),
nullptr
,
10
);
cscg
.
info
.
time_limit
=
_wtoi
(
mainGame
->
ebTimeLimit
->
getText
()
);
cscg
.
info
.
time_limit
=
wcstol
(
mainGame
->
ebTimeLimit
->
getText
(),
nullptr
,
10
);
cscg
.
info
.
lflist
=
mainGame
->
cbHostLFlist
->
getItemData
(
mainGame
->
cbHostLFlist
->
getSelected
());
cscg
.
info
.
lflist
=
mainGame
->
cbHostLFlist
->
getItemData
(
mainGame
->
cbHostLFlist
->
getSelected
());
cscg
.
info
.
duel_rule
=
mainGame
->
cbDuelRule
->
getSelected
()
+
1
;
cscg
.
info
.
duel_rule
=
mainGame
->
cbDuelRule
->
getSelected
()
+
1
;
cscg
.
info
.
no_check_deck
=
mainGame
->
chkNoCheckDeck
->
isChecked
();
cscg
.
info
.
no_check_deck
=
mainGame
->
chkNoCheckDeck
->
isChecked
();
...
@@ -1573,8 +1574,8 @@ int DuelClient::ClientAnalyze(unsigned char* msg, unsigned int len) {
...
@@ -1573,8 +1574,8 @@ int DuelClient::ClientAnalyze(unsigned char* msg, unsigned int len) {
else
if
(
pcard
->
location
==
LOCATION_EXTRA
)
else
if
(
pcard
->
location
==
LOCATION_EXTRA
)
mainGame
->
dField
.
extra_act
=
true
;
mainGame
->
dField
.
extra_act
=
true
;
else
{
else
{
int
seq
=
mainGame
->
dInfo
.
duel_rule
>=
4
?
0
:
6
;
int
left_
seq
=
mainGame
->
dInfo
.
duel_rule
>=
4
?
0
:
6
;
if
(
pcard
->
location
==
LOCATION_SZONE
&&
pcard
->
sequence
==
seq
&&
(
pcard
->
type
&
TYPE_PENDULUM
)
&&
!
pcard
->
equipTarget
)
if
(
pcard
->
location
==
LOCATION_SZONE
&&
pcard
->
sequence
==
left_
seq
&&
(
pcard
->
type
&
TYPE_PENDULUM
)
&&
!
pcard
->
equipTarget
)
mainGame
->
dField
.
pzone_act
[
pcard
->
controler
]
=
true
;
mainGame
->
dField
.
pzone_act
[
pcard
->
controler
]
=
true
;
}
}
}
}
...
@@ -3401,8 +3402,8 @@ int DuelClient::ClientAnalyze(unsigned char* msg, unsigned int len) {
...
@@ -3401,8 +3402,8 @@ int DuelClient::ClientAnalyze(unsigned char* msg, unsigned int len) {
pcard
=
mainGame
->
dField
.
GetCard
(
player
,
LOCATION_DECK
,
mainGame
->
dField
.
deck
[
player
].
size
()
-
1
);
pcard
=
mainGame
->
dField
.
GetCard
(
player
,
LOCATION_DECK
,
mainGame
->
dField
.
deck
[
player
].
size
()
-
1
);
mainGame
->
dField
.
deck
[
player
].
erase
(
mainGame
->
dField
.
deck
[
player
].
end
()
-
1
);
mainGame
->
dField
.
deck
[
player
].
erase
(
mainGame
->
dField
.
deck
[
player
].
end
()
-
1
);
mainGame
->
dField
.
AddCard
(
pcard
,
player
,
LOCATION_HAND
,
0
);
mainGame
->
dField
.
AddCard
(
pcard
,
player
,
LOCATION_HAND
,
0
);
for
(
size_t
i
=
0
;
i
<
mainGame
->
dField
.
hand
[
player
].
size
();
++
i
)
for
(
int
j
=
0
;
j
<
(
int
)
mainGame
->
dField
.
hand
[
player
].
size
();
++
j
)
mainGame
->
dField
.
MoveCard
(
mainGame
->
dField
.
hand
[
player
][
i
],
10
);
mainGame
->
dField
.
MoveCard
(
mainGame
->
dField
.
hand
[
player
][
j
],
10
);
mainGame
->
gMutex
.
unlock
();
mainGame
->
gMutex
.
unlock
();
mainGame
->
WaitFrameSignal
(
5
);
mainGame
->
WaitFrameSignal
(
5
);
}
}
...
@@ -4337,7 +4338,7 @@ void DuelClient::BeginRefreshHost() {
...
@@ -4337,7 +4338,7 @@ void DuelClient::BeginRefreshHost() {
return
;
return
;
SOCKET
reply
=
socket
(
AF_INET
,
SOCK_DGRAM
,
IPPROTO_UDP
);
SOCKET
reply
=
socket
(
AF_INET
,
SOCK_DGRAM
,
IPPROTO_UDP
);
sockaddr_in
reply_addr
;
sockaddr_in
reply_addr
;
memset
(
&
reply_addr
,
0
,
sizeof
(
reply_addr
)
);
std
::
memset
(
&
reply_addr
,
0
,
sizeof
reply_addr
);
reply_addr
.
sin_family
=
AF_INET
;
reply_addr
.
sin_family
=
AF_INET
;
reply_addr
.
sin_port
=
htons
(
7921
);
reply_addr
.
sin_port
=
htons
(
7921
);
reply_addr
.
sin_addr
.
s_addr
=
0
;
reply_addr
.
sin_addr
.
s_addr
=
0
;
...
...
gframe/event_handler.cpp
View file @
e1ac1164
...
@@ -1474,7 +1474,6 @@ bool ClientField::OnEvent(const irr::SEvent& event) {
...
@@ -1474,7 +1474,6 @@ bool ClientField::OnEvent(const irr::SEvent& event) {
DuelClient
::
SetResponseB
(
respbuf
,
selectable_cards
.
size
()
*
2
);
DuelClient
::
SetResponseB
(
respbuf
,
selectable_cards
.
size
()
*
2
);
DuelClient
::
SendResponse
();
DuelClient
::
SendResponse
();
}
else
{
}
else
{
wchar_t
formatBuffer
[
2048
];
myswprintf
(
formatBuffer
,
dataManager
.
GetSysString
(
204
),
select_counter_count
,
dataManager
.
GetCounterName
(
select_counter_type
));
myswprintf
(
formatBuffer
,
dataManager
.
GetSysString
(
204
),
select_counter_count
,
dataManager
.
GetCounterName
(
select_counter_type
));
mainGame
->
stHintMsg
->
setText
(
formatBuffer
);
mainGame
->
stHintMsg
->
setText
(
formatBuffer
);
}
}
...
@@ -1683,8 +1682,8 @@ bool ClientField::OnEvent(const irr::SEvent& event) {
...
@@ -1683,8 +1682,8 @@ bool ClientField::OnEvent(const irr::SEvent& event) {
player_name
=
mainGame
->
dInfo
.
clientname_tag
;
player_name
=
mainGame
->
dInfo
.
clientname_tag
;
}
}
std
::
wstring
str
(
player_name
);
std
::
wstring
str
(
player_name
);
const
auto
&
player_desc
_hints
=
mainGame
->
dField
.
player_desc_hints
[
mplayer
];
const
auto
&
mplayer
_hints
=
mainGame
->
dField
.
player_desc_hints
[
mplayer
];
for
(
auto
iter
=
player_desc_hints
.
begin
();
iter
!=
player_desc
_hints
.
end
();
++
iter
)
{
for
(
auto
iter
=
mplayer_hints
.
begin
();
iter
!=
mplayer
_hints
.
end
();
++
iter
)
{
myswprintf
(
formatBuffer
,
L"
\n
*%ls"
,
dataManager
.
GetDesc
(
iter
->
first
));
myswprintf
(
formatBuffer
,
L"
\n
*%ls"
,
dataManager
.
GetDesc
(
iter
->
first
));
str
.
append
(
formatBuffer
);
str
.
append
(
formatBuffer
);
}
}
...
...
gframe/game.cpp
View file @
e1ac1164
This diff is collapsed.
Click to expand it.
gframe/game.h
View file @
e1ac1164
...
@@ -2,13 +2,26 @@
...
@@ -2,13 +2,26 @@
#define GAME_H
#define GAME_H
#include "config.h"
#include "config.h"
#ifdef __APPLE__
#include <OpenGL/gl.h>
#include <OpenGL/glu.h>
#else //__APPLE__
#include <GL/gl.h>
#include <GL/glu.h>
#endif //__APPLE__
#include "CGUIImageButton.h"
#include "CGUITTFont.h"
#include "mysignal.h"
#include "client_field.h"
#include "client_field.h"
#include "deck_con.h"
#include "deck_con.h"
#include "menu_handler.h"
#include "menu_handler.h"
#include "CGUISkinSystem/CGUISkinSystem.h"
#include "CGUISkinSystem/CGUISkinSystem.h"
#include <time.h>
#include <unordered_map>
#include <unordered_map>
#include <vector>
#include <vector>
#include <list>
#include <list>
#include <mutex>
#include <functional>
#ifndef YGOPRO_DEFAULT_DUEL_RULE
#ifndef YGOPRO_DEFAULT_DUEL_RULE
#define YGOPRO_DEFAULT_DUEL_RULE 5
#define YGOPRO_DEFAULT_DUEL_RULE 5
...
...
gframe/gframe.cpp
View file @
e1ac1164
...
@@ -4,6 +4,7 @@
...
@@ -4,6 +4,7 @@
#include <event2/thread.h>
#include <event2/thread.h>
#include <locale.h>
#include <locale.h>
#include <memory>
#include <memory>
#ifdef __APPLE__
#ifdef __APPLE__
#import <CoreFoundation/CoreFoundation.h>
#import <CoreFoundation/CoreFoundation.h>
#endif
#endif
...
@@ -39,7 +40,7 @@ int main(int argc, char* argv[]) {
...
@@ -39,7 +40,7 @@ int main(int argc, char* argv[]) {
#ifdef _WIN32
#ifdef _WIN32
#ifndef _DEBUG
#ifndef _DEBUG
char
*
pstrext
;
char
*
pstrext
;
if
(
argc
==
2
&&
(
pstrext
=
strrchr
(
argv
[
1
],
'.'
))
if
(
argc
==
2
&&
(
pstrext
=
st
d
::
st
rrchr
(
argv
[
1
],
'.'
))
&&
(
!
mystrncasecmp
(
pstrext
,
".ydk"
,
4
)
||
!
mystrncasecmp
(
pstrext
,
".yrp"
,
4
)))
{
&&
(
!
mystrncasecmp
(
pstrext
,
".ydk"
,
4
)
||
!
mystrncasecmp
(
pstrext
,
".yrp"
,
4
)))
{
wchar_t
exepath
[
MAX_PATH
];
wchar_t
exepath
[
MAX_PATH
];
GetModuleFileNameW
(
NULL
,
exepath
,
MAX_PATH
);
GetModuleFileNameW
(
NULL
,
exepath
,
MAX_PATH
);
...
...
gframe/image_manager.cpp
View file @
e1ac1164
#include "image_manager.h"
#include "image_manager.h"
#include "game.h"
#include "game.h"
#include <thread>
#include "myfilesystem.h"
namespace
ygo
{
namespace
ygo
{
...
...
gframe/image_manager.h
View file @
e1ac1164
...
@@ -5,6 +5,7 @@
...
@@ -5,6 +5,7 @@
#include "data_manager.h"
#include "data_manager.h"
#include <unordered_map>
#include <unordered_map>
#include <queue>
#include <queue>
#include <mutex>
namespace
ygo
{
namespace
ygo
{
...
...
gframe/menu_handler.cpp
View file @
e1ac1164
#include "config.h"
#include "config.h"
#include "menu_handler.h"
#include "menu_handler.h"
#include "myfilesystem.h"
#include "netserver.h"
#include "netserver.h"
#include "duelclient.h"
#include "duelclient.h"
#include "deck_manager.h"
#include "deck_manager.h"
...
@@ -145,20 +146,20 @@ bool MenuHandler::OnEvent(const irr::SEvent& event) {
...
@@ -145,20 +146,20 @@ bool MenuHandler::OnEvent(const irr::SEvent& event) {
break
;
break
;
}
}
case
BUTTON_HP_KICK
:
{
case
BUTTON_HP_KICK
:
{
int
i
d
=
0
;
int
i
ndex
=
0
;
while
(
i
d
<
4
)
{
while
(
i
ndex
<
4
)
{
if
(
mainGame
->
btnHostPrepKick
[
i
d
]
==
caller
)
if
(
mainGame
->
btnHostPrepKick
[
i
ndex
]
==
caller
)
break
;
break
;
id
++
;
++
index
;
}
}
CTOS_Kick
csk
;
CTOS_Kick
csk
;
csk
.
pos
=
i
d
;
csk
.
pos
=
i
ndex
;
DuelClient
::
SendPacketToServer
(
CTOS_HS_KICK
,
csk
);
DuelClient
::
SendPacketToServer
(
CTOS_HS_KICK
,
csk
);
break
;
break
;
}
}
case
BUTTON_HP_READY
:
{
case
BUTTON_HP_READY
:
{
if
(
mainGame
->
cbCategorySelect
->
getSelected
()
==
-
1
||
mainGame
->
cbDeckSelect
->
getSelected
()
==
-
1
||
if
(
mainGame
->
cbCategorySelect
->
getSelected
()
==
-
1
||
mainGame
->
cbDeckSelect
->
getSelected
()
==
-
1
||
!
deckManager
.
LoadDeck
(
mainGame
->
cbCategorySelect
,
mainGame
->
cbDeckSelect
))
{
!
deckManager
.
Load
Current
Deck
(
mainGame
->
cbCategorySelect
,
mainGame
->
cbDeckSelect
))
{
mainGame
->
gMutex
.
lock
();
mainGame
->
gMutex
.
lock
();
soundManager
.
PlaySoundEffect
(
SOUND_INFO
);
soundManager
.
PlaySoundEffect
(
SOUND_INFO
);
mainGame
->
env
->
addMessageBox
(
L""
,
dataManager
.
GetSysString
(
1406
));
mainGame
->
env
->
addMessageBox
(
L""
,
dataManager
.
GetSysString
(
1406
));
...
@@ -236,7 +237,7 @@ bool MenuHandler::OnEvent(const irr::SEvent& event) {
...
@@ -236,7 +237,7 @@ bool MenuHandler::OnEvent(const irr::SEvent& event) {
mainGame
->
dField
.
Clear
();
mainGame
->
dField
.
Clear
();
mainGame
->
HideElement
(
mainGame
->
wReplay
);
mainGame
->
HideElement
(
mainGame
->
wReplay
);
mainGame
->
device
->
setEventReceiver
(
&
mainGame
->
dField
);
mainGame
->
device
->
setEventReceiver
(
&
mainGame
->
dField
);
unsigned
int
start_turn
=
_wtoi
(
mainGame
->
ebRepStartTurn
->
getText
()
);
unsigned
int
start_turn
=
wcstol
(
mainGame
->
ebRepStartTurn
->
getText
(),
nullptr
,
10
);
if
(
start_turn
==
1
)
if
(
start_turn
==
1
)
start_turn
=
0
;
start_turn
=
0
;
ReplayMode
::
StartReplay
(
start_turn
);
ReplayMode
::
StartReplay
(
start_turn
);
...
@@ -278,40 +279,40 @@ bool MenuHandler::OnEvent(const irr::SEvent& event) {
...
@@ -278,40 +279,40 @@ bool MenuHandler::OnEvent(const irr::SEvent& event) {
if
(
mainGame
->
lstReplayList
->
getSelected
()
==
-
1
)
if
(
mainGame
->
lstReplayList
->
getSelected
()
==
-
1
)
break
;
break
;
Replay
replay
;
Replay
replay
;
wchar_t
ex_filename
[
256
];
wchar_t
ex_filename
[
256
]
{}
;
wchar_t
namebuf
[
4
][
20
];
wchar_t
namebuf
[
4
][
20
]
{}
;
wchar_t
filename
[
256
];
wchar_t
filename
[
256
]
{}
;
myswprintf
(
ex_filename
,
L"%ls"
,
mainGame
->
lstReplayList
->
getListItem
(
mainGame
->
lstReplayList
->
getSelected
()));
myswprintf
(
ex_filename
,
L"%ls"
,
mainGame
->
lstReplayList
->
getListItem
(
mainGame
->
lstReplayList
->
getSelected
()));
if
(
!
replay
.
OpenReplay
(
ex_filename
))
if
(
!
replay
.
OpenReplay
(
ex_filename
))
break
;
break
;
const
ReplayHeader
&
rh
=
replay
.
pheader
;
const
ReplayHeader
&
rh
=
replay
.
pheader
;
if
(
rh
.
flag
&
REPLAY_SINGLE_MODE
)
if
(
rh
.
flag
&
REPLAY_SINGLE_MODE
)
break
;
break
;
int
max
=
(
rh
.
flag
&
REPLAY_TAG
)
?
4
:
2
;
int
player_count
=
(
rh
.
flag
&
REPLAY_TAG
)
?
4
:
2
;
//player name
//player name
for
(
int
i
=
0
;
i
<
max
;
++
i
)
for
(
int
i
=
0
;
i
<
player_count
;
++
i
)
replay
.
ReadName
(
namebuf
[
i
]);
replay
.
ReadName
(
namebuf
[
i
]);
//skip pre infos
//skip pre infos
for
(
int
i
=
0
;
i
<
4
;
++
i
)
for
(
int
i
=
0
;
i
<
4
;
++
i
)
replay
.
ReadInt32
();
replay
.
ReadInt32
();
//deck
//deck
for
(
int
i
=
0
;
i
<
max
;
++
i
)
{
std
::
vector
<
int
>
deckbuf
;
for
(
int
i
=
0
;
i
<
player_count
;
++
i
)
{
deckbuf
.
clear
();
int
main
=
replay
.
ReadInt32
();
int
main
=
replay
.
ReadInt32
();
Deck
tmp_deck
;
deckbuf
.
push_back
(
main
)
;
for
(
int
j
=
0
;
j
<
main
;
++
j
)
{
for
(
int
j
=
0
;
j
<
main
;
++
j
)
{
auto
card
=
dataManager
.
GetCodePointer
(
replay
.
ReadInt32
());
deckbuf
.
push_back
(
replay
.
ReadInt32
());
if
(
card
!=
dataManager
.
datas_end
)
tmp_deck
.
main
.
push_back
(
card
);
}
}
int
extra
=
replay
.
ReadInt32
();
int
extra
=
replay
.
ReadInt32
();
deckbuf
.
push_back
(
extra
);
for
(
int
j
=
0
;
j
<
extra
;
++
j
)
{
for
(
int
j
=
0
;
j
<
extra
;
++
j
)
{
auto
card
=
dataManager
.
GetCodePointer
(
replay
.
ReadInt32
());
deckbuf
.
push_back
(
replay
.
ReadInt32
());
if
(
card
!=
dataManager
.
datas_end
)
tmp_deck
.
extra
.
push_back
(
card
);
}
}
deckbuf
.
push_back
(
0
);
FileSystem
::
SafeFileName
(
namebuf
[
i
]);
FileSystem
::
SafeFileName
(
namebuf
[
i
]);
myswprintf
(
filename
,
L"deck/%ls-%d %ls.ydk"
,
ex_filename
,
i
+
1
,
namebuf
[
i
]);
myswprintf
(
filename
,
L"deck/%ls-%d %ls.ydk"
,
ex_filename
,
i
+
1
,
namebuf
[
i
]);
deckManager
.
SaveDeck
(
tmp_deck
,
filename
);
deckManager
.
SaveDeck
Buffer
(
deckbuf
.
data
()
,
filename
);
}
}
mainGame
->
stACMessage
->
setText
(
dataManager
.
GetSysString
(
1335
));
mainGame
->
stACMessage
->
setText
(
dataManager
.
GetSysString
(
1335
));
mainGame
->
PopupElement
(
mainGame
->
wACMessage
,
20
);
mainGame
->
PopupElement
(
mainGame
->
wACMessage
,
20
);
...
@@ -409,7 +410,7 @@ bool MenuHandler::OnEvent(const irr::SEvent& event) {
...
@@ -409,7 +410,7 @@ bool MenuHandler::OnEvent(const irr::SEvent& event) {
}
}
case
BUTTON_DECK_EDIT
:
{
case
BUTTON_DECK_EDIT
:
{
mainGame
->
RefreshCategoryDeck
(
mainGame
->
cbDBCategory
,
mainGame
->
cbDBDecks
);
mainGame
->
RefreshCategoryDeck
(
mainGame
->
cbDBCategory
,
mainGame
->
cbDBDecks
);
if
(
open_file
&&
deckManager
.
LoadDeck
(
open_file_name
))
{
if
(
open_file
&&
deckManager
.
Load
Current
Deck
(
open_file_name
))
{
#ifdef WIN32
#ifdef WIN32
wchar_t
*
dash
=
wcsrchr
(
open_file_name
,
L'\\'
);
wchar_t
*
dash
=
wcsrchr
(
open_file_name
,
L'\\'
);
#else
#else
...
@@ -447,7 +448,7 @@ bool MenuHandler::OnEvent(const irr::SEvent& event) {
...
@@ -447,7 +448,7 @@ bool MenuHandler::OnEvent(const irr::SEvent& event) {
}
}
open_file
=
false
;
open_file
=
false
;
}
else
if
(
mainGame
->
cbDBCategory
->
getSelected
()
!=
-
1
&&
mainGame
->
cbDBDecks
->
getSelected
()
!=
-
1
)
{
}
else
if
(
mainGame
->
cbDBCategory
->
getSelected
()
!=
-
1
&&
mainGame
->
cbDBDecks
->
getSelected
()
!=
-
1
)
{
deckManager
.
LoadDeck
(
mainGame
->
cbDBCategory
,
mainGame
->
cbDBDecks
);
deckManager
.
Load
Current
Deck
(
mainGame
->
cbDBCategory
,
mainGame
->
cbDBDecks
);
mainGame
->
ebDeckname
->
setText
(
L""
);
mainGame
->
ebDeckname
->
setText
(
L""
);
}
}
mainGame
->
HideElement
(
mainGame
->
wMainMenu
);
mainGame
->
HideElement
(
mainGame
->
wMainMenu
);
...
@@ -534,7 +535,7 @@ bool MenuHandler::OnEvent(const irr::SEvent& event) {
...
@@ -534,7 +535,7 @@ bool MenuHandler::OnEvent(const irr::SEvent& event) {
tm
*
st
=
localtime
(
&
curtime
);
tm
*
st
=
localtime
(
&
curtime
);
wcsftime
(
infobuf
,
256
,
L"%Y/%m/%d %H:%M:%S
\n
"
,
st
);
wcsftime
(
infobuf
,
256
,
L"%Y/%m/%d %H:%M:%S
\n
"
,
st
);
repinfo
.
append
(
infobuf
);
repinfo
.
append
(
infobuf
);
wchar_t
namebuf
[
4
][
20
];
wchar_t
namebuf
[
4
][
20
]
{}
;
ReplayMode
::
cur_replay
.
ReadName
(
namebuf
[
0
]);
ReplayMode
::
cur_replay
.
ReadName
(
namebuf
[
0
]);
ReplayMode
::
cur_replay
.
ReadName
(
namebuf
[
1
]);
ReplayMode
::
cur_replay
.
ReadName
(
namebuf
[
1
]);
if
(
ReplayMode
::
cur_replay
.
pheader
.
flag
&
REPLAY_TAG
)
{
if
(
ReplayMode
::
cur_replay
.
pheader
.
flag
&
REPLAY_TAG
)
{
...
@@ -574,9 +575,9 @@ bool MenuHandler::OnEvent(const irr::SEvent& event) {
...
@@ -574,9 +575,9 @@ bool MenuHandler::OnEvent(const irr::SEvent& event) {
std
::
wstring
message
=
L""
;
std
::
wstring
message
=
L""
;
bool
in_message
=
false
;
bool
in_message
=
false
;
while
(
fgets
(
linebuf
,
1024
,
fp
))
{
while
(
fgets
(
linebuf
,
1024
,
fp
))
{
if
(
!
strncmp
(
linebuf
,
"--[[message"
,
11
))
{
if
(
!
st
d
::
st
rncmp
(
linebuf
,
"--[[message"
,
11
))
{
size_t
len
=
strlen
(
linebuf
);
size_t
len
=
st
d
::
st
rlen
(
linebuf
);
char
*
msgend
=
strrchr
(
linebuf
,
']'
);
char
*
msgend
=
st
d
::
st
rrchr
(
linebuf
,
']'
);
if
(
len
<=
13
)
{
if
(
len
<=
13
)
{
in_message
=
true
;
in_message
=
true
;
continue
;
continue
;
...
@@ -587,7 +588,7 @@ bool MenuHandler::OnEvent(const irr::SEvent& event) {
...
@@ -587,7 +588,7 @@ bool MenuHandler::OnEvent(const irr::SEvent& event) {
break
;
break
;
}
}
}
}
if
(
!
strncmp
(
linebuf
,
"]]"
,
2
))
{
if
(
!
st
d
::
st
rncmp
(
linebuf
,
"]]"
,
2
))
{
in_message
=
false
;
in_message
=
false
;
break
;
break
;
}
}
...
@@ -620,7 +621,7 @@ bool MenuHandler::OnEvent(const irr::SEvent& event) {
...
@@ -620,7 +621,7 @@ bool MenuHandler::OnEvent(const irr::SEvent& event) {
mainGame
->
env
->
setFocus
(
mainGame
->
wHostPrepare
);
mainGame
->
env
->
setFocus
(
mainGame
->
wHostPrepare
);
if
(
static_cast
<
irr
::
gui
::
IGUICheckBox
*>
(
caller
)
->
isChecked
())
{
if
(
static_cast
<
irr
::
gui
::
IGUICheckBox
*>
(
caller
)
->
isChecked
())
{
if
(
mainGame
->
cbCategorySelect
->
getSelected
()
==
-
1
||
mainGame
->
cbDeckSelect
->
getSelected
()
==
-
1
||
if
(
mainGame
->
cbCategorySelect
->
getSelected
()
==
-
1
||
mainGame
->
cbDeckSelect
->
getSelected
()
==
-
1
||
!
deckManager
.
LoadDeck
(
mainGame
->
cbCategorySelect
,
mainGame
->
cbDeckSelect
))
{
!
deckManager
.
Load
Current
Deck
(
mainGame
->
cbCategorySelect
,
mainGame
->
cbDeckSelect
))
{
mainGame
->
gMutex
.
lock
();
mainGame
->
gMutex
.
lock
();
static_cast
<
irr
::
gui
::
IGUICheckBox
*>
(
caller
)
->
setChecked
(
false
);
static_cast
<
irr
::
gui
::
IGUICheckBox
*>
(
caller
)
->
setChecked
(
false
);
soundManager
.
PlaySoundEffect
(
SOUND_INFO
);
soundManager
.
PlaySoundEffect
(
SOUND_INFO
);
...
...
gframe/netserver.cpp
View file @
e1ac1164
#include "netserver.h"
#include "netserver.h"
#include "single_duel.h"
#include "single_duel.h"
#include "tag_duel.h"
#include "tag_duel.h"
#include <thread>
namespace
ygo
{
namespace
ygo
{
std
::
unordered_map
<
bufferevent
*
,
DuelPlayer
>
NetServer
::
users
;
std
::
unordered_map
<
bufferevent
*
,
DuelPlayer
>
NetServer
::
users
;
...
@@ -19,7 +20,7 @@ bool NetServer::StartServer(unsigned short port) {
...
@@ -19,7 +20,7 @@ bool NetServer::StartServer(unsigned short port) {
if
(
!
net_evbase
)
if
(
!
net_evbase
)
return
false
;
return
false
;
sockaddr_in
sin
;
sockaddr_in
sin
;
memset
(
&
sin
,
0
,
sizeof
(
sin
)
);
std
::
memset
(
&
sin
,
0
,
sizeof
sin
);
server_port
=
port
;
server_port
=
port
;
sin
.
sin_family
=
AF_INET
;
sin
.
sin_family
=
AF_INET
;
sin
.
sin_addr
.
s_addr
=
htonl
(
INADDR_ANY
);
sin
.
sin_addr
.
s_addr
=
htonl
(
INADDR_ANY
);
...
@@ -43,7 +44,7 @@ bool NetServer::StartBroadcast() {
...
@@ -43,7 +44,7 @@ bool NetServer::StartBroadcast() {
setsockopt
(
udp
,
SOL_SOCKET
,
SO_BROADCAST
,
(
const
char
*
)
&
opt
,
sizeof
opt
);
setsockopt
(
udp
,
SOL_SOCKET
,
SO_BROADCAST
,
(
const
char
*
)
&
opt
,
sizeof
opt
);
setsockopt
(
udp
,
SOL_SOCKET
,
SO_REUSEADDR
,
(
const
char
*
)
&
opt
,
sizeof
opt
);
setsockopt
(
udp
,
SOL_SOCKET
,
SO_REUSEADDR
,
(
const
char
*
)
&
opt
,
sizeof
opt
);
sockaddr_in
addr
;
sockaddr_in
addr
;
memset
(
&
addr
,
0
,
sizeof
(
addr
)
);
std
::
memset
(
&
addr
,
0
,
sizeof
addr
);
addr
.
sin_family
=
AF_INET
;
addr
.
sin_family
=
AF_INET
;
addr
.
sin_port
=
htons
(
7920
);
addr
.
sin_port
=
htons
(
7920
);
addr
.
sin_addr
.
s_addr
=
0
;
addr
.
sin_addr
.
s_addr
=
0
;
...
@@ -122,7 +123,7 @@ void NetServer::ServerAcceptError(evconnlistener* listener, void* ctx) {
...
@@ -122,7 +123,7 @@ void NetServer::ServerAcceptError(evconnlistener* listener, void* ctx) {
void
NetServer
::
ServerEchoRead
(
bufferevent
*
bev
,
void
*
ctx
)
{
void
NetServer
::
ServerEchoRead
(
bufferevent
*
bev
,
void
*
ctx
)
{
evbuffer
*
input
=
bufferevent_get_input
(
bev
);
evbuffer
*
input
=
bufferevent_get_input
(
bev
);
int
len
=
evbuffer_get_length
(
input
);
int
len
=
evbuffer_get_length
(
input
);
unsigned
char
*
net_server_read
=
new
unsigned
char
[
std
::
min
(
len
,
SIZE_NETWORK_BUFFER
)
];
unsigned
char
*
net_server_read
=
new
unsigned
char
[
SIZE_NETWORK_BUFFER
];
unsigned
short
packet_len
;
unsigned
short
packet_len
;
while
(
len
>=
2
)
{
while
(
len
>=
2
)
{
evbuffer_copyout
(
input
,
&
packet_len
,
sizeof
packet_len
);
evbuffer_copyout
(
input
,
&
packet_len
,
sizeof
packet_len
);
...
...
gframe/network.h
View file @
e1ac1164
...
@@ -253,7 +253,7 @@ public:
...
@@ -253,7 +253,7 @@ public:
#define NETPLAYER_TYPE_OBSERVER 7
#define NETPLAYER_TYPE_OBSERVER 7
#define CTOS_RESPONSE 0x1 // byte array
#define CTOS_RESPONSE 0x1 // byte array
#define CTOS_UPDATE_DECK 0x2 //
int32_t array
#define CTOS_UPDATE_DECK 0x2 //
mainc, sidec, int32_t[mainc + sidec]
#define CTOS_HAND_RESULT 0x3 // CTOS_HandResult
#define CTOS_HAND_RESULT 0x3 // CTOS_HandResult
#define CTOS_TP_RESULT 0x4 // CTOS_TPResult
#define CTOS_TP_RESULT 0x4 // CTOS_TPResult
#define CTOS_PLAYER_INFO 0x10 // CTOS_PlayerInfo
#define CTOS_PLAYER_INFO 0x10 // CTOS_PlayerInfo
...
...
gframe/replay.cpp
View file @
e1ac1164
#include "replay.h"
#include "replay.h"
#include "myfilesystem.h"
#include "lzma/LzmaLib.h"
#include "lzma/LzmaLib.h"
namespace
ygo
{
namespace
ygo
{
...
@@ -27,7 +28,7 @@ void Replay::BeginRecord() {
...
@@ -27,7 +28,7 @@ void Replay::BeginRecord() {
if
(
!
fp
)
if
(
!
fp
)
return
;
return
;
#endif
#endif
p
data
=
replay_data
;
p
write
=
replay_data
;
replay_size
=
0
;
replay_size
=
0
;
comp_size
=
0
;
comp_size
=
0
;
is_replaying
=
false
;
is_replaying
=
false
;
...
@@ -46,10 +47,10 @@ void Replay::WriteHeader(ReplayHeader& header) {
...
@@ -46,10 +47,10 @@ void Replay::WriteHeader(ReplayHeader& header) {
void
Replay
::
WriteData
(
const
void
*
data
,
int
length
,
bool
flush
)
{
void
Replay
::
WriteData
(
const
void
*
data
,
int
length
,
bool
flush
)
{
if
(
!
is_recording
)
if
(
!
is_recording
)
return
;
return
;
if
(
length
<
0
||
(
pdata
-
replay_data
)
+
length
>
MAX_REPLAY_SIZE
)
if
(
length
<
0
||
(
int
)(
pwrite
-
replay_data
)
+
length
>
MAX_REPLAY_SIZE
)
return
;
return
;
std
::
memcpy
(
p
data
,
data
,
length
);
std
::
memcpy
(
p
write
,
data
,
length
);
p
data
+=
length
;
p
write
+=
length
;
#ifdef _WIN32
#ifdef _WIN32
DWORD
size
;
DWORD
size
;
WriteFile
(
recording_fp
,
data
,
length
,
&
size
,
NULL
);
WriteFile
(
recording_fp
,
data
,
length
,
&
size
,
NULL
);
...
@@ -60,49 +61,13 @@ void Replay::WriteData(const void* data, int length, bool flush) {
...
@@ -60,49 +61,13 @@ void Replay::WriteData(const void* data, int length, bool flush) {
#endif
#endif
}
}
void
Replay
::
WriteInt32
(
int
data
,
bool
flush
)
{
void
Replay
::
WriteInt32
(
int
data
,
bool
flush
)
{
if
(
!
is_recording
)
WriteData
(
&
data
,
sizeof
data
,
flush
);
return
;
if
((
pdata
-
replay_data
)
+
4
>
MAX_REPLAY_SIZE
)
return
;
BufferIO
::
WriteInt32
(
pdata
,
data
);
#ifdef _WIN32
DWORD
size
;
WriteFile
(
recording_fp
,
&
data
,
sizeof
(
int
),
&
size
,
NULL
);
#else
fwrite
(
&
data
,
sizeof
(
int
),
1
,
fp
);
if
(
flush
)
fflush
(
fp
);
#endif
}
}
void
Replay
::
WriteInt16
(
short
data
,
bool
flush
)
{
void
Replay
::
WriteInt16
(
short
data
,
bool
flush
)
{
if
(
!
is_recording
)
WriteData
(
&
data
,
sizeof
data
,
flush
);
return
;
if
((
pdata
-
replay_data
)
+
2
>
MAX_REPLAY_SIZE
)
return
;
BufferIO
::
WriteInt16
(
pdata
,
data
);
#ifdef _WIN32
DWORD
size
;
WriteFile
(
recording_fp
,
&
data
,
sizeof
(
short
),
&
size
,
NULL
);
#else
fwrite
(
&
data
,
sizeof
(
short
),
1
,
fp
);
if
(
flush
)
fflush
(
fp
);
#endif
}
}
void
Replay
::
WriteInt8
(
char
data
,
bool
flush
)
{
void
Replay
::
WriteInt8
(
char
data
,
bool
flush
)
{
if
(
!
is_recording
)
WriteData
(
&
data
,
sizeof
data
,
flush
);
return
;
if
((
pdata
-
replay_data
)
+
1
>
MAX_REPLAY_SIZE
)
return
;
BufferIO
::
WriteInt8
(
pdata
,
data
);
#ifdef _WIN32
DWORD
size
;
WriteFile
(
recording_fp
,
&
data
,
sizeof
(
char
),
&
size
,
NULL
);
#else
fwrite
(
&
data
,
sizeof
(
char
),
1
,
fp
);
if
(
flush
)
fflush
(
fp
);
#endif
}
}
void
Replay
::
Flush
()
{
void
Replay
::
Flush
()
{
if
(
!
is_recording
)
if
(
!
is_recording
)
...
@@ -120,10 +85,7 @@ void Replay::EndRecord() {
...
@@ -120,10 +85,7 @@ void Replay::EndRecord() {
#else
#else
fclose
(
fp
);
fclose
(
fp
);
#endif
#endif
if
(
pdata
-
replay_data
>
0
&&
pdata
-
replay_data
<=
MAX_REPLAY_SIZE
)
replay_size
=
pwrite
-
replay_data
;
replay_size
=
pdata
-
replay_data
;
else
replay_size
=
0
;
pheader
.
datasize
=
replay_size
;
pheader
.
datasize
=
replay_size
;
pheader
.
flag
|=
REPLAY_COMPRESSED
;
pheader
.
flag
|=
REPLAY_COMPRESSED
;
size_t
propsize
=
5
;
size_t
propsize
=
5
;
...
@@ -252,45 +214,53 @@ bool Replay::RenameReplay(const wchar_t* oldname, const wchar_t* newname) {
...
@@ -252,45 +214,53 @@ bool Replay::RenameReplay(const wchar_t* oldname, const wchar_t* newname) {
#endif
#endif
}
}
bool
Replay
::
ReadNextResponse
(
unsigned
char
resp
[])
{
bool
Replay
::
ReadNextResponse
(
unsigned
char
resp
[])
{
if
(
pdata
-
replay_data
>=
(
int
)
replay_size
)
unsigned
char
len
{};
if
(
!
ReadData
(
&
len
,
sizeof
len
))
return
false
;
if
(
len
>
SIZE_RETURN_VALUE
)
{
is_replaying
=
false
;
return
false
;
return
false
;
int
len
=
*
pdata
++
;
}
if
(
len
>
SIZE_RETURN_VALUE
)
if
(
!
ReadData
(
resp
,
len
)
)
return
false
;
return
false
;
std
::
memcpy
(
resp
,
pdata
,
len
);
pdata
+=
len
;
return
true
;
return
true
;
}
}
void
Replay
::
ReadName
(
wchar_t
*
data
)
{
void
Replay
::
ReadName
(
wchar_t
*
data
)
{
if
(
!
is_replaying
)
uint16_t
buffer
[
20
]{};
if
(
!
ReadData
(
buffer
,
sizeof
buffer
))
{
data
[
0
]
=
0
;
return
;
return
;
unsigned
short
buffer
[
20
];
}
ReadData
(
buffer
,
40
);
BufferIO
::
CopyWStr
(
buffer
,
data
,
20
);
BufferIO
::
CopyWStr
(
buffer
,
data
,
20
);
}
}
void
Replay
::
ReadData
(
void
*
data
,
int
length
)
{
bool
Replay
::
ReadData
(
void
*
data
,
int
length
)
{
if
(
!
is_replaying
)
if
(
!
is_replaying
)
return
;
return
false
;
if
(
length
<
0
)
return
false
;
if
((
int
)(
pdata
-
replay_data
)
+
length
>
(
int
)
replay_size
)
{
is_replaying
=
false
;
return
false
;
}
std
::
memcpy
(
data
,
pdata
,
length
);
std
::
memcpy
(
data
,
pdata
,
length
);
pdata
+=
length
;
pdata
+=
length
;
return
true
;
}
}
int
Replay
::
ReadInt32
()
{
template
<
typename
T
>
if
(
!
is_replaying
)
T
Replay
::
ReadValue
()
{
T
ret
{};
if
(
!
ReadData
(
&
ret
,
sizeof
ret
))
return
-
1
;
return
-
1
;
int
ret
=
BufferIO
::
ReadInt32
(
pdata
);
return
ret
;
return
ret
;
}
}
int
Replay
::
ReadInt32
()
{
return
ReadValue
<
int32_t
>
();
}
short
Replay
::
ReadInt16
()
{
short
Replay
::
ReadInt16
()
{
if
(
!
is_replaying
)
return
ReadValue
<
int16_t
>
();
return
-
1
;
short
ret
=
BufferIO
::
ReadInt16
(
pdata
);
return
ret
;
}
}
char
Replay
::
ReadInt8
()
{
char
Replay
::
ReadInt8
()
{
if
(
!
is_replaying
)
return
ReadValue
<
char
>
();
return
-
1
;
char
ret
=
BufferIO
::
ReadInt8
(
pdata
);
return
ret
;
}
}
void
Replay
::
Rewind
()
{
void
Replay
::
Rewind
()
{
pdata
=
replay_data
;
pdata
=
replay_data
;
...
...
gframe/replay.h
View file @
e1ac1164
...
@@ -50,7 +50,9 @@ public:
...
@@ -50,7 +50,9 @@ public:
bool
ReadNextResponse
(
unsigned
char
resp
[]);
bool
ReadNextResponse
(
unsigned
char
resp
[]);
void
ReadName
(
wchar_t
*
data
);
void
ReadName
(
wchar_t
*
data
);
//void ReadHeader(ReplayHeader& header);
//void ReadHeader(ReplayHeader& header);
void
ReadData
(
void
*
data
,
int
length
);
bool
ReadData
(
void
*
data
,
int
length
);
template
<
typename
T
>
T
ReadValue
();
int
ReadInt32
();
int
ReadInt32
();
short
ReadInt16
();
short
ReadInt16
();
char
ReadInt8
();
char
ReadInt8
();
...
@@ -62,13 +64,14 @@ public:
...
@@ -62,13 +64,14 @@ public:
#endif
#endif
ReplayHeader
pheader
;
ReplayHeader
pheader
;
unsigned
char
*
replay_data
;
unsigned
char
*
comp_data
;
unsigned
char
*
comp_data
;
size_t
replay_size
{};
size_t
comp_size
{};
size_t
comp_size
{};
private:
private:
unsigned
char
*
pdata
{
nullptr
};
unsigned
char
*
replay_data
;
size_t
replay_size
{};
unsigned
char
*
pwrite
{};
unsigned
char
*
pdata
{};
bool
is_recording
{};
bool
is_recording
{};
bool
is_replaying
{};
bool
is_replaying
{};
};
};
...
...
gframe/replay_mode.cpp
View file @
e1ac1164
...
@@ -3,6 +3,7 @@
...
@@ -3,6 +3,7 @@
#include "game.h"
#include "game.h"
#include "../ocgcore/common.h"
#include "../ocgcore/common.h"
#include "../ocgcore/mtrandom.h"
#include "../ocgcore/mtrandom.h"
#include <thread>
namespace
ygo
{
namespace
ygo
{
...
...
gframe/single_duel.cpp
View file @
e1ac1164
...
@@ -444,7 +444,7 @@ void SingleDuel::TPResult(DuelPlayer* dp, unsigned char tp) {
...
@@ -444,7 +444,7 @@ void SingleDuel::TPResult(DuelPlayer* dp, unsigned char tp) {
set_player_info
(
pduel
,
1
,
host_info
.
start_lp
,
host_info
.
start_hand
,
host_info
.
draw_count
);
set_player_info
(
pduel
,
1
,
host_info
.
start_lp
,
host_info
.
start_hand
,
host_info
.
draw_count
);
preload_script
(
pduel
,
"./script/special.lua"
,
0
);
preload_script
(
pduel
,
"./script/special.lua"
,
0
);
preload_script
(
pduel
,
"./script/init.lua"
,
0
);
preload_script
(
pduel
,
"./script/init.lua"
,
0
);
int
opt
=
(
int
)
host_info
.
duel_rule
<<
16
;
unsigned
int
opt
=
(
unsigned
int
)
host_info
.
duel_rule
<<
16
;
if
(
host_info
.
no_shuffle_deck
)
if
(
host_info
.
no_shuffle_deck
)
opt
|=
DUEL_PSEUDO_SHUFFLE
;
opt
|=
DUEL_PSEUDO_SHUFFLE
;
last_replay
.
WriteInt32
(
host_info
.
start_lp
,
false
);
last_replay
.
WriteInt32
(
host_info
.
start_lp
,
false
);
...
@@ -1514,7 +1514,7 @@ void SingleDuel::RefreshMzone(int player, int flag, int use_cache) {
...
@@ -1514,7 +1514,7 @@ void SingleDuel::RefreshMzone(int player, int flag, int use_cache) {
continue
;
continue
;
auto
position
=
GetPosition
(
qbuf
,
8
);
auto
position
=
GetPosition
(
qbuf
,
8
);
if
(
position
&
POS_FACEDOWN
)
if
(
position
&
POS_FACEDOWN
)
memset
(
qbuf
,
0
,
clen
-
4
);
std
::
memset
(
qbuf
,
0
,
clen
-
4
);
qbuf
+=
clen
-
4
;
qbuf
+=
clen
-
4
;
}
}
NetServer
::
SendBufferToPlayer
(
players
[
1
-
player
],
STOC_GAME_MSG
,
query_buffer
.
data
(),
len
+
3
);
NetServer
::
SendBufferToPlayer
(
players
[
1
-
player
],
STOC_GAME_MSG
,
query_buffer
.
data
(),
len
+
3
);
...
@@ -1535,7 +1535,7 @@ void SingleDuel::RefreshSzone(int player, int flag, int use_cache) {
...
@@ -1535,7 +1535,7 @@ void SingleDuel::RefreshSzone(int player, int flag, int use_cache) {
continue
;
continue
;
auto
position
=
GetPosition
(
qbuf
,
8
);
auto
position
=
GetPosition
(
qbuf
,
8
);
if
(
position
&
POS_FACEDOWN
)
if
(
position
&
POS_FACEDOWN
)
memset
(
qbuf
,
0
,
clen
-
4
);
std
::
memset
(
qbuf
,
0
,
clen
-
4
);
qbuf
+=
clen
-
4
;
qbuf
+=
clen
-
4
;
}
}
NetServer
::
SendBufferToPlayer
(
players
[
1
-
player
],
STOC_GAME_MSG
,
query_buffer
.
data
(),
len
+
3
);
NetServer
::
SendBufferToPlayer
(
players
[
1
-
player
],
STOC_GAME_MSG
,
query_buffer
.
data
(),
len
+
3
);
...
@@ -1556,7 +1556,7 @@ void SingleDuel::RefreshHand(int player, int flag, int use_cache) {
...
@@ -1556,7 +1556,7 @@ void SingleDuel::RefreshHand(int player, int flag, int use_cache) {
continue
;
continue
;
auto
position
=
GetPosition
(
qbuf
,
8
);
auto
position
=
GetPosition
(
qbuf
,
8
);
if
(
!
(
position
&
POS_FACEUP
))
if
(
!
(
position
&
POS_FACEUP
))
memset
(
qbuf
,
0
,
slen
-
4
);
std
::
memset
(
qbuf
,
0
,
slen
-
4
);
qbuf
+=
slen
-
4
;
qbuf
+=
slen
-
4
;
}
}
NetServer
::
SendBufferToPlayer
(
players
[
1
-
player
],
STOC_GAME_MSG
,
query_buffer
.
data
(),
len
+
3
);
NetServer
::
SendBufferToPlayer
(
players
[
1
-
player
],
STOC_GAME_MSG
,
query_buffer
.
data
(),
len
+
3
);
...
@@ -1597,7 +1597,7 @@ void SingleDuel::RefreshSingle(int player, int location, int sequence, int flag)
...
@@ -1597,7 +1597,7 @@ void SingleDuel::RefreshSingle(int player, int location, int sequence, int flag)
if
(
position
&
POS_FACEDOWN
)
{
if
(
position
&
POS_FACEDOWN
)
{
BufferIO
::
WriteInt32
(
qbuf
,
QUERY_CODE
);
BufferIO
::
WriteInt32
(
qbuf
,
QUERY_CODE
);
BufferIO
::
WriteInt32
(
qbuf
,
0
);
BufferIO
::
WriteInt32
(
qbuf
,
0
);
memset
(
qbuf
,
0
,
clen
-
12
);
std
::
memset
(
qbuf
,
0
,
clen
-
12
);
}
}
NetServer
::
SendBufferToPlayer
(
players
[
1
-
player
],
STOC_GAME_MSG
,
query_buffer
,
len
+
4
);
NetServer
::
SendBufferToPlayer
(
players
[
1
-
player
],
STOC_GAME_MSG
,
query_buffer
,
len
+
4
);
for
(
auto
pit
=
observers
.
begin
();
pit
!=
observers
.
end
();
++
pit
)
for
(
auto
pit
=
observers
.
begin
();
pit
!=
observers
.
end
();
++
pit
)
...
...
gframe/single_mode.cpp
View file @
e1ac1164
...
@@ -3,6 +3,7 @@
...
@@ -3,6 +3,7 @@
#include "game.h"
#include "game.h"
#include "../ocgcore/common.h"
#include "../ocgcore/common.h"
#include "../ocgcore/mtrandom.h"
#include "../ocgcore/mtrandom.h"
#include <thread>
namespace
ygo
{
namespace
ygo
{
...
...
gframe/sound_manager.cpp
View file @
e1ac1164
#include "sound_manager.h"
#include "sound_manager.h"
#include "myfilesystem.h"
#ifdef YGOPRO_USE_IRRKLANG
#ifdef YGOPRO_USE_IRRKLANG
#include "../ikpmp3/ikpMP3.h"
#include "../ikpmp3/ikpMP3.h"
#endif
#endif
...
...
gframe/tag_duel.cpp
View file @
e1ac1164
...
@@ -421,7 +421,7 @@ void TagDuel::TPResult(DuelPlayer* dp, unsigned char tp) {
...
@@ -421,7 +421,7 @@ void TagDuel::TPResult(DuelPlayer* dp, unsigned char tp) {
set_player_info
(
pduel
,
1
,
host_info
.
start_lp
,
host_info
.
start_hand
,
host_info
.
draw_count
);
set_player_info
(
pduel
,
1
,
host_info
.
start_lp
,
host_info
.
start_hand
,
host_info
.
draw_count
);
preload_script
(
pduel
,
"./script/special.lua"
,
0
);
preload_script
(
pduel
,
"./script/special.lua"
,
0
);
preload_script
(
pduel
,
"./script/init.lua"
,
0
);
preload_script
(
pduel
,
"./script/init.lua"
,
0
);
int
opt
=
(
int
)
host_info
.
duel_rule
<<
16
;
unsigned
int
opt
=
(
unsigned
int
)
host_info
.
duel_rule
<<
16
;
if
(
host_info
.
no_shuffle_deck
)
if
(
host_info
.
no_shuffle_deck
)
opt
|=
DUEL_PSEUDO_SHUFFLE
;
opt
|=
DUEL_PSEUDO_SHUFFLE
;
opt
|=
DUEL_TAG_MODE
;
opt
|=
DUEL_TAG_MODE
;
...
@@ -1640,7 +1640,7 @@ void TagDuel::RefreshMzone(int player, int flag, int use_cache) {
...
@@ -1640,7 +1640,7 @@ void TagDuel::RefreshMzone(int player, int flag, int use_cache) {
continue
;
continue
;
auto
position
=
GetPosition
(
qbuf
,
8
);
auto
position
=
GetPosition
(
qbuf
,
8
);
if
(
position
&
POS_FACEDOWN
)
if
(
position
&
POS_FACEDOWN
)
memset
(
qbuf
,
0
,
clen
-
4
);
std
::
memset
(
qbuf
,
0
,
clen
-
4
);
qbuf
+=
clen
-
4
;
qbuf
+=
clen
-
4
;
}
}
pid
=
2
-
pid
;
pid
=
2
-
pid
;
...
@@ -1665,7 +1665,7 @@ void TagDuel::RefreshSzone(int player, int flag, int use_cache) {
...
@@ -1665,7 +1665,7 @@ void TagDuel::RefreshSzone(int player, int flag, int use_cache) {
continue
;
continue
;
auto
position
=
GetPosition
(
qbuf
,
8
);
auto
position
=
GetPosition
(
qbuf
,
8
);
if
(
position
&
POS_FACEDOWN
)
if
(
position
&
POS_FACEDOWN
)
memset
(
qbuf
,
0
,
clen
-
4
);
std
::
memset
(
qbuf
,
0
,
clen
-
4
);
qbuf
+=
clen
-
4
;
qbuf
+=
clen
-
4
;
}
}
pid
=
2
-
pid
;
pid
=
2
-
pid
;
...
@@ -1688,7 +1688,7 @@ void TagDuel::RefreshHand(int player, int flag, int use_cache) {
...
@@ -1688,7 +1688,7 @@ void TagDuel::RefreshHand(int player, int flag, int use_cache) {
continue
;
continue
;
auto
position
=
GetPosition
(
qbuf
,
8
);
auto
position
=
GetPosition
(
qbuf
,
8
);
if
(
!
(
position
&
POS_FACEUP
))
if
(
!
(
position
&
POS_FACEUP
))
memset
(
qbuf
,
0
,
slen
-
4
);
std
::
memset
(
qbuf
,
0
,
slen
-
4
);
qbuf
+=
slen
-
4
;
qbuf
+=
slen
-
4
;
}
}
for
(
int
i
=
0
;
i
<
4
;
++
i
)
for
(
int
i
=
0
;
i
<
4
;
++
i
)
...
...
strings.conf
View file @
e1ac1164
...
@@ -756,8 +756,11 @@
...
@@ -756,8 +756,11 @@
!
setname
0
x3a
遗式 リチュア
!
setname
0
x3a
遗式 リチュア
!
setname
0
x3b
真红眼 レッドアイズ
!
setname
0
x3b
真红眼 レッドアイズ
!
setname
0
x3c
爬虫妖 レプティレス
!
setname
0
x3c
爬虫妖 レプティレス
!
setname
0
x3d
六武众 六武衆
#setname 0x3d 六武
!
setname
0
x103d
影六武众 影六武衆
!
setname
0
x103d
六武众 六武衆
!
setname
0
x203d
六武式
#setname 0x503d 真六武众 真六武衆
!
setname
0
x903d
影六武众 影六武衆
!
setname
0
x3e
异虫 ワーム
!
setname
0
x3e
异虫 ワーム
!
setname
0
x3f
救世 セイヴァー
!
setname
0
x3f
救世 セイヴァー
!
setname
0
x40
被封印 封印されし
!
setname
0
x40
被封印 封印されし
...
@@ -1239,8 +1242,7 @@
...
@@ -1239,8 +1242,7 @@
!
setname
0
x1b8
鲨 シャーク
!
setname
0
x1b8
鲨 シャーク
!
setname
0
x11b8
鲨龙兽 シャーク・ドレイク
!
setname
0
x11b8
鲨龙兽 シャーク・ドレイク
!
setname
0
x1b9
原石
!
setname
0
x1b9
原石
!
setname
0
x1ba
六武式
!
setname
0
x1ba
金属化 メタル化
!
setname
0
x1bb
金属化 メタル化
!
setname
0
x1bb
魔瞳 モルガナイト
!
setname
0
x1bc
魔瞳
!
setname
0
x1bc
蓟花 アザミナ
!
setname
0
x1bd
蓟花 アザミナ
!
setname
0
x1bd
祝台
!
setname
0
x1be
祝台
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