Commit 18d1e3bd authored by fallenstardust's avatar fallenstardust Committed by GitHub

Merge pull request #203 from jwyxym/master

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