Commit 0430e59e authored by fallenstardust's avatar fallenstardust
parents 24d21430 ba39e838
......@@ -2332,7 +2332,7 @@ int32 field::get_attack_target(card* pcard, card_vector* v, uint8 chain_attack,
continue;
if(atype >= 2 && atarget->is_affected_by_effect(EFFECT_IGNORE_BATTLE_TARGET))
continue;
if(select_target && atype == 4) {
if(select_target && (atype == 2 || atype == 4)) {
if(atarget->is_affected_by_effect(EFFECT_CANNOT_BE_BATTLE_TARGET, pcard))
continue;
if(pcard->is_affected_by_effect(EFFECT_CANNOT_SELECT_BATTLE_TARGET, atarget))
......@@ -2353,7 +2353,7 @@ int32 field::get_attack_target(card* pcard, card_vector* v, uint8 chain_attack,
mcount++;
if(chain_attack && core.chain_attack_target && atarget != core.chain_attack_target)
continue;
if(select_target && atype == 4) {
if(select_target && (atype == 2 || atype == 4)) {
if(atarget->is_affected_by_effect(EFFECT_CANNOT_BE_BATTLE_TARGET, pcard))
continue;
if(pcard->is_affected_by_effect(EFFECT_CANNOT_SELECT_BATTLE_TARGET, atarget))
......
......@@ -22,10 +22,27 @@
<pre>
更新:
1.更新ygo内核;
2.新卡1010+VJ
2.新卡1010+T1009+VJ+VF
3.2019.7TCG禁卡表;
新增:
1.卡组分类管理;
1.卡组分类管理--
竖屏组卡器下
*选择卡组直接进入分类选择;
*右滑选中的分类可删除该分类;
*长按卡组可进入多选操作;
*可批量删除同分类下的卡组;
横屏组卡器--
*原选择禁卡表改为选择卡组分类;
*选中卡组可直接观看该卡组;
*禁卡表选择并入卡组管理窗口;
*各种操作由专门按钮进行,暂不支持多选操作;
2.显示人机卡组,禁用修改人机卡组;
3.卡包ydk放到专属卡包分类;
4.决斗准备开设选择分类和选择卡组;
5.新增一个鼓励玩家自我改进的预组卡组;
优化:
1.重置资源支持重置人机文件;
2.优化APP加载速度;
</pre>
</body>
</html>
\ No newline at end of file
......@@ -599,6 +599,10 @@
!counter 0x104f 蛊指示物
!counter 0x50 指示物(娱乐伙伴 掉头跑骑兵)
!counter 0x51 指示物(蜂军巢)
!counter 0x52 指示物(防火龙·暗流体)
!counter 0x53 指示物(炽天蝶)
!counter 0x54 指示物(星遗物引导的前路)
!counter 0x55 指示物(隐居者的大釜)
#setnames, using tab for comment
!setname 0x1 正义盟军 AOJ
!setname 0x2 次世代 ジェネクス
......@@ -987,3 +991,6 @@
!setname 0x12d 斯摩夫 シムルグ
!setname 0x12e 占卜魔女 占い魔女
!setname 0x12f 蜂军 BF(ビー・フォース)
!setname 0x130 破械
!setname 0x1130 破械神
!setname 0x131 梦镜 Dream Mirror
......@@ -595,10 +595,14 @@
!counter 0x4b Borrel Counter
!counter 0x4c Summon Counter
!counter 0x104d Signal Counter
!counter 0x4e Counter(Pendulum of Souls)
!counter 0x4e Counter(Soul Pendulum)
!counter 0x104f Venemy Counter
!counter 0x50 Counter(Performapal Turntrooper)
!counter 0x51 Counter(Battlewasp - Nest)
!counter 0x52 Counter(Firewall Dragon Darkfluid)
!counter 0x53 Counter(Seraphim Papillon)
!counter 0x54 Counter(World Legacy's Continuation)
!counter 0x55 Counter(Cauldron of the Old Man)
#setnames, using tab for comment
!setname 0x1 Ally of Justice
!setname 0x2 Genex
......@@ -980,3 +984,6 @@
!setname 0x12d Simorgh
!setname 0x12e Fortune Fairy
!setname 0x12f Battlewasp
!setname 0x130 Hakai
!setname 0x1130 Hakaishin
!setname 0x131 Dream Mirror
......@@ -8,7 +8,7 @@ android {
applicationId "cn.garymb.ygomobile"
minSdkVersion 16
targetSdkVersion 28
versionCode 340700707
versionCode 340700728
versionName "3.4.7"
flavorDimensions "versionCode"
vectorDrawables.useSupportLibrary = true
......
......@@ -507,12 +507,12 @@ public class AppsSettings {
/***
* 保存最后卡组绝对路径
*/
public void setLastDeckPath(String name) {
if (TextUtils.equals(name, getCurLastDeck())) {
public void setLastDeckPath(String path) {
if (TextUtils.equals(path, getCurLastDeck())) {
//一样
return;
}
mSharedPreferences.putString(Constants.PREF_LAST_YDK, name);
mSharedPreferences.putString(Constants.PREF_LAST_YDK, path);
}
public String getCurLastDeck() {
......
......@@ -67,6 +67,7 @@ public interface Constants {
String CORE_SKIN_PATH = "textures";
String CORE_SKIN_PENDULUM_PATH = CORE_SKIN_PATH + "/extra";
String CORE_DECK_PATH = "deck";
String CORE_PACK_PATH = "pack";
String CORE_EXPANSIONS = "expansions";
String CORE_SINGLE_PATH = "single";
String CORE_IMAGE_PATH = "pics";
......
......@@ -652,7 +652,10 @@ class DeckManagerActivityImpl extends BaseCardsAcitivity implements RecyclerView
}
break;
case R.id.action_delete_deck: {
if (mDeckAdapater.getYdkFile().getParent().equals(mSettings.getAiDeckDir())) {
File ydk = mDeckAdapater.getYdkFile();
if (ydk == null)
return true;
if (ydk.getParent().equals(mSettings.getAiDeckDir())) {
Toast.makeText(this, R.string.donot_editor_bot_Deck, Toast.LENGTH_SHORT).show();
} else {
DialogPlus builder = new DialogPlus(this);
......@@ -660,15 +663,16 @@ class DeckManagerActivityImpl extends BaseCardsAcitivity implements RecyclerView
builder.setMessage(R.string.question_delete_deck);
builder.setMessageGravity(Gravity.CENTER_HORIZONTAL);
builder.setLeftButtonListener((dlg, rs) -> {
File ydk = mDeckAdapater.getYdkFile();
if (ydk == null) {
if (ydk != null) {
FileUtils.deleteFile(ydk);
dlg.dismiss();
File file = getFirstYdk();
initDecksListSpinners(mDeckSpinner, file);
loadDeckFromFile(file);
} else {
return;
}
FileUtils.deleteFile(ydk);
dlg.dismiss();
File file = getFirstYdk();
initDecksListSpinners(mDeckSpinner, file);
loadDeckFromFile(file);
});
builder.show();
}
......@@ -1092,7 +1096,10 @@ class DeckManagerActivityImpl extends BaseCardsAcitivity implements RecyclerView
@Override
public void onDeckDel(List<DeckFile> deckFileList) {
String currentDeckPath = mDeckAdapater.getYdkFile().getAbsolutePath();
File deck = mDeckAdapater.getYdkFile();
if (deck == null)
return;
String currentDeckPath = deck.getAbsolutePath();
for (DeckFile deckFile : deckFileList) {
if (deckFile.getPath().equals(currentDeckPath)) {
List<File> files = getYdkFiles();
......
......@@ -138,6 +138,9 @@ public class ResCheckTask extends AsyncTask<Void, Integer, Integer> {
setMessage(mContext.getString(R.string.check_things, mContext.getString(R.string.tip_new_deck)));
IOUtils.copyFilesFromAssets(mContext, getDatapath(Constants.CORE_DECK_PATH),
mSettings.getDeckDir(), needsUpdate);
//复制卡包
IOUtils.copyFilesFromAssets(mContext, getDatapath(Constants.CORE_PACK_PATH),
mSettings.get().getPackDeckDir(), needsUpdate);
//复制残局
setMessage(mContext.getString(R.string.check_things, mContext.getString(R.string.single_lua)));
IOUtils.copyFilesFromAssets(mContext, getDatapath(Constants.CORE_SINGLE_PATH),
......@@ -270,6 +273,8 @@ public class ResCheckTask extends AsyncTask<Void, Integer, Integer> {
Constants.CORE_SINGLE_PATH,
//卡组文件夹
Constants.CORE_DECK_PATH,
//pack文件夹
Constants.CORE_PACK_PATH,
//录像文件夹
Constants.CORE_REPLAY_PATH,
//字体文件夹
......
......@@ -7,6 +7,8 @@ import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.Enumeration;
import java.util.List;
import java.util.zip.ZipEntry;
......@@ -47,6 +49,7 @@ public class DeckUtil {
}
}
}
Collections.sort(deckList,nameCom);
return deckList;
}
......@@ -81,8 +84,16 @@ public class DeckUtil {
IOUtils.close(zipFile);
}
}
}
Collections.sort(deckList,nameCom);
return deckList;
}
static Comparator nameCom= new Comparator<DeckFile>() {
@Override
public int compare(DeckFile ydk1, DeckFile ydk2) {
return ydk1.getName().compareTo(ydk2.getName());
}
};
}
......@@ -167,10 +167,11 @@ public class IOUtils {
dir.mkdirs();
}
}
public static void createFolder(File file) {
public static boolean createFolder(File file) {
if (!file.exists()) {
file.mkdirs();
return file.mkdirs();
}
return false;
}
public static void copy(InputStream in, OutputStream out) throws IOException {
......
......@@ -77,29 +77,40 @@ public class YGODialogUtil {
int typeSelectPosition = 2;
int deckSelectPosition = -1;
List<DeckFile> deckList;
if (selectDeckPath != null) {
String name = new File(selectDeckPath).getParentFile().getName();
if (name.equals("pack") || name.equals("cacheDeck")) {
//卡包
typeSelectPosition = 0;
} else if (name.equals("Decks")) {
//ai卡组
typeSelectPosition = 1;
} else if (name.equals("deck") && new File(selectDeckPath).getParentFile().getParentFile().getName().equals(Constants.PREF_DEF_GAME_DIR)) {
//如果是deck并且上一个目录是ygocore的话,保证不会把名字为deck的卡包识别为未分类
typeSelectPosition = 2;
} else {
//其他卡包
for (int i = 3; i < typeList.size(); i++) {
DeckType deckType = typeList.get(i);
if (deckType.getName().equals(name)) {
typeSelectPosition = i;
break;
if (!TextUtils.isEmpty(selectDeckPath)) {
File file = new File(selectDeckPath);
if (file.exists()) {
String name = file.getParentFile().getName();
if (name.equals("pack") || name.equals("cacheDeck")) {
//卡包
typeSelectPosition = 0;
} else if (name.equals("Decks")) {
//ai卡组
typeSelectPosition = 1;
} else if (name.equals("deck") && new File(selectDeckPath).getParentFile().getParentFile().getName().equals(Constants.PREF_DEF_GAME_DIR)) {
//如果是deck并且上一个目录是ygocore的话,保证不会把名字为deck的卡包识别为未分类
} else {
//其他卡包
for (int i = 3; i < typeList.size(); i++) {
DeckType deckType = typeList.get(i);
if (deckType.getName().equals(name)) {
typeSelectPosition = i;
break;
}
}
}
}
}
deckList = DeckUtil.getDeckList(typeList.get(typeSelectPosition).getPath());
if (typeSelectPosition == 0) {
if (AppsSettings.get().isReadExpansions()) {
try {
deckList.addAll(DeckUtil.getExpansionsDeckList());
} catch (IOException e) {
YGOUtil.show("额外卡库加载失败,愿意为" + e);
}
}
}
typeAdp = new TextSelectAdapter<>(typeList, typeSelectPosition);
deckAdp = new TextSelectAdapter<>(deckList, deckSelectPosition);
rv_type.setAdapter(typeAdp);
......@@ -163,6 +174,9 @@ public class YGODialogUtil {
du.dis();
switch (position) {
case 0:
if (deckList.size()>=8){
YGOUtil.show("最多只能有5个自定义分类");
}
DialogPlus builder = new DialogPlus(context);
builder.setTitle(R.string.please_input_category_name);
EditText editText = new EditText(context);
......@@ -180,10 +194,14 @@ public class YGODialogUtil {
return;
}
File file = new File(AppsSettings.get().getDeckDir(), name);
IOUtils.createFolder(file);
typeList.add(new DeckType(name, file.getAbsolutePath()));
typeAdp.notifyItemInserted(typeList.size() - 1);
dlg.dismiss();
if (IOUtils.createFolder(file)) {
typeList.add(new DeckType(name, file.getAbsolutePath()));
typeAdp.notifyItemInserted(typeList.size() - 1);
dlg.dismiss();
} else {
YGOUtil.show("新建分类失败");
}
});
builder.show();
break;
......
......@@ -9,6 +9,8 @@
android:orientation="vertical">
<androidx.appcompat.widget.AppCompatTextView
android:lines="1"
android:ellipsize="end"
android:gravity="center"
android:textColor="@color/white"
android:id="@+id/tv_name"
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment