Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Y
YGOMobile-Cn-Ko-En
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
fallenstardust
YGOMobile-Cn-Ko-En
Commits
9321011f
Commit
9321011f
authored
Jan 24, 2025
by
Dark Zane
Committed by
GitHub
Jan 24, 2025
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'fallenstardust:master' into master
parents
410f9721
7b5541e4
Changes
10
Hide whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
43 additions
and
73 deletions
+43
-73
Classes/gframe/duelclient.cpp
Classes/gframe/duelclient.cpp
+3
-2
Classes/gframe/netserver.cpp
Classes/gframe/netserver.cpp
+3
-3
Classes/gframe/single_duel.cpp
Classes/gframe/single_duel.cpp
+2
-0
Classes/gframe/tag_duel.cpp
Classes/gframe/tag_duel.cpp
+2
-0
mobile/build.gradle
mobile/build.gradle
+1
-1
mobile/src/main/java/cn/garymb/ygomobile/ui/activities/WebActivity.java
...n/java/cn/garymb/ygomobile/ui/activities/WebActivity.java
+7
-3
mobile/src/main/java/cn/garymb/ygomobile/ui/cards/CardDetail.java
...rc/main/java/cn/garymb/ygomobile/ui/cards/CardDetail.java
+23
-30
mobile/src/main/java/cn/garymb/ygomobile/ui/cards/CardSearchFragment.java
...java/cn/garymb/ygomobile/ui/cards/CardSearchFragment.java
+1
-17
mobile/src/main/java/cn/garymb/ygomobile/ui/cards/DeckManagerFragment.java
...ava/cn/garymb/ygomobile/ui/cards/DeckManagerFragment.java
+1
-16
mobile/src/main/res/layout/dialog_cardinfo.xml
mobile/src/main/res/layout/dialog_cardinfo.xml
+0
-1
No files found.
Classes/gframe/duelclient.cpp
View file @
9321011f
...
...
@@ -105,17 +105,18 @@ void DuelClient::ClientRead(bufferevent* bev, void* ctx) {
int
len
=
evbuffer_get_length
(
input
);
if
(
len
<
2
)
return
;
std
::
array
<
unsigned
char
,
SIZE_NETWORK_BUFFER
>
duel_client_read
;
unsigned
char
*
duel_client_read
=
new
unsigned
char
[
SIZE_NETWORK_BUFFER
]
;
uint16_t
packet_len
=
0
;
while
(
len
>=
2
)
{
evbuffer_copyout
(
input
,
&
packet_len
,
sizeof
packet_len
);
if
(
len
<
packet_len
+
2
)
break
;
int
read_len
=
evbuffer_remove
(
input
,
duel_client_read
.
data
()
,
packet_len
+
2
);
int
read_len
=
evbuffer_remove
(
input
,
duel_client_read
,
packet_len
+
2
);
if
(
read_len
>
2
)
HandleSTOCPacketLan
(
&
duel_client_read
[
2
],
read_len
-
2
);
len
-=
packet_len
+
2
;
}
delete
[]
duel_client_read
;
}
void
DuelClient
::
ClientEvent
(
bufferevent
*
bev
,
short
events
,
void
*
ctx
)
{
if
(
events
&
BEV_EVENT_CONNECTED
)
{
...
...
Classes/gframe/netserver.cpp
View file @
9321011f
...
...
@@ -4,7 +4,6 @@
#include "tag_duel.h"
#include "deck_manager.h"
#include <thread>
#include <array>
namespace
ygo
{
std
::
unordered_map
<
bufferevent
*
,
DuelPlayer
>
NetServer
::
users
;
...
...
@@ -127,17 +126,18 @@ void NetServer::ServerEchoRead(bufferevent *bev, void *ctx) {
int
len
=
evbuffer_get_length
(
input
);
if
(
len
<
2
)
return
;
std
::
array
<
unsigned
char
,
SIZE_NETWORK_BUFFER
>
net_server_read
;
unsigned
char
*
net_server_read
=
new
unsigned
char
[
SIZE_NETWORK_BUFFER
]
;
uint16_t
packet_len
=
0
;
while
(
len
>=
2
)
{
evbuffer_copyout
(
input
,
&
packet_len
,
sizeof
packet_len
);
if
(
len
<
packet_len
+
2
)
break
;
int
read_len
=
evbuffer_remove
(
input
,
net_server_read
.
data
()
,
packet_len
+
2
);
int
read_len
=
evbuffer_remove
(
input
,
net_server_read
,
packet_len
+
2
);
if
(
read_len
>
2
)
HandleCTOSPacket
(
&
users
[
bev
],
&
net_server_read
[
2
],
read_len
-
2
);
len
-=
packet_len
+
2
;
}
delete
[]
net_server_read
;
}
void
NetServer
::
ServerEchoEvent
(
bufferevent
*
bev
,
short
events
,
void
*
ctx
)
{
if
(
events
&
(
BEV_EVENT_EOF
|
BEV_EVENT_ERROR
))
{
...
...
Classes/gframe/single_duel.cpp
View file @
9321011f
...
...
@@ -278,6 +278,8 @@ void SingleDuel::PlayerKick(DuelPlayer* dp, unsigned char pos) {
void
SingleDuel
::
UpdateDeck
(
DuelPlayer
*
dp
,
unsigned
char
*
pdata
,
int
len
)
{
if
(
dp
->
type
>
1
||
ready
[
dp
->
type
])
return
;
if
(
len
<
8
||
len
>
sizeof
(
CTOS_DeckData
))
return
;
bool
valid
=
true
;
CTOS_DeckData
deckbuf
;
std
::
memcpy
(
&
deckbuf
,
pdata
,
len
);
...
...
Classes/gframe/tag_duel.cpp
View file @
9321011f
...
...
@@ -261,6 +261,8 @@ void TagDuel::PlayerKick(DuelPlayer* dp, unsigned char pos) {
void
TagDuel
::
UpdateDeck
(
DuelPlayer
*
dp
,
unsigned
char
*
pdata
,
int
len
)
{
if
(
dp
->
type
>
3
||
ready
[
dp
->
type
])
return
;
if
(
len
<
8
||
len
>
sizeof
(
CTOS_DeckData
))
return
;
bool
valid
=
true
;
CTOS_DeckData
deckbuf
;
std
::
memcpy
(
&
deckbuf
,
pdata
,
len
);
...
...
mobile/build.gradle
View file @
9321011f
...
...
@@ -6,7 +6,7 @@ android {
defaultConfig
{
applicationId
"cn.garymb.ygomobile"
minSdkVersion
2
3
minSdkVersion
2
5
//noinspection ExpiredTargetSdkVersion
targetSdkVersion
29
versionCode
311140001
...
...
mobile/src/main/java/cn/garymb/ygomobile/ui/activities/WebActivity.java
View file @
9321011f
...
...
@@ -9,7 +9,6 @@ import android.net.Uri;
import
android.os.Bundle
;
import
android.os.Handler
;
import
android.os.Message
;
import
android.text.TextUtils
;
import
android.view.Gravity
;
import
android.view.MenuItem
;
import
android.view.View
;
...
...
@@ -40,14 +39,13 @@ import cn.garymb.ygomobile.lite.R;
import
cn.garymb.ygomobile.ui.file.FileActivity
;
import
cn.garymb.ygomobile.ui.file.FileOpenType
;
import
cn.garymb.ygomobile.ui.mycard.MyCard
;
import
cn.garymb.ygomobile.ui.mycard.bean.McUser
;
import
cn.garymb.ygomobile.ui.plus.DefWebChromeClient
;
import
cn.garymb.ygomobile.ui.plus.DefWebViewClient
;
import
cn.garymb.ygomobile.ui.widget.WebViewPlus
;
import
cn.garymb.ygomobile.utils.DownloadUtil
;
import
cn.garymb.ygomobile.utils.FileUtils
;
import
cn.garymb.ygomobile.utils.LogUtil
;
import
cn.garymb.ygomobile.utils.YGOUtil
;
import
cn.garymb.ygomobile.utils.glide.GlideCompat
;
import
ocgcore.DataManager
;
import
ocgcore.data.Card
;
...
...
@@ -115,6 +113,12 @@ public class WebActivity extends BaseActivity implements View.OnClickListener {
return
true
;
}
});
mWebViewPlus
.
setWebViewClient
(
new
DefWebViewClient
()
{
@Override
public
boolean
shouldOverrideUrlLoading
(
WebView
view
,
String
url
)
{
return
super
.
shouldOverrideUrlLoading
(
view
,
url
);
}
});
if
(
doIntent
(
getIntent
()))
{
mWebViewPlus
.
loadUrl
(
mUrl
);
}
...
...
mobile/src/main/java/cn/garymb/ygomobile/ui/cards/CardDetail.java
View file @
9321011f
...
...
@@ -224,7 +224,7 @@ public class CardDetail extends BaseAdapterPlus.BaseViewHolder {
if
(
cardInfo
==
null
)
{
return
;
}
mListener
.
on
GetRelated
CardList
(
relatedCards
(
cardInfo
));
mListener
.
on
Show
CardList
(
relatedCards
(
cardInfo
));
}
});
findViewById
(
R
.
id
.
lastone
).
setOnClickListener
((
v
)
->
{
...
...
@@ -319,7 +319,7 @@ public class CardDetail extends BaseAdapterPlus.BaseViewHolder {
private
void
showPackList
(
Card
cardInfo
)
{
Integer
idToUse
=
cardInfo
.
Alias
!=
0
?
cardInfo
.
Alias
:
cardInfo
.
Code
;
mListener
.
onShow
Pack
List
(
packManager
.
getCards
(
cardLoader
,
idToUse
));
mListener
.
onShow
Card
List
(
packManager
.
getCards
(
cardLoader
,
idToUse
));
}
public
void
setHighlightTextWithClickableSpans
(
String
text
)
{
...
...
@@ -391,7 +391,7 @@ public class CardDetail extends BaseAdapterPlus.BaseViewHolder {
if
(
color
!=
Color
.
WHITE
)
{
// 获取被点击的文本内容
String
clickedText
=
((
TextView
)
widget
).
getText
().
subSequence
(
start
,
end
).
toString
();
mListener
.
onS
earchKeyWord
(
clickedText
);
mListener
.
onS
howCardList
(
queryList
(
clickedText
)
);
}
else
{
YGOUtil
.
showTextToast
(
context
.
getString
(
R
.
string
.
searchresult
)
+
context
.
getString
(
R
.
string
.
already_end
));
}
...
...
@@ -406,24 +406,32 @@ public class CardDetail extends BaseAdapterPlus.BaseViewHolder {
},
start
,
end
,
SpannableString
.
SPAN_EXCLUSIVE_EXCLUSIVE
);
}
private
boolean
queryable
(
String
keyword
)
{
// 检查关键词是否为空或仅包含空白字符
if
(
TextUtils
.
isEmpty
(
keyword
))
{
return
false
;
}
private
List
<
Card
>
queryList
(
String
keyword
)
{
long
setcode
=
DataManager
.
get
().
getStringManager
().
getSetCode
(
keyword
);
SparseArray
<
Card
>
cards
=
cardManager
.
getAllCards
();
List
<
Card
>
matchingCards
=
new
ArrayList
<>();
List
<
Long
>
cardInfoSetCodes
=
new
ArrayList
<>();
// 检查关键词是否存在于卡片名字或描述中
for
(
int
i
=
0
;
i
<
cards
.
size
();
i
++)
{
Card
card
=
cards
.
valueAt
(
i
);
cardInfoSetCodes
.
clear
();
//每张卡调用前都清空字段表以防重复
// 将 card 的 setCode 转换为 List<Long>
for
(
long
setCode
:
card
.
getSetCode
())
{
if
(
setCode
>
0
)
cardInfoSetCodes
.
add
(
setCode
);
}
//关键词如果有对应字段则添加进去
if
(
cardInfoSetCodes
.
contains
(
setcode
)
&&
!
matchingCards
.
contains
(
card
))
matchingCards
.
add
(
card
);
// 确保 card.Name 和 card.Desc 不为 null
if
((
card
.
Name
!=
null
&&
card
.
Name
.
contains
(
keyword
))
||
(
card
.
Desc
!=
null
&&
card
.
Desc
.
contains
(
keyword
)))
{
matchingCards
.
add
(
card
);
if
((
card
.
Name
!=
null
&&
card
.
Name
.
contains
(
keyword
))
||
(
card
.
Desc
!=
null
&&
card
.
Desc
.
contains
(
keyword
)))
{
if
(!
matchingCards
.
contains
(
card
))
matchingCards
.
add
(
card
);
}
}
return
matchingCards
;
}
private
boolean
queryable
(
String
keyword
)
{
List
<
Card
>
matchingCards
=
queryList
(
keyword
);
// 检查匹配结果
if
(
matchingCards
.
isEmpty
())
{
return
false
;
// 如果没有找到匹配的卡片,返回 false
...
...
@@ -453,7 +461,6 @@ public class CardDetail extends BaseAdapterPlus.BaseViewHolder {
List
<
String
>
highlightedTexts
=
new
ArrayList
<>(
spanStringList
);
// 使用 ArrayList 来保存匹配的卡片
List
<
Card
>
matchingCards
=
new
ArrayList
<>();
// 将 cardInfo 的 setCode 转换为 List<Long>
List
<
Long
>
cardInfoSetCodes
=
new
ArrayList
<>();
for
(
long
setCode
:
cardInfo
.
getSetCode
())
{
...
...
@@ -785,11 +792,7 @@ public class CardDetail extends BaseAdapterPlus.BaseViewHolder {
void
onImageUpdate
(
Card
cardInfo
);
void
onShowPackList
(
List
<
Card
>
packList
);
void
onSearchKeyWord
(
String
keyword
);
void
onGetRelatedCardList
(
List
<
Card
>
cardList
);
void
onShowCardList
(
List
<
Card
>
cardList
);
void
onClose
();
}
...
...
@@ -813,17 +816,7 @@ public class CardDetail extends BaseAdapterPlus.BaseViewHolder {
}
@Override
public
void
onShowPackList
(
List
<
Card
>
packList
)
{
}
@Override
public
void
onSearchKeyWord
(
String
keyword
)
{
}
@Override
public
void
onGetRelatedCardList
(
List
<
Card
>
cardList
)
{
public
void
onShowCardList
(
List
<
Card
>
cardList
)
{
}
...
...
mobile/src/main/java/cn/garymb/ygomobile/ui/cards/CardSearchFragment.java
View file @
9321011f
...
...
@@ -304,17 +304,7 @@ public class CardSearchFragment extends BaseFragemnt implements CardLoader.CallB
}
@Override
public
void
onShowPackList
(
List
<
Card
>
packList
)
{
showCardList
(
packList
,
false
);
//保持原收录顺序,不排序
}
@Override
public
void
onSearchKeyWord
(
String
keyword
)
{
showSearchKeyWord
(
keyword
);
}
@Override
public
void
onGetRelatedCardList
(
List
<
Card
>
cardList
)
{
public
void
onShowCardList
(
List
<
Card
>
cardList
)
{
showCardList
(
cardList
,
true
);
//便于查看,排序
}
...
...
@@ -355,11 +345,6 @@ public class CardSearchFragment extends BaseFragemnt implements CardLoader.CallB
}
}
private
void
showSearchKeyWord
(
String
keyword
)
{
CardSearchInfo
searchInfo
=
new
CardSearchInfo
.
Builder
().
keyword
(
keyword
).
types
(
new
long
[]{}).
build
();
//构建CardSearchInfo时type不能为null
mCardLoader
.
search
(
searchInfo
);
}
private
void
showCardList
(
List
<
Card
>
cardList
,
boolean
sort
)
{
if
(!
cardList
.
isEmpty
())
{
onSearchResult
(
sort
?
mCardLoader
.
sort
(
cardList
)
:
cardList
,
false
);
//根据情况不同,判断是否调用CardLoader的sort方法排序List<Card>
...
...
@@ -368,7 +353,6 @@ public class CardSearchFragment extends BaseFragemnt implements CardLoader.CallB
}
}
protected
void
showSearch
(
boolean
autoclose
)
{
if
(
autoclose
&&
mDrawerlayout
.
isDrawerOpen
(
Constants
.
CARD_SEARCH_GRAVITY
))
{
mDrawerlayout
.
closeDrawer
(
Constants
.
CARD_SEARCH_GRAVITY
);
...
...
mobile/src/main/java/cn/garymb/ygomobile/ui/cards/DeckManagerFragment.java
View file @
9321011f
...
...
@@ -562,17 +562,7 @@ public class DeckManagerFragment extends BaseFragemnt implements RecyclerViewIte
}
@Override
public
void
onShowPackList
(
List
<
Card
>
packList
)
{
showCardList
(
packList
,
false
);
//保持原收录顺序,不排序
}
@Override
public
void
onSearchKeyWord
(
String
keyword
)
{
showSearchKeyWord
(
keyword
);
//根据关键词搜索
}
@Override
public
void
onGetRelatedCardList
(
List
<
Card
>
cardList
)
{
public
void
onShowCardList
(
List
<
Card
>
cardList
)
{
showCardList
(
cardList
,
true
);
//便于查看,排序
}
...
...
@@ -624,11 +614,6 @@ public class DeckManagerFragment extends BaseFragemnt implements RecyclerViewIte
}
}
private
void
showSearchKeyWord
(
String
keyword
)
{
CardSearchInfo
searchInfo
=
new
CardSearchInfo
.
Builder
().
keyword
(
keyword
).
types
(
new
long
[]{}).
build
();
//构建CardSearchInfo时type不能为null
mCardLoader
.
search
(
searchInfo
);
}
private
void
showCardList
(
List
<
Card
>
cardList
,
boolean
sort
)
{
if
(!
cardList
.
isEmpty
())
{
onSearchResult
(
sort
?
mCardLoader
.
sort
(
cardList
)
:
cardList
,
false
);
//根据情况不同,判断是否调用CardLoader的sort方法排序List<Card>
...
...
mobile/src/main/res/layout/dialog_cardinfo.xml
View file @
9321011f
...
...
@@ -40,7 +40,6 @@
android:layout_marginLeft=
"5dp"
android:background=
"@drawable/button2_bg"
android:gravity=
"center"
android:paddingLeft=
"16dp"
android:paddingRight=
"16dp"
android:shadowColor=
"@color/black"
android:text=
"@string/card_faq"
...
...
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