Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Y
YGOMobile
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
Commits
69a54386
Commit
69a54386
authored
Dec 24, 2025
by
fallenstardust
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
添加genesys与传统禁卡表模式切换
parent
298ec401
Changes
9
Show whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
248 additions
and
34 deletions
+248
-34
mobile/src/main/java/cn/garymb/ygomobile/AppsSettings.java
mobile/src/main/java/cn/garymb/ygomobile/AppsSettings.java
+17
-0
mobile/src/main/java/cn/garymb/ygomobile/Constants.java
mobile/src/main/java/cn/garymb/ygomobile/Constants.java
+4
-0
mobile/src/main/java/cn/garymb/ygomobile/loader/CardLoader.java
.../src/main/java/cn/garymb/ygomobile/loader/CardLoader.java
+22
-3
mobile/src/main/java/cn/garymb/ygomobile/loader/ICardSearcher.java
...c/main/java/cn/garymb/ygomobile/loader/ICardSearcher.java
+1
-0
mobile/src/main/java/cn/garymb/ygomobile/ui/cards/CardSearcher.java
.../main/java/cn/garymb/ygomobile/ui/cards/CardSearcher.java
+102
-10
mobile/src/main/java/ocgcore/LimitManager.java
mobile/src/main/java/ocgcore/LimitManager.java
+60
-11
mobile/src/main/java/ocgcore/PackManager.java
mobile/src/main/java/ocgcore/PackManager.java
+9
-0
mobile/src/main/java/ocgcore/data/LimitList.java
mobile/src/main/java/ocgcore/data/LimitList.java
+2
-2
mobile/src/main/res/layout/nav_card_search.xml
mobile/src/main/res/layout/nav_card_search.xml
+31
-8
No files found.
mobile/src/main/java/cn/garymb/ygomobile/AppsSettings.java
View file @
69a54386
...
...
@@ -632,6 +632,23 @@ public class AppsSettings {
mSharedPreferences
.
getString
(
Constants
.
PREF_LAST_LIMIT
,
Constants
.
PREF_DEF_LAST_LIMIT
)
:
limitName
;
}
public
void
setLastGenesysLimit
(
String
limitName
)
{
App
.
get
().
saveSetting
(
"lastGenesysLimit"
,
limitName
);
mSharedPreferences
.
putString
(
Constants
.
PREF_LAST_GENESYS_LIMIT
,
limitName
);
}
public
String
getLastGenesysLimit
()
{
String
limitName
=
App
.
get
().
getSetting
(
"lastGenesysLimit"
);
return
limitName
==
null
||
TextUtils
.
isEmpty
(
limitName
)
?
mSharedPreferences
.
getString
(
Constants
.
PREF_LAST_GENESYS_LIMIT
,
Constants
.
PREF_DEF_LAST_GENESYS_LIMIT
)
:
limitName
;
}
public
void
setGenesysMode
(
int
value
)
{
App
.
get
().
saveIntSetting
(
"lastGenesysMode"
,
value
);
mSharedPreferences
.
putInt
(
Constants
.
PREF_LAST_GENESYS_MODE
,
value
);
}
public
int
getGenesysMode
()
{
return
mSharedPreferences
.
getInt
(
Constants
.
PREF_LAST_GENESYS_MODE
,
Constants
.
PREF_DEF_LAST_GENESYS_MODE
);
}
/**
* 获得(最后)上次打开的卡组的绝对路径
...
...
mobile/src/main/java/cn/garymb/ygomobile/Constants.java
View file @
69a54386
...
...
@@ -9,7 +9,11 @@ public interface Constants {
boolean
DEBUG
=
BuildConfig
.
DEBUG
;
String
PREF_START
=
"game_pref_"
;
String
PREF_LAST_LIMIT
=
"pref_last_limit"
;
String
PREF_LAST_GENESYS_MODE
=
"pref_last_genesys_mode"
;
int
PREF_DEF_LAST_GENESYS_MODE
=
0
;
//0代表传统禁限模式,1代表Genesys模式
String
PREF_DEF_LAST_LIMIT
=
""
;
String
PREF_LAST_GENESYS_LIMIT
=
"pref_last_genesys_limit"
;
String
PREF_DEF_LAST_GENESYS_LIMIT
=
""
;
String
PREF_LAST_DECK_PATH
=
"pref_last_deck_path"
;
String
PREF_LAST_YDK
=
"pref_last_ydk"
;
String
PREF_DEF_LAST_YDK
=
"new"
;
...
...
mobile/src/main/java/cn/garymb/ygomobile/loader/CardLoader.java
View file @
69a54386
...
...
@@ -33,6 +33,7 @@ public class CardLoader implements ICardSearcher {
private
final
CardManager
mCardManager
;
private
CallBack
mCallBack
;
private
LimitList
mLimitList
;
private
LimitList
mGenesys_LimitList
;
private
static
final
String
TAG
=
CardLoader
.
class
.
getSimpleName
();
private
final
static
boolean
DEBUG
=
false
;
...
...
@@ -52,14 +53,21 @@ public class CardLoader implements ICardSearcher {
// 读取上次使用的LimitList,如果有非空值存在且和禁卡表列表中有相同名称对应,则使用,否则设置第一个禁卡表
mLimitList
=
mLimitManager
.
getLastLimit
()
!=
null
?
mLimitManager
.
getLastLimit
()
:
mLimitManager
.
getTopLimit
();
mGenesys_LimitList
=
mLimitManager
.
getLastGenesysLimit
()
!=
null
?
mLimitManager
.
getLastGenesysLimit
()
:
mLimitManager
.
getGenesysTopLimit
();
}
@Override
public
void
setLimitList
(
LimitList
limitList
)
{
if
(
limitList
!=
null
)
{
if
(
limitList
.
getCreditLimits
()
!=
null
)
{
mGenesys_LimitList
=
limitList
;
AppsSettings
.
get
().
setLastGenesysLimit
(
limitList
.
getName
());
}
else
{
mLimitList
=
limitList
;
if
(
limitList
!=
null
)
AppsSettings
.
get
().
setLastLimit
(
limitList
.
getName
());
}
}
}
/**
* @param ids
...
...
@@ -98,12 +106,23 @@ public class CardLoader implements ICardSearcher {
loadData
(
null
,
null
);
}
/**
* 获取限制列表
* 这即是ICardSearcher的getLimitList()映射的方法
* @return 返回当前对象的限制列表,非空
*/
@Override
public
@NonNull
LimitList
getLimitList
()
{
return
mLimitList
;
}
@Override
public
@NonNull
LimitList
getGenesysLimitList
()
{
return
mGenesys_LimitList
;
}
public
SparseArray
<
Card
>
readAllCardCodes
()
{
if
(
DEBUG
)
{
SparseArray
<
Card
>
tmp
=
new
SparseArray
<>();
...
...
mobile/src/main/java/cn/garymb/ygomobile/loader/ICardSearcher.java
View file @
69a54386
...
...
@@ -7,4 +7,5 @@ public interface ICardSearcher extends ICardLoader{
void
onReset
();
void
setLimitList
(
LimitList
limit
);
LimitList
getLimitList
();
LimitList
getGenesysLimitList
();
}
mobile/src/main/java/cn/garymb/ygomobile/ui/cards/CardSearcher.java
View file @
69a54386
...
...
@@ -15,6 +15,7 @@ import android.widget.CheckBox;
import
android.widget.CompoundButton
;
import
android.widget.EditText
;
import
android.widget.Spinner
;
import
android.widget.Switch
;
import
android.widget.TextView.OnEditorActionListener
;
import
java.util.ArrayList
;
...
...
@@ -49,9 +50,11 @@ public class CardSearcher implements View.OnClickListener {
private
final
EditText
keyWord
;
private
final
CheckBox
chk_multi_keyword
;
private
final
Spinner
otSpinner
;
private
final
Switch
genesys_Switch
;
private
final
Spinner
limitSpinner
;
private
final
Spinner
genesys_limitSpinner
;
private
final
Spinner
limitListSpinner
;
private
final
Spinner
genesys_limitListSpinner
;
private
final
Spinner
typeSpinner
;
private
final
Spinner
typeMonsterSpinner
;
private
final
Spinner
typeMonsterSpinner2
;
...
...
@@ -90,9 +93,11 @@ public class CardSearcher implements View.OnClickListener {
keyWord
=
findViewById
(
R
.
id
.
edt_word1
);
chk_multi_keyword
=
findViewById
(
R
.
id
.
chk_multi_keyword
);
otSpinner
=
findViewById
(
R
.
id
.
sp_ot
);
genesys_Switch
=
findViewById
(
R
.
id
.
sw_genesys_mode
);
//genesys模式开关
limitSpinner
=
findViewById
(
R
.
id
.
sp_limit
);
genesys_limitSpinner
=
findViewById
(
R
.
id
.
sp_genesys_limit
);
//初始化genesys禁限选项布局
limitListSpinner
=
findViewById
(
R
.
id
.
sp_limit_list
);
genesys_limitListSpinner
=
findViewById
(
R
.
id
.
sp_genesys_limit_list
);
//初始化genesys禁卡表布局
typeSpinner
=
findViewById
(
R
.
id
.
sp_type_card
);
typeMonsterSpinner
=
findViewById
(
R
.
id
.
sp_type_monster
);
typeMonsterSpinner2
=
findViewById
(
R
.
id
.
sp_type_monster2
);
...
...
@@ -206,23 +211,30 @@ public class CardSearcher implements View.OnClickListener {
}
});
genesys_Switch
.
setOnCheckedChangeListener
((
buttonView
,
isChecked
)
->
{
if
(
isChecked
)
{
genesys_limitListSpinner
.
setVisibility
(
View
.
VISIBLE
);
genesys_limitSpinner
.
setVisibility
(
View
.
VISIBLE
);
limitListSpinner
.
setVisibility
(
View
.
GONE
);
limitSpinner
.
setVisibility
(
View
.
GONE
);
}
else
{
genesys_limitListSpinner
.
setVisibility
(
View
.
GONE
);
genesys_limitSpinner
.
setVisibility
(
View
.
GONE
);
limitListSpinner
.
setVisibility
(
View
.
VISIBLE
);
limitSpinner
.
setVisibility
(
View
.
VISIBLE
);
}
genesys_Switch
.
setText
(
isChecked
?
"起源赛制模式"
:
"传统禁限模式"
);
mSettings
.
setGenesysMode
(
isChecked
?
1
:
0
);
});
limitListSpinner
.
setOnItemSelectedListener
(
new
AdapterView
.
OnItemSelectedListener
()
{
@Override
public
void
onItemSelected
(
AdapterView
<?>
parent
,
View
view
,
int
position
,
long
id
)
{
long
value
=
getSelect
(
limitListSpinner
);
if
(
value
<=
0
)
{
reset
(
limitSpinner
);
reset
(
genesys_limitSpinner
);
}
LimitList
limit
=
mLimitManager
.
getLimit
(
getSelectText
(
limitListSpinner
));
if
(
limit
.
getName
().
toLowerCase
().
contains
(
"genesys"
))
{
genesys_limitSpinner
.
setVisibility
(
View
.
VISIBLE
);
limitSpinner
.
setVisibility
(
View
.
GONE
);
}
else
{
genesys_limitSpinner
.
setVisibility
(
View
.
GONE
);
limitSpinner
.
setVisibility
(
View
.
VISIBLE
);
}
mICardSearcher
.
setLimitList
(
limit
);
//同时通知整个界面都显示该禁卡表的禁限情况
mCallBack
.
setLimit
(
limit
);
...
...
@@ -240,6 +252,31 @@ public class CardSearcher implements View.OnClickListener {
}
return
false
;
// 返回false以允许正常的spinner行为继续
});
genesys_limitListSpinner
.
setOnItemSelectedListener
(
new
AdapterView
.
OnItemSelectedListener
()
{
@Override
public
void
onItemSelected
(
AdapterView
<?>
parent
,
View
view
,
int
position
,
long
id
)
{
long
value
=
getSelect
(
genesys_limitListSpinner
);
if
(
value
<=
0
)
{
reset
(
genesys_limitSpinner
);
}
LimitList
genesyslimit
=
mLimitManager
.
getLimit
(
getSelectText
(
genesys_limitListSpinner
));
mICardSearcher
.
setLimitList
(
genesyslimit
);
//同时通知整个界面都显示该禁卡表的禁限情况
mCallBack
.
setLimit
(
genesyslimit
);
}
@Override
public
void
onNothingSelected
(
AdapterView
<?>
parent
)
{
}
});
genesys_limitListSpinner
.
setOnTouchListener
((
v
,
event
)
->
{
if
(
event
.
getAction
()
==
MotionEvent
.
ACTION_DOWN
)
{
refreshGenesysLimitListSpinnerItems
(
genesys_limitListSpinner
);
}
return
false
;
// 返回false以允许正常的spinner行为继续
});
typeSpinner
.
setOnItemSelectedListener
(
new
AdapterView
.
OnItemSelectedListener
()
{
@Override
public
void
onItemSelected
(
AdapterView
<?>
parent
,
View
view
,
int
position
,
long
id
)
{
...
...
@@ -331,6 +368,7 @@ public class CardSearcher implements View.OnClickListener {
initLimitSpinners
(
limitSpinner
);
//初始化常规禁限选项:禁止、限制、准限制
initLimitGenesysSpinners
(
genesys_limitSpinner
);
//初始化Genesys禁限选项:Genesys、禁止
initLimitListSpinners
(
limitListSpinner
);
initGenesysLimitListSpinners
(
genesys_limitSpinner
);
initTypeSpinners
(
typeSpinner
,
new
CardType
[]{
CardType
.
None
,
CardType
.
Monster
,
CardType
.
Spell
,
CardType
.
Trap
});
initTypeSpinners
(
typeMonsterSpinner
,
new
CardType
[]{
CardType
.
None
,
CardType
.
Normal
,
CardType
.
Effect
,
CardType
.
Fusion
,
CardType
.
Ritual
,
CardType
.
Synchro
,
CardType
.
Pendulum
,
CardType
.
Xyz
,
CardType
.
Link
,
CardType
.
Spirit
,
CardType
.
Union
,
...
...
@@ -460,7 +498,50 @@ public class CardSearcher implements View.OnClickListener {
}
}
private
void
initGenesysLimitListSpinners
(
Spinner
spinner
)
{
// 创建一个列表用于存储下拉选项
List
<
SimpleSpinnerItem
>
items
=
new
ArrayList
<>();
// 获取所有禁卡表名称列表
List
<
String
>
genesys_limit_names
=
mLimitManager
.
getGenesysLimitNames
();
// 初始化选中项索引为-1(表示未选中)
int
index
=
-
1
;
// 获取禁卡表总数
int
genesys_count
=
mLimitManager
.
getGenesysCount
();
// 当前选中的禁卡表,初始化为null
LimitList
cur
=
null
;
// 如果卡片搜索器不为null,则获取当前使用的禁卡表
if
(
mICardSearcher
!=
null
)
{
cur
=
mICardSearcher
.
getGenesysLimitList
();
}
// 添加默认选项"禁卡表"
items
.
add
(
new
SimpleSpinnerItem
(
0
,
getString
(
R
.
string
.
label_limitlist
)));
// 遍历所有禁卡表
for
(
int
i
=
0
;
i
<
genesys_count
;
i
++)
{
// 计算选项索引(从1开始)
int
j
=
i
+
1
;
// 获取禁卡表名称
String
name
=
genesys_limit_names
.
get
(
i
);
// 创建并添加禁卡表选项到列表
items
.
add
(
new
SimpleSpinnerItem
(
j
,
name
));
// 如果当前禁卡表不为null且名称匹配,则记录选中索引
if
(
cur
!=
null
&&
TextUtils
.
equals
(
cur
.
getName
(),
name
))
{
index
=
j
;
}
}
// 创建适配器用于绑定数据到Spinner
SimpleSpinnerAdapter
adapter
=
new
SimpleSpinnerAdapter
(
mContext
);
// 设置文字颜色为白色
adapter
.
setColor
(
Color
.
WHITE
);
// 设置适配器的数据源
adapter
.
set
(
items
);
// 将适配器设置给Spinner
spinner
.
setAdapter
(
adapter
);
// 如果找到了匹配的禁卡表,则设置Spinner的选中项
Log
.
w
(
TAG
,
"index:"
+
index
);
if
(
index
>=
0
)
{
spinner
.
setSelection
(
index
);
}
}
private
void
refreshLimitListSpinnerItems
(
Spinner
spinner
)
{
// 首先清除所有现有的item
if
(
spinner
.
getAdapter
()
!=
null
&&
spinner
.
getAdapter
()
instanceof
SimpleSpinnerAdapter
)
{
...
...
@@ -472,6 +553,17 @@ public class CardSearcher implements View.OnClickListener {
initLimitListSpinners
(
spinner
);
}
private
void
refreshGenesysLimitListSpinnerItems
(
Spinner
spinner
)
{
// 首先清除所有现有的item
if
(
spinner
.
getAdapter
()
!=
null
&&
spinner
.
getAdapter
()
instanceof
SimpleSpinnerAdapter
)
{
//清空选项
((
SimpleSpinnerAdapter
)
spinner
.
getAdapter
()).
clear
();
//重新加载禁卡表,获取可能存在的变动后情况
mLimitManager
.
load
();
}
initGenesysLimitListSpinners
(
spinner
);
}
private
void
initPscaleSpinners
(
Spinner
spinner
)
{
List
<
SimpleSpinnerItem
>
items
=
new
ArrayList
<>();
...
...
@@ -667,7 +759,7 @@ public class CardSearcher implements View.OnClickListener {
// if (limitListSpinner.getAdapter().getCount() > 1) {//因为禁卡表选择记录已变为保存形式,所以这里不再重置为第一个禁卡表
// limitListSpinner.setSelection(1);
// }
reset
(
limitSpinner
);
reset
(
limitSpinner
.
getVisibility
()
==
View
.
VISIBLE
?
limitSpinner
:
genesys_limitSpinner
);
reset
(
typeSpinner
);
reset
(
typeSpellSpinner
);
reset
(
typeTrapSpinner
);
...
...
mobile/src/main/java/ocgcore/LimitManager.java
View file @
69a54386
...
...
@@ -30,9 +30,13 @@ import ocgcore.data.LimitList;
public
class
LimitManager
implements
Closeable
{
/* key为时间,如“2023.7” ,value为禁止卡、限制卡、准限制卡的列表 */
private
final
Map
<
String
,
LimitList
>
mLimitLists
=
new
HashMap
<>();
// Genesys禁卡表单独整合为一个列表
private
final
Map
<
String
,
LimitList
>
mGenesys_LimitLists
=
new
HashMap
<>();
/* 只存储key的列表,其元素形如“2023.7” */
private
final
List
<
String
>
mLimitNames
=
new
ArrayList
<>();
private
final
List
<
String
>
mGenesys_LimitNames
=
new
ArrayList
<>();
private
int
mCount
;
private
int
mGenesys_Count
;
public
LimitManager
()
{
...
...
@@ -41,24 +45,38 @@ public class LimitManager implements Closeable {
@Override
public
void
close
()
{
mLimitNames
.
clear
();
mGenesys_LimitNames
.
clear
();
mLimitLists
.
clear
();
mGenesys_LimitLists
.
clear
();
}
public
int
getCount
()
{
return
mCount
;
}
public
int
getGenesysCount
()
{
return
mGenesys_Count
;
}
public
Map
<
String
,
LimitList
>
getLimitLists
()
{
return
mLimitLists
;
}
public
Map
<
String
,
LimitList
>
getGenesys_LimitLists
()
{
return
mGenesys_LimitLists
;
}
public
List
<
String
>
getLimitNames
()
{
return
mLimitNames
;
}
public
List
<
String
>
getGenesysLimitNames
()
{
return
mGenesys_LimitNames
;
}
public
LimitList
getLimit
(
String
name
)
{
return
mLimitLists
.
get
(
name
);
}
public
LimitList
getGenesysLimit
(
String
name
)
{
return
mGenesys_LimitLists
.
get
(
name
);
}
public
LimitList
getLastLimit
()
{
if
(
mLimitNames
.
isEmpty
())
{
...
...
@@ -69,6 +87,15 @@ public class LimitManager implements Closeable {
return
lastLimitName
==
null
||
TextUtils
.
isEmpty
(
lastLimitName
)
?
getTopLimit
()
:
getLimit
(
lastLimitName
);
}
public
LimitList
getLastGenesysLimit
()
{
if
(
mGenesys_LimitNames
.
isEmpty
())
{
return
null
;
}
// 读取上次使用的LimitList,如果有非空值存在且和禁卡表列表中有相同名称对应,则使用,否则设置第一个禁卡表
String
lastLimitName
=
AppsSettings
.
get
().
getLastGenesysLimit
();
return
lastLimitName
==
null
||
TextUtils
.
isEmpty
(
lastLimitName
)
?
getGenesysTopLimit
()
:
getGenesysLimit
(
lastLimitName
);
}
public
LimitList
getTopLimit
()
{
if
(
mLimitNames
.
isEmpty
())
{
return
null
;
...
...
@@ -76,6 +103,13 @@ public class LimitManager implements Closeable {
return
mLimitLists
.
get
(
mLimitNames
.
get
(
0
));
}
public
LimitList
getGenesysTopLimit
()
{
if
(
mGenesys_LimitNames
.
isEmpty
())
{
return
null
;
}
return
mGenesys_LimitLists
.
get
(
mGenesys_LimitNames
.
get
(
0
));
}
/**
* 加载禁卡表lflist.conf数据
*
...
...
@@ -85,10 +119,11 @@ public class LimitManager implements Closeable {
// 清理旧数据,不让缓存干扰读取结果
mLimitLists
.
clear
();
mLimitNames
.
clear
();
mGenesys_LimitLists
.
clear
();
mGenesys_LimitNames
.
clear
();
boolean
expansion_rs2
=
true
;
boolean
expansion_zip_rs1
=
true
;
boolean
default_res3
=
true
;
boolean
default_genesys_res4
=
true
;
// 如果需要读取扩展包数据,则加载扩展包中的限制文件
if
(
AppsSettings
.
get
().
isReadExpansions
())
{
...
...
@@ -116,7 +151,7 @@ public class LimitManager implements Closeable {
}
}
// 2.读取扩展卡文件夹中的lflist.conf文件
if
(
file
.
isFile
()
&&
file
.
getName
().
equal
s
(
Constants
.
CORE_LIMIT_PATH
))
{
if
(
file
.
isFile
()
&&
file
.
getName
().
contain
s
(
Constants
.
CORE_LIMIT_PATH
))
{
expansion_rs2
=
loadFile
(
file
);
}
}
...
...
@@ -125,15 +160,15 @@ public class LimitManager implements Closeable {
// 3.加载主资源路径(ygocore文件夹)下的lflist.conf文件对象,这是内置默认文件
File
ygocore_lflist
=
new
File
(
AppsSettings
.
get
().
getResourcePath
(),
Constants
.
CORE_LIMIT_PATH
);
default_res3
=
loadFile
(
ygocore_lflist
);
File
genesys_lflist
=
new
File
(
AppsSettings
.
get
().
getExpansionsPath
(),
Constants
.
CORE_GENESYS_LIMIT_PATH
);
default_genesys_res4
=
loadFile
(
genesys_lflist
);
// 4.添加一个空卡表N/A(为了和ygopro显示一致才这么写) 无禁限
mLimitLists
.
put
(
"N/A"
,
new
LimitList
(
"N/A"
));
mLimitNames
.
add
(
"N/A"
);
mGenesys_LimitLists
.
put
(
"N/A"
,
new
LimitList
(
"N/A"
));
mGenesys_LimitNames
.
add
(
"N/A"
);
++
mCount
;
return
expansion_zip_rs1
&&
expansion_rs2
&&
default_res3
&&
default_genesys_res4
;
return
expansion_zip_rs1
&&
expansion_rs2
&&
default_res3
;
}
/**
...
...
@@ -163,8 +198,13 @@ public class LimitManager implements Closeable {
if
(
line
.
startsWith
(
"!"
))
{
name
=
line
.
substring
(
1
);
tmp
=
new
LimitList
(
name
);
if
(
name
.
toLowerCase
().
contains
(
"genesys"
))
{
mGenesys_LimitLists
.
put
(
name
,
tmp
);
mGenesys_LimitNames
.
add
(
name
);
}
else
{
mLimitLists
.
put
(
name
,
tmp
);
mLimitNames
.
add
(
name
);
}
}
else
if
(
line
.
startsWith
(
"$"
))
{
// 去掉$前缀并按空格分割
String
[]
words
=
line
.
substring
(
1
).
trim
().
split
(
"[\t| ]+"
);
...
...
@@ -180,7 +220,7 @@ public class LimitManager implements Closeable {
String
[]
words
=
line
.
trim
().
split
(
"[\t| ]+"
);
if
(
words
.
length
>=
2
)
{
if
(
words
[
1
].
equals
(
"$genesys"
))
{
tmp
.
addCredits
(
toNumber
(
words
[
0
]),
toNumber
(
words
[
2
]));
//保存genesys行的卡牌id和
信用分值
tmp
.
addCredits
(
toNumber
(
words
[
0
]),
toNumber
(
words
[
2
]));
//保存genesys行的卡牌id和
点数
}
else
{
int
id
=
toNumber
(
words
[
0
]);
int
count
=
toNumber
(
words
[
1
]);
...
...
@@ -210,6 +250,7 @@ public class LimitManager implements Closeable {
// 更新限制列表计数
mCount
=
mLimitLists
.
size
();
mGenesys_Count
=
mGenesys_LimitLists
.
size
();
Log
.
e
(
"LimitManager"
,
"限制列表数量:"
+
mCount
);
return
true
;
}
...
...
@@ -241,8 +282,13 @@ public class LimitManager implements Closeable {
if
(
line
.
startsWith
(
"!"
))
{
name
=
line
.
substring
(
1
);
tmp
=
new
LimitList
(
name
);
if
(
name
.
toLowerCase
().
contains
(
"genesys"
))
{
mGenesys_LimitLists
.
put
(
name
,
tmp
);
mGenesys_LimitNames
.
add
(
name
);
}
else
{
mLimitLists
.
put
(
name
,
tmp
);
mLimitNames
.
add
(
name
);
}
}
else
if
(
line
.
startsWith
(
"$"
))
{
// 去掉$前缀并按空格分割
String
[]
words
=
line
.
substring
(
1
).
trim
().
split
(
"[\t| ]+"
);
...
...
@@ -257,7 +303,7 @@ public class LimitManager implements Closeable {
String
[]
words
=
line
.
trim
().
split
(
"[\t| ]+"
);
if
(
words
.
length
>=
2
)
{
if
(
words
[
1
].
equals
(
"$genesys"
))
{
tmp
.
addCredits
(
toNumber
(
words
[
0
]),
toNumber
(
words
[
2
]));
//保存genesys行的卡牌id和
信用分值
tmp
.
addCredits
(
toNumber
(
words
[
0
]),
toNumber
(
words
[
2
]));
//保存genesys行的卡牌id和
点数
}
else
{
int
id
=
toNumber
(
words
[
0
]);
int
count
=
toNumber
(
words
[
1
]);
...
...
@@ -285,6 +331,9 @@ public class LimitManager implements Closeable {
IOUtils
.
close
(
in
);
}
mCount
=
mLimitLists
.
size
();
mGenesys_Count
=
mGenesys_LimitLists
.
size
();
Log
.
e
(
"LimitManager"
,
"限制列表数量:"
+
mCount
);
Log
.
e
(
"LimitManager"
,
"Genesys限制列表数量:"
+
mGenesys_Count
);
return
true
;
}
...
...
mobile/src/main/java/ocgcore/PackManager.java
View file @
69a54386
...
...
@@ -81,6 +81,14 @@ public class PackManager implements Closeable {
return
true
;
}
/**
* 处理文件并提取其中的ID列表
* 该方法读取指定文件,解析其中的数字ID(跳过以#开头的注释行),
* 并将有效的ID添加到packList中
*
* @param file 需要处理的文件对象
* @throws IOException 文件读取过程中可能抛出的IO异常
*/
private
void
processFile
(
File
file
)
throws
IOException
{
List
<
Integer
>
ids
=
new
ArrayList
<>();
try
(
FileInputStream
inputStream
=
new
FileInputStream
(
file
);
...
...
@@ -99,6 +107,7 @@ public class PackManager implements Closeable {
Log
.
w
(
TAG
,
"Skipping invalid line in file "
+
file
.
getName
()
+
": "
+
line
);
}
}
// 将解析出的ID列表添加到packList中,如果ID列表不为空
if
(!
ids
.
isEmpty
())
{
packList
.
add
(
new
AbstractMap
.
SimpleEntry
<>(
file
.
getName
(),
ids
));
}
...
...
mobile/src/main/java/ocgcore/data/LimitList.java
View file @
69a54386
...
...
@@ -17,8 +17,8 @@ import ocgcore.enums.LimitType;
*/
public
class
LimitList
{
private
String
name
=
"?"
;
private
Integer
credit_limits
;
//GeneSys模式特有的
总分
值
private
Map
<
Integer
,
Integer
>
credits
;
//GeneSys模式特有的单张卡ID和其
信用分
private
Integer
credit_limits
;
//GeneSys模式特有的
上限
值
private
Map
<
Integer
,
Integer
>
credits
;
//GeneSys模式特有的单张卡ID和其
点数
/**
* 0
*/
...
...
mobile/src/main/res/layout/nav_card_search.xml
View file @
69a54386
...
...
@@ -49,6 +49,21 @@
</LinearLayout>
<LinearLayout
android:layout_width=
"match_parent"
android:layout_height=
"@dimen/label_width_small"
android:orientation=
"horizontal"
>
<Switch
android:id=
"@+id/sw_genesys_mode"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:layout_marginLeft=
"10dp"
android:layout_marginRight=
"10dp"
android:gravity=
"center"
android:text=
"切换为起源(GENESYS)赛制模式"
/>
</LinearLayout>
<LinearLayout
android:layout_width=
"match_parent"
android:layout_height=
"@dimen/label_width_small"
...
...
@@ -62,19 +77,27 @@
android:layout_weight=
"1"
/>
<androidx.appcompat.widget.AppCompatSpinner
android:id=
"@+id/sp_
limi
t"
android:id=
"@+id/sp_
genesys_limit_lis
t"
style=
"@style/itemSpinnerStyle"
android:layout_width=
"0dp"
android:layout_height=
"match_parent"
android:layout_weight=
"1"
android:visibility=
"gone"
/>
android:visibility=
"gone"
/>
<androidx.appcompat.widget.AppCompatSpinner
android:id=
"@+id/sp_limit"
style=
"@style/itemSpinnerStyle"
android:layout_width=
"0dp"
android:layout_height=
"match_parent"
android:layout_weight=
"1"
/>
<androidx.appcompat.widget.AppCompatSpinner
android:id=
"@+id/sp_genesys_limit"
style=
"@style/itemSpinnerStyle"
android:layout_width=
"0dp"
android:layout_height=
"match_parent"
android:layout_weight=
"1"
android:visibility=
"gone"
/>
android:visibility=
"gone"
/>
</LinearLayout>
<LinearLayout
...
...
@@ -249,8 +272,8 @@
<com.google.android.material.textfield.TextInputLayout
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:layout_margin
Righ
t=
"10dp"
android:layout_margin
Lef
t=
"10dp"
>
android:layout_margin
Lef
t=
"10dp"
android:layout_margin
Righ
t=
"10dp"
>
<androidx.appcompat.widget.AppCompatEditText
android:id=
"@+id/edt_word1"
...
...
@@ -269,11 +292,11 @@
android:id=
"@+id/chk_multi_keyword"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:layout_marginRight=
"10dp"
android:layout_marginLeft=
"10dp"
android:layout_marginRight=
"10dp"
android:layout_marginBottom=
"30dp"
android:text
Size=
"10sp
"
android:text
=
"@string/settings_key_words_split"
/>
android:text
=
"@string/settings_key_words_split
"
android:text
Size=
"10sp"
/>
<LinearLayout
android:layout_width=
"match_parent"
...
...
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