Commit 0bac7691 authored by fallenstardust's avatar fallenstardust

将正式卡密转换成先行卡密

维护在线对照表来解决未及时更新的卡组码转换问题
parent d98e4411
......@@ -2,7 +2,10 @@ package cn.garymb.ygomobile.loader;
import static cn.garymb.ygomobile.Constants.newIDsArray;
import static cn.garymb.ygomobile.Constants.oldIDsArray;
import static cn.garymb.ygomobile.ui.home.HomeActivity.pre_code_list;
import static cn.garymb.ygomobile.ui.home.HomeActivity.released_code_list;
import android.os.Build;
import android.text.TextUtils;
import android.util.Log;
import android.util.SparseArray;
......@@ -20,6 +23,7 @@ import cn.garymb.ygomobile.bean.Deck;
import cn.garymb.ygomobile.bean.DeckInfo;
import cn.garymb.ygomobile.ui.cards.deck.DeckItemType;
import cn.garymb.ygomobile.ui.cards.deck.DeckUtils;
import cn.garymb.ygomobile.ui.home.HomeActivity;
import cn.garymb.ygomobile.utils.IOUtils;
import cn.hutool.core.util.ArrayUtil;
import ocgcore.data.Card;
......@@ -131,6 +135,13 @@ public class DeckLoader {
int code;
isChanged = false;
for (Integer id : deck.getMainlist()) {
if (released_code_list.contains(tmp.get(id).getCode())) {//先查看id对应的卡片密码是否在正式数组中存在
code = pre_code_list.get(released_code_list.indexOf(tmp.get(id).getCode()));//替换成对应先行数组里的code
if (cardLoader.readAllCardCodes().get(code) != null) {//万一他还没下载扩展卡包就不执行否则会空指错误
tmp.remove(id);
tmp.put(id, cardLoader.readAllCardCodes().get(code));
}
}//执行完后变成先行密码,如果constants对照表里存在该密码,则如下又转换一次,确保正式更新后不会出错,最好发布app后必须及时更新在线对照表
if (ArrayUtil.contains(oldIDsArray, tmp.get(id).getCode())) {
code = ArrayUtil.get(newIDsArray, ArrayUtil.indexOf(oldIDsArray, tmp.get(id).getCode()));
tmp.remove(id);
......@@ -141,6 +152,13 @@ public class DeckLoader {
}
tmp = cardLoader.readCards(deck.getExtraList(), true);
for (Integer id : deck.getExtraList()) {
if (released_code_list.contains(tmp.get(id).getCode())) {
code = pre_code_list.get(released_code_list.indexOf(tmp.get(id).getCode()));
if (cardLoader.readAllCardCodes().get(code) != null) {
tmp.remove(id);
tmp.put(id, cardLoader.readAllCardCodes().get(code));
}
}
if (ArrayUtil.contains(oldIDsArray, tmp.get(id).getCode())) {
code = ArrayUtil.get(newIDsArray, ArrayUtil.indexOf(oldIDsArray, tmp.get(id).getCode()));
tmp.remove(id);
......@@ -152,6 +170,13 @@ public class DeckLoader {
tmp = cardLoader.readCards(deck.getSideList(), true);
// Log.i("kk", "desk:" + tmp.size()+"/"+side.size());
for (Integer id : deck.getSideList()) {
if (released_code_list.contains(tmp.get(id).getCode())) {
code = pre_code_list.get(released_code_list.indexOf(tmp.get(id).getCode()));
if (cardLoader.readAllCardCodes().get(code) != null) {
tmp.remove(id);
tmp.put(id, cardLoader.readAllCardCodes().get(code));
}
}
if (ArrayUtil.contains(oldIDsArray, tmp.get(id).getCode())) {
code = ArrayUtil.get(newIDsArray, ArrayUtil.indexOf(oldIDsArray, tmp.get(id).getCode()));
tmp.remove(id);
......@@ -160,6 +185,7 @@ public class DeckLoader {
}
deckInfo.addSideCards(tmp.get(id));
}
Log.w("deck.source",deckInfo.toLongString());
return deckInfo;
}
}
......@@ -96,10 +96,11 @@ public abstract class HomeActivity extends BaseActivity implements BottomNavigat
switch (msg.what) {
case TYPE_GET_VERSION_OK:
Version = msg.obj.toString().substring(0, msg.obj.toString().indexOf("|"));//截取版本号
Cache_link = msg.obj.toString().substring(msg.obj.toString().indexOf("|") + 1, msg.obj.toString().indexOf("\n"));
Cache_pre_release_code = msg.obj.toString().substring(msg.obj.toString().indexOf("\n") + 1);
arrangeCodeList(Cache_pre_release_code);
Log.i(Constants.TAG, Cache_pre_release_code);
Cache_link = msg.obj.toString().substring(msg.obj.toString().indexOf("|") + 1, msg.obj.toString().indexOf("\n"));//截取下载地址
Cache_pre_release_code = msg.obj.toString().substring(msg.obj.toString().indexOf("\n") + 1);//截取先行-正式对照文本
if (!Cache_pre_release_code.isEmpty()) {
arrangeCodeList(Cache_pre_release_code);//转换成两个数组
}
if (!Version.equals(BuildConfig.VERSION_NAME) && !Version.isEmpty() && !Cache_link.isEmpty()) {
DialogPlus dialog = new DialogPlus(getActivity());
dialog.setMessage(R.string.Found_Update);
......@@ -429,10 +430,9 @@ public abstract class HomeActivity extends BaseActivity implements BottomNavigat
}
} catch (Exception e) {
Log.e("读取对照表",e+"");
}finally {
Log.w("读取对照表",pre_code_list.toString());
Log.e("读取对照表",released_code_list.toString());
Log.e(Constants.TAG, e + "");
} finally {
}
}
}
......@@ -35,6 +35,9 @@ import static cn.garymb.ygomobile.Constants.SETTINGS_AVATAR;
import static cn.garymb.ygomobile.Constants.SETTINGS_CARD_BG;
import static cn.garymb.ygomobile.Constants.SETTINGS_COVER;
import static cn.garymb.ygomobile.Constants.URL_HOME_VERSION;
import static cn.garymb.ygomobile.ui.home.HomeActivity.Cache_pre_release_code;
import static cn.garymb.ygomobile.ui.home.HomeActivity.pre_code_list;
import static cn.garymb.ygomobile.ui.home.HomeActivity.released_code_list;
import static cn.garymb.ygomobile.ui.home.ResCheckTask.getDatapath;
import android.annotation.SuppressLint;
......@@ -65,10 +68,12 @@ import com.bumptech.glide.signature.MediaStoreSignature;
import org.greenrobot.eventbus.EventBus;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.StringReader;
import java.util.ArrayList;
import java.util.List;
......@@ -114,6 +119,11 @@ public class SettingFragment extends PreferenceFragmentPlus {
case TYPE_SETTING_GET_VERSION_OK:
Version = msg.obj.toString().substring(0, msg.obj.toString().indexOf("|"));//截取版本号
Cache_link = msg.obj.toString().substring(msg.obj.toString().indexOf("|") + 1);
Cache_link = msg.obj.toString().substring(msg.obj.toString().indexOf("|") + 1, msg.obj.toString().indexOf("\n"));//截取下载地址
Cache_pre_release_code = msg.obj.toString().substring(msg.obj.toString().indexOf("\n") + 1);//截取先行-正式对照文本
if (!Cache_pre_release_code.isEmpty()) {
arrangeCodeList(Cache_pre_release_code);//转换成两个数组
}
if (!Version.equals(BuildConfig.VERSION_NAME) && !Version.isEmpty() && !Cache_link.isEmpty()) {
DialogPlus dialog = new DialogPlus(getActivity());
dialog.setMessage(R.string.Found_Update);
......@@ -662,6 +672,21 @@ public class SettingFragment extends PreferenceFragmentPlus {
return false;
}
}
private void arrangeCodeList(String code) {
BufferedReader br = new BufferedReader(new StringReader(code));
try {
String line;
while ((line = br.readLine()) != null) {
String[] words = line.trim().split("[ ]+");
pre_code_list.add(Integer.valueOf(words[0]));
released_code_list.add(Integer.valueOf(words[1]));
}
} catch (Exception e) {
Log.e(Constants.TAG, e + "");
} finally {
}
}
}
......@@ -2,6 +2,8 @@ package cn.garymb.ygomobile.utils;
import static cn.garymb.ygomobile.Constants.newIDsArray;
import static cn.garymb.ygomobile.Constants.oldIDsArray;
import static cn.garymb.ygomobile.ui.home.HomeActivity.pre_code_list;
import static cn.garymb.ygomobile.ui.home.HomeActivity.released_code_list;
import android.content.Context;
import android.text.TextUtils;
......@@ -224,6 +226,9 @@ public class DeckUtil {
continue;
}
Integer id = Integer.parseInt(line);
if (released_code_list.contains(id)) {//先查看id对应的卡片密码是否在正式数组中存在
id = pre_code_list.get(released_code_list.indexOf(id));//替换成对应先行数组里的code
}//执行完后变成先行密码,如果constants对照表里存在该密码,则如下又转换一次,所以发布app后必须及时更新在线对照表
if (ArrayUtil.contains(oldIDsArray, id)) {
id = ArrayUtil.get(newIDsArray, ArrayUtil.indexOf(oldIDsArray, id));
}
......
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