Commit e2a824ae authored by xiaoye's avatar xiaoye

保存/读取卡组id

在deck、deckInfo类下都增加了deckId属性

新建卡组保留卡片时不会复制id

未完成:复制卡组会复制到id
parent b1551036
...@@ -44,6 +44,11 @@ public class Deck implements Parcelable { ...@@ -44,6 +44,11 @@ public class Deck implements Parcelable {
*/ */
private boolean isCompleteDeck = true; private boolean isCompleteDeck = true;
/**
* 卡组广场用的卡组id,可以为空
*/
public String deckId = null;
public Deck() { public Deck() {
mainlist = new ArrayList<>(); mainlist = new ArrayList<>();
extraList = new ArrayList<>(); extraList = new ArrayList<>();
...@@ -69,7 +74,6 @@ public class Deck implements Parcelable { ...@@ -69,7 +74,6 @@ public class Deck implements Parcelable {
this.name = name; this.name = name;
} }
protected Deck(Parcel in) { protected Deck(Parcel in) {
this.name = in.readString(); this.name = in.readString();
this.mainlist = new ArrayList<Integer>(); this.mainlist = new ArrayList<Integer>();
...@@ -190,4 +194,8 @@ public class Deck implements Parcelable { ...@@ -190,4 +194,8 @@ public class Deck implements Parcelable {
dest.writeList(this.extraList); dest.writeList(this.extraList);
dest.writeList(this.sideList); dest.writeList(this.sideList);
} }
public void setId(String id) {
deckId = id;
}
} }
...@@ -29,6 +29,8 @@ public class DeckInfo { ...@@ -29,6 +29,8 @@ public class DeckInfo {
private int mainCount, extraCount, sideCount; private int mainCount, extraCount, sideCount;
public String deckId = null;//当前的卡组id(卡组广场)
public DeckInfo() { public DeckInfo() {
mainCards = new ArrayList<>(); mainCards = new ArrayList<>();
extraCards = new ArrayList<>(); extraCards = new ArrayList<>();
...@@ -353,4 +355,8 @@ public class DeckInfo { ...@@ -353,4 +355,8 @@ public class DeckInfo {
} }
return allCards; return allCards;
} }
public void setId(String id) {
deckId = id;
}
} }
...@@ -70,6 +70,10 @@ public class DeckLoader { ...@@ -70,6 +70,10 @@ public class DeckLoader {
type = DeckItemType.MainCard; type = DeckItemType.MainCard;
} else if (line.startsWith("#extra")) { } else if (line.startsWith("#extra")) {
type = DeckItemType.ExtraCard; type = DeckItemType.ExtraCard;
} else if (line.startsWith("##")) {
line = line.trim().substring(2);
if (line.length() > 0)
deck.setId(line);
} else { } else {
type = DeckItemType.Pack; type = DeckItemType.Pack;
} }
...@@ -132,6 +136,8 @@ public class DeckLoader { ...@@ -132,6 +136,8 @@ public class DeckLoader {
SparseArray<Card> tmp = cardLoader.readCards(deck.getMainlist(), true); SparseArray<Card> tmp = cardLoader.readCards(deck.getMainlist(), true);
int code; int code;
isChanged = false; isChanged = false;
if (deck.deckId != null)
deckInfo.setId(deck.deckId);
for (Integer id : deck.getMainlist()) { for (Integer id : deck.getMainlist()) {
if (tmp.get(id) != null) { if (tmp.get(id) != null) {
if (released_code_list.contains(tmp.get(id).getCode())) {//先查看id对应的卡片密码是否在正式数组中存在 if (released_code_list.contains(tmp.get(id).getCode())) {//先查看id对应的卡片密码是否在正式数组中存在
......
...@@ -1603,7 +1603,7 @@ public class DeckManagerFragment extends BaseFragemnt implements RecyclerViewIte ...@@ -1603,7 +1603,7 @@ public class DeckManagerFragment extends BaseFragemnt implements RecyclerViewIte
boolean ret = ydk.createNewFile(); boolean ret = ydk.createNewFile();
} catch (Throwable ignore) { } catch (Throwable ignore) {
} }
save(ydk); save(ydk, true);
loadDeckFromFile(ydk); loadDeckFromFile(ydk);
} }
} else { } else {
...@@ -1613,12 +1613,12 @@ public class DeckManagerFragment extends BaseFragemnt implements RecyclerViewIte ...@@ -1613,12 +1613,12 @@ public class DeckManagerFragment extends BaseFragemnt implements RecyclerViewIte
builder.show(); builder.show();
} }
private void save(File ydk) { private void save(File ydk, boolean withoutId) {
if (mDeckAdapater.save(ydk)) { YGOUtil.showTextToast(mDeckAdapater.save(ydk, withoutId) ? R.string.save_tip_ok : R.string.save_tip_fail);
YGOUtil.showTextToast(R.string.save_tip_ok);
} else {
YGOUtil.showTextToast(R.string.save_tip_fail);
} }
private void save(File ydk) {
save(ydk, false);
} }
private void initBoomMenuButton(BoomMenuButton menu) { private void initBoomMenuButton(BoomMenuButton menu) {
......
...@@ -68,6 +68,7 @@ public class DeckAdapater extends RecyclerView.Adapter<DeckViewHolder> implement ...@@ -68,6 +68,7 @@ public class DeckAdapater extends RecyclerView.Adapter<DeckViewHolder> implement
private boolean showHead = false; private boolean showHead = false;
private String mDeckMd5; private String mDeckMd5;
private DeckInfo mDeckInfo; private DeckInfo mDeckInfo;
private String deckId = null;
public DeckAdapater(Context context, RecyclerView recyclerView, ImageLoader imageLoader) { public DeckAdapater(Context context, RecyclerView recyclerView, ImageLoader imageLoader) {
this.context = context; this.context = context;
...@@ -446,10 +447,10 @@ public class DeckAdapater extends RecyclerView.Adapter<DeckViewHolder> implement ...@@ -446,10 +447,10 @@ public class DeckAdapater extends RecyclerView.Adapter<DeckViewHolder> implement
return DeckLoader.readDeck(cardLoader, file); return DeckLoader.readDeck(cardLoader, file);
} }
public boolean save(File file) { public boolean save(File file, boolean withoutId) {
//保存了,记录状态 //保存了,记录状态
mDeckMd5 = DeckItemUtils.makeMd5(mItems); mDeckMd5 = DeckItemUtils.makeMd5(mItems);
return DeckItemUtils.save(mItems, file); return DeckItemUtils.save(mItems, withoutId ? null : deckId, file);
} }
public Deck toDeck(File file) { public Deck toDeck(File file) {
...@@ -461,6 +462,7 @@ public class DeckAdapater extends RecyclerView.Adapter<DeckViewHolder> implement ...@@ -461,6 +462,7 @@ public class DeckAdapater extends RecyclerView.Adapter<DeckViewHolder> implement
} }
private void loadData(DeckInfo deckInfo, boolean isPack) { private void loadData(DeckInfo deckInfo, boolean isPack) {
deckId = null;
mCount.clear(); mCount.clear();
mMainCount = 0; mMainCount = 0;
mExtraCount = 0; mExtraCount = 0;
...@@ -659,4 +661,8 @@ public class DeckAdapater extends RecyclerView.Adapter<DeckViewHolder> implement ...@@ -659,4 +661,8 @@ public class DeckAdapater extends RecyclerView.Adapter<DeckViewHolder> implement
public int getItemCount() { public int getItemCount() {
return mItems.size(); return mItems.size();
} }
public void setId(String id) {
deckId = id;
}
} }
...@@ -117,7 +117,7 @@ class DeckItemUtils { ...@@ -117,7 +117,7 @@ class DeckItemUtils {
* @param file 原有file * @param file 原有file
* @return 如果file为null,返回false * @return 如果file为null,返回false
*/ */
public static boolean save(List<DeckItem> items, File file) { public static boolean save(List<DeckItem> items, String deck_id, File file) {
FileOutputStream outputStream = null; FileOutputStream outputStream = null;
OutputStreamWriter writer = null; OutputStreamWriter writer = null;
try { try {
...@@ -164,6 +164,8 @@ class DeckItemUtils { ...@@ -164,6 +164,8 @@ class DeckItemUtils {
writer.write(("\n" + cardInfo.Code).toCharArray()); writer.write(("\n" + cardInfo.Code).toCharArray());
} }
} }
if (deck_id != null)
writer.write(("\n##" + deck_id).toCharArray());
writer.flush(); writer.flush();
outputStream.flush(); outputStream.flush();
} catch (IOException e) { } catch (IOException e) {
...@@ -178,6 +180,8 @@ class DeckItemUtils { ...@@ -178,6 +180,8 @@ class DeckItemUtils {
public static void makeItems(DeckInfo deckInfo, boolean isPack, DeckAdapater adapater) { public static void makeItems(DeckInfo deckInfo, boolean isPack, DeckAdapater adapater) {
if (deckInfo != null) { if (deckInfo != null) {
if (deckInfo.deckId != null)
adapater.setId(deckInfo.deckId);
DeckItem.resetLabel(deckInfo, isPack); DeckItem.resetLabel(deckInfo, isPack);
adapater.addItem(new DeckItem(DeckItemType.MainLabel)); adapater.addItem(new DeckItem(DeckItemType.MainLabel));
List<Card> main = deckInfo.getMainCards(); List<Card> main = deckInfo.getMainCards();
......
...@@ -62,6 +62,8 @@ public class DeckUtils { ...@@ -62,6 +62,8 @@ public class DeckUtils {
for (Card card : deck.getSideCards()) { for (Card card : deck.getSideCards()) {
writer.write(("\n" + card.Code).toCharArray()); writer.write(("\n" + card.Code).toCharArray());
} }
if (deck.deckId != null)
writer.write(("\n##" + deck.deckId).toCharArray());
writer.flush(); writer.flush();
outputStream.flush(); outputStream.flush();
} catch (IOException e) { } catch (IOException e) {
......
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