Commit a88b350e authored by feihuaduo's avatar feihuaduo

gradle版本更新到7.1.2

修复卡组码不完整时打开卡组崩溃的问题
parent 4ac0243d
...@@ -9,7 +9,7 @@ buildscript { ...@@ -9,7 +9,7 @@ buildscript {
google() google()
} }
dependencies { dependencies {
classpath 'com.android.tools.build:gradle:7.0.4' classpath 'com.android.tools.build:gradle:7.1.2'
classpath 'com.android.tools.build:gradle-experimental:0.11.1' classpath 'com.android.tools.build:gradle-experimental:0.11.1'
//classpath 'me.tatarka:gradle-retrolambda:3.2.5' //classpath 'me.tatarka:gradle-retrolambda:3.2.5'
} }
......
...@@ -3,4 +3,4 @@ distributionBase=GRADLE_USER_HOME ...@@ -3,4 +3,4 @@ distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-7.0.2-all.zip distributionUrl=https\://services.gradle.org/distributions/gradle-7.2-all.zip
...@@ -246,6 +246,9 @@ public class GameUriManager { ...@@ -246,6 +246,9 @@ public class GameUriManager {
} else { } else {
Deck deckInfo = new Deck(uri); Deck deckInfo = new Deck(uri);
File file = deckInfo.saveTemp(AppsSettings.get().getDeckDir()); File file = deckInfo.saveTemp(AppsSettings.get().getDeckDir());
if (!deckInfo.isCompleteDeck()){
YGOUtil.show("当前卡组缺少完整信息,将只显示已有卡片");
}
DeckManagerActivity.start(activity, file.getAbsolutePath()); DeckManagerActivity.start(activity, file.getAbsolutePath());
} }
} else if (Constants.URI_ROOM.equals(host)) { } else if (Constants.URI_ROOM.equals(host)) {
......
...@@ -51,6 +51,7 @@ public class Deck implements Parcelable { ...@@ -51,6 +51,7 @@ public class Deck implements Parcelable {
private final ArrayList<Integer> extraList; private final ArrayList<Integer> extraList;
private final ArrayList<Integer> sideList; private final ArrayList<Integer> sideList;
private String name; private String name;
private boolean isCompleteDeck = true;
public Deck() { public Deck() {
mainlist = new ArrayList<>(); mainlist = new ArrayList<>();
...@@ -124,10 +125,10 @@ public class Deck implements Parcelable { ...@@ -124,10 +125,10 @@ public class Deck implements Parcelable {
case YGO_DECK_PROTOCOL_1: case YGO_DECK_PROTOCOL_1:
String deck = uri.getQueryParameter(QUERY_DECK); String deck = uri.getQueryParameter(QUERY_DECK);
deck=deck.replace("-","+"); deck = deck.replace("-", "+");
deck=deck.replace("_","/"); deck = deck.replace("_", "/");
byte[] bytes = Base64.decode(deck, Base64.NO_WRAP); byte[] bytes = Base64.decode(deck, Base64.NO_WRAP);
Log.e("Deck",deck.length()+"字符位数"+bytes.length); Log.e("Deck", deck.length() + "字符位数" + bytes.length);
String[] bits = new String[bytes.length * 8]; String[] bits = new String[bytes.length * 8];
for (int i = 0; i < bytes.length; i++) { for (int i = 0; i < bytes.length; i++) {
...@@ -135,12 +136,12 @@ public class Deck implements Parcelable { ...@@ -135,12 +136,12 @@ public class Deck implements Parcelable {
String b = Integer.toBinaryString(bytes[i]); String b = Integer.toBinaryString(bytes[i]);
b = YGOUtil.toNumLength(b, 8); b = YGOUtil.toNumLength(b, 8);
if (b.length()>8) if (b.length() > 8)
b=b.substring(b.length()-8); b = b.substring(b.length() - 8);
if (i<8) if (i < 8)
Log.e("Deck",b+" byte:"+bytes[i]); Log.e("Deck", b + " byte:" + bytes[i]);
for (int x = 0; x < 8; x++) for (int x = 0; x < 8; x++)
bits[i*8+x] = b.substring(x, x + 1); bits[i * 8 + x] = b.substring(x, x + 1);
} }
bits = YGOUtil.toNumLength(bits, 16); bits = YGOUtil.toNumLength(bits, 16);
...@@ -149,18 +150,22 @@ public class Deck implements Parcelable { ...@@ -149,18 +150,22 @@ public class Deck implements Parcelable {
int eNum = Integer.valueOf(YGOUtil.getArrayString(bits, 8, 12), 2); int eNum = Integer.valueOf(YGOUtil.getArrayString(bits, 8, 12), 2);
int sNum = Integer.valueOf(YGOUtil.getArrayString(bits, 12, 16), 2); int sNum = Integer.valueOf(YGOUtil.getArrayString(bits, 12, 16), 2);
try { try {
FileLogUtil.write("种类数量"+mNum+" "+eNum+" "+sNum+" "); FileLogUtil.write("种类数量" + mNum + " " + eNum + " " + sNum + " ");
FileLogUtil.write("m:"+YGOUtil.getArrayString(bits, 0, 8)); FileLogUtil.write("m:" + YGOUtil.getArrayString(bits, 0, 8));
FileLogUtil.write("s:"+YGOUtil.getArrayString(bits, 8, 12)); FileLogUtil.write("s:" + YGOUtil.getArrayString(bits, 8, 12));
FileLogUtil.write("e:"+YGOUtil.getArrayString(bits, 12, 16)); FileLogUtil.write("e:" + YGOUtil.getArrayString(bits, 12, 16));
} catch (IOException e) { } catch (IOException e) {
e.printStackTrace(); e.printStackTrace();
} }
Log.e("Deck","种类数量"+mNum+" "+eNum+" "+sNum+" "); Log.e("Deck", "种类数量" + mNum + " " + eNum + " " + sNum + " ");
Log.e("Deck","m:"+YGOUtil.getArrayString(bits, 0, 8)); Log.e("Deck", "m:" + YGOUtil.getArrayString(bits, 0, 8));
Log.e("Deck","e:"+YGOUtil.getArrayString(bits, 8, 12)); Log.e("Deck", "e:" + YGOUtil.getArrayString(bits, 8, 12));
Log.e("Deck","s:"+YGOUtil.getArrayString(bits, 12, 16)); Log.e("Deck", "s:" + YGOUtil.getArrayString(bits, 12, 16));
if (bits.length < (16 + (mNum * 29))) {
mNum = (bits.length - 16) / 29;
isCompleteDeck = false;
}
for (int i = 0; i < mNum; i++) { for (int i = 0; i < mNum; i++) {
int cStart = 16 + (i * 29); int cStart = 16 + (i * 29);
int cardNum = Integer.valueOf(YGOUtil.getArrayString(bits, cStart, cStart + 2), 2); int cardNum = Integer.valueOf(YGOUtil.getArrayString(bits, cStart, cStart + 2), 2);
...@@ -169,16 +174,28 @@ public class Deck implements Parcelable { ...@@ -169,16 +174,28 @@ public class Deck implements Parcelable {
mainlist.add(cardId); mainlist.add(cardId);
} }
} }
if (!isCompleteDeck)
return;
if (bits.length < (16 + mNum * 29 + (eNum * 29))) {
eNum = (bits.length - 16 - (mNum * 29)) / 29;
isCompleteDeck = false;
}
for (int i = 0; i < eNum; i++) { for (int i = 0; i < eNum; i++) {
int cStart = 16 + mNum * 29 + (i * 29); int cStart = 16 + mNum * 29 + (i * 29);
int cardNum = Integer.valueOf(YGOUtil.getArrayString(bits, cStart, cStart + 2), 2); int cardNum = Integer.valueOf(YGOUtil.getArrayString(bits, cStart, cStart + 2), 2);
Log.e("DeckSetting", eNum + " 当前 " + i + " " + cStart);
int cardId = Integer.valueOf(YGOUtil.getArrayString(bits, cStart + 2, cStart + 29), 2); int cardId = Integer.valueOf(YGOUtil.getArrayString(bits, cStart + 2, cStart + 29), 2);
for (int x = 0; x < cardNum; x++) { for (int x = 0; x < cardNum; x++) {
extraList.add(cardId); extraList.add(cardId);
} }
} }
if (!isCompleteDeck)
return;
if (bits.length < (16 + mNum * 29 + (eNum * 29) + (sNum * 29))) {
sNum = (bits.length - 16 - (mNum * 29) - (eNum * 29)) / 29;
isCompleteDeck = false;
}
for (int i = 0; i < sNum; i++) { for (int i = 0; i < sNum; i++) {
int cStart = 16 + mNum * 29 + eNum * 29 + (i * 29); int cStart = 16 + mNum * 29 + eNum * 29 + (i * 29);
int cardNum = Integer.valueOf(YGOUtil.getArrayString(bits, cStart, cStart + 2), 2); int cardNum = Integer.valueOf(YGOUtil.getArrayString(bits, cStart, cStart + 2), 2);
...@@ -229,6 +246,9 @@ public class Deck implements Parcelable { ...@@ -229,6 +246,9 @@ public class Deck implements Parcelable {
return idNum; return idNum;
} }
public boolean isCompleteDeck() {
return isCompleteDeck;
}
private int[] toIdAndNum0(String m) { private int[] toIdAndNum0(String m) {
//元素0为卡密,元素1为卡片数量 //元素0为卡密,元素1为卡片数量
...@@ -285,20 +305,20 @@ public class Deck implements Parcelable { ...@@ -285,20 +305,20 @@ public class Deck implements Parcelable {
e = YGOUtil.toNumLength(e, 4); e = YGOUtil.toNumLength(e, 4);
s = YGOUtil.toNumLength(s, 4); s = YGOUtil.toNumLength(s, 4);
Log.e("Deck","分享数量"+mNum+" "+eNum+" "+sNum); Log.e("Deck", "分享数量" + mNum + " " + eNum + " " + sNum);
deck = m + e + s + deck; deck = m + e + s + deck;
byte[] bytes=YGOUtil.toBytes(deck); byte[] bytes = YGOUtil.toBytes(deck);
String message = Base64.encodeToString(bytes, Base64.NO_WRAP); String message = Base64.encodeToString(bytes, Base64.NO_WRAP);
Log.e("Deck",message.length()+" 转换时位数 "+bytes.length); Log.e("Deck", message.length() + " 转换时位数 " + bytes.length);
message=message.replace("+","-"); message = message.replace("+", "-");
message=message.replace("/","_"); message = message.replace("/", "_");
message=message.replace("=",""); message = message.replace("=", "");
Log.e("Deck","转换后数据"+message); Log.e("Deck", "转换后数据" + message);
for (int i=0;i<8;i++){ for (int i = 0; i < 8; i++) {
} }
uri.appendQueryParameter(QUERY_DECK,message); uri.appendQueryParameter(QUERY_DECK, message);
return uri.build(); return uri.build();
} }
...@@ -307,7 +327,7 @@ Log.e("Deck",message.length()+" 转换时位数 "+bytes.length); ...@@ -307,7 +327,7 @@ Log.e("Deck",message.length()+" 转换时位数 "+bytes.length);
String mains = tobyte(mainlist, mNum); String mains = tobyte(mainlist, mNum);
String extras = tobyte(extraList, eNum); String extras = tobyte(extraList, eNum);
String sides = tobyte(sideList, sNum); String sides = tobyte(sideList, sNum);
String message = mains+extras+sides; String message = mains + extras + sides;
return message; return message;
} }
...@@ -339,7 +359,7 @@ Log.e("Deck",message.length()+" 转换时位数 "+bytes.length); ...@@ -339,7 +359,7 @@ Log.e("Deck",message.length()+" 转换时位数 "+bytes.length);
} }
private String tobyte(List<Integer> ids, int typeNum) { private String tobyte(List<Integer> ids, int typeNum) {
String bytes=""; String bytes = "";
for (int i = 0; i < ids.size(); i++) { for (int i = 0; i < ids.size(); i++) {
Integer id = ids.get(i); Integer id = ids.get(i);
if (id > 0) { if (id > 0) {
...@@ -367,19 +387,19 @@ Log.e("Deck",message.length()+" 转换时位数 "+bytes.length); ...@@ -367,19 +387,19 @@ Log.e("Deck",message.length()+" 转换时位数 "+bytes.length);
tNum = Math.min(3, tNum); tNum = Math.min(3, tNum);
switch (tNum) { switch (tNum) {
case 1: case 1:
idB="01"+idB; idB = "01" + idB;
break; break;
case 2: case 2:
idB="10"+idB; idB = "10" + idB;
break; break;
case 3: case 3:
idB="11"+idB; idB = "11" + idB;
break; break;
} }
} else { } else {
idB="01"+idB; idB = "01" + idB;
} }
bytes+=idB; bytes += idB;
} }
} }
return bytes; return bytes;
......
...@@ -607,6 +607,9 @@ public abstract class HomeActivity extends BaseActivity implements NavigationVie ...@@ -607,6 +607,9 @@ public abstract class HomeActivity extends BaseActivity implements NavigationVie
if (isUrl) { if (isUrl) {
Deck deckInfo = new Deck(getString(R.string.rename_deck) + System.currentTimeMillis(), Uri.parse(deckMessage)); Deck deckInfo = new Deck(getString(R.string.rename_deck) + System.currentTimeMillis(), Uri.parse(deckMessage));
File file = deckInfo.saveTemp(AppsSettings.get().getDeckDir()); File file = deckInfo.saveTemp(AppsSettings.get().getDeckDir());
if (!deckInfo.isCompleteDeck()){
YGOUtil.show("当前卡组缺少完整信息,将只显示已有卡片");
}
DeckManagerActivity.start(this, file.getAbsolutePath()); DeckManagerActivity.start(this, file.getAbsolutePath());
} else { } else {
//如果是卡组文本 //如果是卡组文本
......
...@@ -50,6 +50,7 @@ import cn.garymb.ygomobile.ui.cards.deck.DeckUtils; ...@@ -50,6 +50,7 @@ import cn.garymb.ygomobile.ui.cards.deck.DeckUtils;
import cn.garymb.ygomobile.ui.home.MainActivity; import cn.garymb.ygomobile.ui.home.MainActivity;
import cn.garymb.ygomobile.ui.home.ServerListManager; import cn.garymb.ygomobile.ui.home.ServerListManager;
import cn.garymb.ygomobile.ui.plus.VUiKit; import cn.garymb.ygomobile.ui.plus.VUiKit;
import cn.garymb.ygomobile.utils.YGOUtil;
public class DuelAssistantService extends Service implements OnDuelAssistantListener { public class DuelAssistantService extends Service implements OnDuelAssistantListener {
...@@ -228,6 +229,9 @@ public class DuelAssistantService extends Service implements OnDuelAssistantList ...@@ -228,6 +229,9 @@ public class DuelAssistantService extends Service implements OnDuelAssistantList
if (isUrl) { if (isUrl) {
Deck deckInfo = new Deck(getString(R.string.rename_deck) + System.currentTimeMillis(), Uri.parse(deckMessage)); Deck deckInfo = new Deck(getString(R.string.rename_deck) + System.currentTimeMillis(), Uri.parse(deckMessage));
File file = deckInfo.saveTemp(AppsSettings.get().getDeckDir()); File file = deckInfo.saveTemp(AppsSettings.get().getDeckDir());
if (!deckInfo.isCompleteDeck()){
YGOUtil.show("当前卡组缺少完整信息,将只显示已有卡片");
}
DeckManagerActivity.start(DuelAssistantService.this, file.getAbsolutePath()); DeckManagerActivity.start(DuelAssistantService.this, file.getAbsolutePath());
} else { } else {
//如果是卡组文本 //如果是卡组文本
......
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