Commit 355e5ab8 authored by Dark Zane's avatar Dark Zane Committed by GitHub

Merge branch 'fallenstardust:master' into YGOMOBILE-1

parents da003669 de1bdabc
......@@ -656,7 +656,7 @@ bool MenuHandler::OnEvent(const irr::SEvent& event) {
myswprintf(infobuf, L"%ls\n===VS===\n%ls\n", player_names[0].c_str(), player_names[1].c_str());
repinfo.append(infobuf);
mainGame->ebRepStartTurn->setText(L"1");
mainGame->SetStaticText(mainGame->stReplayInfo, 180, mainGame->guiFont, repinfo.c_str());
mainGame->SetStaticText(mainGame->stReplayInfo, 180 * mainGame->xScale, mainGame->guiFont, repinfo.c_str());
break;
}
case LISTBOX_SINGLEPLAY_LIST: {
......
......@@ -1335,7 +1335,7 @@ public class DeckManagerFragment extends BaseFragemnt implements RecyclerViewIte
String fileFullName = deckData.getDeckName() + YDK_FILE_EX;
File dir = new File(getActivity().getApplicationInfo().dataDir, "cache");
//将卡组存到cache缓存目录中
boolean result = DeckSquareFileUtil.saveFileToPath(dir.getPath(), fileFullName, deckData.getDeckYdk(), convertToUnixTimestamp(deckData.getDeckUpdateDate()));
boolean result = DeckSquareFileUtil.saveFileToPath(dir.getPath(), fileFullName, deckData.getDeckYdk(), deckData.getDeckUpdateDate());
if (result) {//存储成功,使用预加载功能
LogUtil.i(TAG, "square deck detail done");
//File file = new File(dir, fileFullName);
......
......@@ -51,7 +51,7 @@ public class DeckManageDialog extends DialogFragment implements YGODeckDialogUti
ViewPager2 viewPager = view.findViewById(R.id.deck_view_pager);
TabLayout tabLayout = view.findViewById(R.id.deck_manager_tab_layout);
viewPager.setUserInputEnabled(false);
viewPager.setUserInputEnabled(true);
// Setup adapter
ViewPagerAdapter adapter = new ViewPagerAdapter(this, mOnDeckMenuListener, this);
viewPager.setAdapter(adapter);
......
......@@ -33,7 +33,7 @@ import ocgcore.data.Card;
public class DeckSquareFileUtil {
//
private static final String TAG = "decksquareApiUtil";
private static final String TAG = "DeckSquareFileUtil";
//将MyOnlineDeckDetail转MyDeckItem类型list,有时候会需要用到
public static List<MyDeckItem> toDeckItemList(List<MyOnlineDeckDetail> serverDecks) {
......@@ -44,7 +44,7 @@ public class DeckSquareFileUtil {
item.setDeckId(detail.getDeckId());
item.setUserId(detail.getUserId());
item.setDeckCoverCard1(detail.getDeckCoverCard1());
item.setUpdateDate(detail.getDeckUpdateDate());
item.setUpdateTimestamp(detail.getDeckUpdateDate());
item.setPublic(detail.isPublic());
myOnlineDecks.add(item);
}
......@@ -74,7 +74,7 @@ public class DeckSquareFileUtil {
}
// userId = Integer.parseInt(line.replaceAll("###", ""));
} catch (NumberFormatException e) {
LogUtil.e(TAG, "integer" + line + "parse error" + e.toString());
LogUtil.e(TAG, "getId(77): integer" + line + "parse error" + e.toString());
}
} else if (line.startsWith("##")) {
......@@ -148,6 +148,12 @@ public class DeckSquareFileUtil {
String deckId = getId(file);
MyDeckItem item = new MyDeckItem();
item.setDeckName(file.getName());
//如果是deck并且上一个目录是ygocore的话,保证不会把名字为deck的卡包识别为未分类
if (file.getParentFile().getName().equals(Constants.CORE_DECK_PATH) && file.getParentFile().getParentFile().getName().equals(Constants.PREF_DEF_GAME_DIR)) {
item.setDeckType("");
} else {
item.setDeckType(file.getParentFile().getName());
}
item.setUpdateTimestamp(file.lastModified());
item.setDeckPath(file.getPath());
if (deckId != null) {
......@@ -216,25 +222,40 @@ public class DeckSquareFileUtil {
public static boolean saveFile(File file, String content, long modificationTime) {
FileOutputStream fos = null;
try {
// 创建文件对象
fos = new FileOutputStream(file);
// 确保父目录存在
File parentDir = file.getParentFile();
if (parentDir != null && !parentDir.exists()) {
boolean dirsCreated = parentDir.mkdirs(); // 创建所有缺失的父目录
if (!dirsCreated) {
LogUtil.e(TAG, "无法创建文件目录: " + parentDir.getAbsolutePath());
return false;
}
}
// 创建文件对象(如果文件不存在,会自动创建)
if (!file.exists()) {
boolean fileCreated = file.createNewFile();
if (!fileCreated) {
LogUtil.e(TAG, "无法创建文件: " + file.getAbsolutePath());
return false;
}
}
// 创建文件输出流
fos = new FileOutputStream(file);
// 写入内容
fos.write(content.getBytes());
fos.write(content.getBytes(StandardCharsets.UTF_8)); // 使用 UTF-8 编码
fos.flush();
// 设置指定的最后修改时间
boolean timeSet = file.setLastModified(modificationTime);
if (!timeSet) {
LogUtil.w(TAG, "设置文件修改时间失败: " + file.getPath());
} else {
LogUtil.w(TAG, "设置文件修改时间成功: " + file.getPath());
LogUtil.d(TAG, "设置文件修改时间成功: " + file.getPath());
}
} catch (Exception e) {
LogUtil.e(TAG, "保存文件失败", e);
e.printStackTrace();
return false;
} finally {
if (fos != null) {
......
package cn.garymb.ygomobile.ui.cards.deck_square;
import static cn.garymb.ygomobile.ui.cards.deck_square.DeckSquareFileUtil.convertToGMTDate;
import android.util.Log;
import android.widget.ImageView;
......@@ -73,7 +75,7 @@ public class DeckSquareListAdapter extends BaseQuickAdapter<OnlineDeckDetail, Ba
protected void convert(BaseViewHolder helper, OnlineDeckDetail item) {
helper.setText(R.id.deck_info_name, item.getDeckName());
helper.setText(R.id.deck_contributor, item.getDeckContributor());
helper.setText(R.id.deck_last_date, item.getLastDate());
helper.setText(R.id.deck_last_date, convertToGMTDate(item.getLastDate()));
helper.setText(R.id.like_count, item.getDeckLike()+"");
ImageView cardImage = helper.getView(R.id.deck_info_image);
long code = item.getDeckCoverCard1();
......
......@@ -36,7 +36,7 @@ import cn.garymb.ygomobile.utils.glide.GlideCompat;
//之后读取平台上的卡组,与本地卡组列表做比较。
public class DeckSquareMyDeckFragment extends Fragment {
private static final String TAG = "seesee";
private static final String TAG = "DeckSquareMyDeckFragment";
private FragmentDeckSquareMyDeckBinding binding;
private MyDeckListAdapter deckListAdapter;
private String keyWord;
......
package cn.garymb.ygomobile.ui.cards.deck_square;
import static cn.garymb.ygomobile.ui.cards.DeckManagerFragment.originalData;
import static cn.garymb.ygomobile.ui.cards.deck_square.DeckSquareFileUtil.convertToGMTDate;
import android.util.Log;
import android.widget.ImageView;
......@@ -156,8 +157,8 @@ public class MyDeckListAdapter extends BaseQuickAdapter<MyOnlineDeckDetail, Base
@Override
protected void convert(BaseViewHolder helper, MyOnlineDeckDetail item) {
helper.setText(R.id.my_deck_name, item.getDeckName());
helper.setText(R.id.deck_update_date, item.getDeckUpdateDate());
helper.setText(R.id.my_deck_name, item.getDeckType().equals("") ? item.getDeckName() : "-"+item.getDeckType()+ "-\n" + item.getDeckName());
helper.setText(R.id.deck_update_date, convertToGMTDate(item.getDeckUpdateDate()));
ImageView cardImage = helper.getView(R.id.deck_info_image);
long code = item.getDeckCoverCard1();
if (item.isPublic()) {
......
......@@ -11,10 +11,11 @@ public class MyOnlineDeckDetail implements Parcelable {
private String deckId;
private String deckContributor;
private String deckName;
private String deckType;
private String deckRank;
private String deckLike;
private String deckUploadDate;
private String deckUpdateDate;
private long deckUploadDate;
private long deckUpdateDate;
private int deckCoverCard1;
private int deckCoverCard2;
private int deckCoverCard3;
......@@ -27,14 +28,15 @@ public class MyOnlineDeckDetail implements Parcelable {
private boolean isDelete;
protected MyOnlineDeckDetail(Parcel in) {
public MyOnlineDeckDetail(Parcel in) {
deckId = in.readString();
deckContributor = in.readString();
deckName = in.readString();
deckType = in.readString();
deckRank = in.readString();
deckLike = in.readString();
deckUploadDate = in.readString();
deckUpdateDate = in.readString();
deckUploadDate = in.readLong();
deckUpdateDate = in.readLong();
deckCoverCard1 = in.readInt();
deckCoverCard2 = in.readInt();
deckCoverCard3 = in.readInt();
......@@ -69,10 +71,11 @@ public class MyOnlineDeckDetail implements Parcelable {
dest.writeString(deckId);
dest.writeString(deckContributor);
dest.writeString(deckName);
dest.writeString(deckType);
dest.writeString(deckRank);
dest.writeString(deckLike);
dest.writeString(deckUploadDate);
dest.writeString(deckUpdateDate);
dest.writeLong(deckUploadDate);
dest.writeLong(deckUpdateDate);
dest.writeInt(deckCoverCard1);
dest.writeInt(deckCoverCard2);
dest.writeInt(deckCoverCard3);
......@@ -110,6 +113,14 @@ public class MyOnlineDeckDetail implements Parcelable {
this.deckName = deckName;
}
public void setDeckType(String deckType) {
this.deckType = deckType;
}
public String getDeckType() {
return deckType;
}
public String getDeckRank() {
return deckRank;
}
......@@ -126,19 +137,19 @@ public class MyOnlineDeckDetail implements Parcelable {
this.deckLike = deckLike;
}
public String getDeckUploadDate() {
public long getDeckUploadDate() {
return deckUploadDate;
}
public void setDeckUploadDate(String deckUploadDate) {
public void setDeckUploadDate(long deckUploadDate) {
this.deckUploadDate = deckUploadDate;
}
public String getDeckUpdateDate() {
public long getDeckUpdateDate() {
return deckUpdateDate;
}
public void setDeckUpdateDate(String deckUpdateDate) {
public void setDeckUpdateDate(long deckUpdateDate) {
this.deckUpdateDate = deckUpdateDate;
}
......
......@@ -16,7 +16,7 @@ public class OnlineDeckDetail implements Parcelable {
private int deckCoverCard3;
private int deckCase;
private int deckProtector;
private String lastDate;
private long lastDate;
private int userId;
......@@ -30,7 +30,7 @@ public class OnlineDeckDetail implements Parcelable {
deckCoverCard3 = in.readInt();
deckCase = in.readInt();
deckProtector = in.readInt();
lastDate = in.readString();
lastDate = in.readLong();
userId = in.readInt();
}
......@@ -62,7 +62,7 @@ public class OnlineDeckDetail implements Parcelable {
dest.writeInt(deckCoverCard3);
dest.writeInt(deckCase);
dest.writeInt(deckProtector);
dest.writeString(lastDate);
dest.writeLong(lastDate);
dest.writeInt(userId);
}
......@@ -138,11 +138,9 @@ public class OnlineDeckDetail implements Parcelable {
this.deckProtector = deckProtector;
}
public String getLastDate() {
return lastDate;
}
public long getLastDate() {return lastDate;}
public void setLastDate(String lastDate) {
public void setLastDate(long lastDate) {
this.lastDate = lastDate;
}
......
......@@ -39,11 +39,13 @@ public class PushMultiDeck {
public static class DeckData {
private String deckId;
private String deckName;
private String deckType;
private Integer deckCoverCard1 = 0;
private Integer deckCoverCard2 = 0;
private Integer deckCoverCard3 = 0;
private Integer deckCase = 0;
private Integer deckProtector = 0;
private long timestamp = 0;
private String deckYdk;
public String getDeckId() {
......@@ -62,6 +64,14 @@ public class PushMultiDeck {
this.deckName = deckName;
}
public String getDeckType() {
return deckType;
}
public void setDeckType(String deckType) {
this.deckType = deckType;
}
public Integer getDeckCoverCard1() {
return deckCoverCard1;
}
......@@ -102,6 +112,14 @@ public class PushMultiDeck {
this.deckProtector = deckProtector;
}
public long getDeckUpdateTime() {
return timestamp;
}
public void setDeckUpdateTime(long deckUpdateTime) {
this.timestamp = deckUpdateTime;
}
public String getDeckYdk() {
return deckYdk;
}
......
......@@ -33,6 +33,7 @@ public class PushSingleDeck {
public static class DeckData {
private String deckId;
private String deckName;
private String deckType;
private Integer deckCoverCard1 = 0;
private Integer deckCoverCard2 = 0;
private Integer deckCoverCard3 = 0;
......@@ -57,6 +58,14 @@ public class PushSingleDeck {
this.deckName = deckName;
}
public String getDeckType() {
return deckType;
}
public void setDeckType(String deckType) {
this.deckType = deckType;
}
public Integer getDeckCoverCard1(Integer firstCode) {
return deckCoverCard1;
}
......
......@@ -5,11 +5,13 @@ public class MyDeckItem {
private int idUploaded;
private int userId;
private String deckName;
private String deckType;
private String deckId;
private String updateDate;
private long updateTimestamp;
private String deckPath;//本地卡组时,存储卡组路径
......@@ -42,20 +44,20 @@ public class MyDeckItem {
this.deckName = deckName;
}
public String getDeckId() {
return deckId;
public String getDeckType() {
return deckType;
}
public void setDeckId(String deckId) {
this.deckId = deckId;
public void setDeckType(String deckType) {
this.deckType = deckType;
}
public String getUpdateDate() {
return updateDate;
public String getDeckId() {
return deckId;
}
public void setUpdateDate(String updateDate) {
this.updateDate = updateDate;
public void setDeckId(String deckId) {
this.deckId = deckId;
}
public long getUpdateTimestamp() {
......@@ -97,8 +99,8 @@ public class MyDeckItem {
"idUploaded=" + idUploaded +
", userId=" + userId +
", deckName='" + deckName + '\'' +
", deckType='" + deckType + '\'' +
", deckId='" + deckId + '\'' +
", updateDate='" + updateDate + '\'' +
", updateTimestamp=" + updateTimestamp +
", deckPath='" + deckPath + '\'' +
", deckCoverCard1=" + deckCoverCard1 +
......
package cn.garymb.ygomobile.ui.cards.deck_square.bo;
import java.util.ArrayList;
import java.util.List;
import cn.garymb.ygomobile.ui.cards.deck_square.api_response.MyOnlineDeckDetail;
import cn.garymb.ygomobile.ui.cards.deck_square.api_response.PushMultiResponse;
import cn.garymb.ygomobile.ui.cards.deck_square.api_response.PushSingleDeckResponse;
public class SyncMutliDeckResult {
boolean flag = false;
String info = null;
public PushMultiResponse pushResponse;
public List<MyDeckItem> syncUpload;//用于记录已推送的卡组
public List<MyDeckItem> newUpload;//用于记录第一次推送到云的卡组
public List<MyDeckItem> syncDownload;//用于记录已推送的卡组
public List<MyOnlineDeckDetail> newDownload;
public List<DownloadResult> downloadResponse;
public static class DownloadResult {
boolean flag;
String deckId;
String info;
public DownloadResult(boolean flag, String deckId) {
this.flag = flag;
this.deckId = deckId;
}
public DownloadResult(boolean flag, String deckId, String info) {
this.flag = flag;
this.deckId = deckId;
this.info = info;
}
}
public SyncMutliDeckResult() {
flag = true;
downloadResponse = new ArrayList<>();
newDownload = new ArrayList<>();
syncUpload = new ArrayList<>();
newUpload = new ArrayList<>();
syncDownload = new ArrayList<>();
}
public SyncMutliDeckResult(boolean flag, String info) {
this.flag = flag;
this.info = info;
downloadResponse = new ArrayList<>();
newDownload = new ArrayList<>();
syncUpload = new ArrayList<>();
newUpload = new ArrayList<>();
syncDownload = new ArrayList<>();
}
public boolean isFlag() {
return flag;
}
public void setFlag(boolean flag) {
this.flag = flag;
}
public String getInfo() {
return info;
}
public void setInfo(String info) {
this.info = info;
}
public String getMessage() {
String info = "sync decks: " + syncUpload.size() + ", push new:" + newUpload.size() + ", download " + newDownload.size();
return info;
}
}
package cn.garymb.ygomobile.ui.cards.deck_square.bo;
import java.util.List;
public class UserDeckIds {
public List<String> deckId;
}
......@@ -29,7 +29,7 @@ public class OkhttpUtil {
.readTimeout(30, TimeUnit.SECONDS)
.writeTimeout(30, TimeUnit.SECONDS)
// keep-alive and connection pool defaults
.connectionPool(new ConnectionPool(2, 20, TimeUnit.SECONDS))
.connectionPool(new ConnectionPool(2, 40, TimeUnit.SECONDS))
.build();
......
......@@ -379,7 +379,7 @@
<string name="register">注册萌卡</string>
<string name="sign_out">切换账号</string>
<string name="deck_square">卡组广场</string>
<string name="my_deck_online">备份</string>
<string name="my_deck_online">在线备份</string>
<string name="input_contributor_name">输入共享者名称</string>
<string name="sort_by_time">按时间顺序</string>
<string name="sort_by_thumb">按点赞顺序</string>
......
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