Commit edcda087 authored by SherryChaos's avatar SherryChaos

online deck bug fix

parent 04e91b0f
This source diff could not be displayed because it is too large. You can view the blob instead.
......@@ -57,8 +57,8 @@ namespace MDPro3.Duel.YGOSharp
Grave = 1100001;
Stand = 1110001;
Mate = 1000001;
string st = ydk.Replace("\r", "");
string[] lines = st.Split(new string[] { "\n" }, StringSplitOptions.RemoveEmptyEntries);
string st = ydk.Replace("\r", string.Empty).Replace("\\r", string.Empty).Replace("\\n", "\n");
string[] lines = st.Split("\n", StringSplitOptions.RemoveEmptyEntries);
int flag = -1;
foreach (string line in lines)
......@@ -278,7 +278,7 @@ namespace MDPro3.Duel.YGOSharp
{
var path = Program.PATH_DECK + deckName + Program.EXPANSION_YDK;
File.WriteAllText(path, ydk, Encoding.UTF8);
File.SetLastWriteTime(path, saveTime);
File.SetLastWriteTimeUtc(path, saveTime);
if (MyCard.account != null && upload)
_ = OnlineDeck.SyncDeck(deckId, deckName, this, true);
......
......@@ -54,7 +54,6 @@ namespace MDPro3.Net
if (request.result == UnityWebRequest.Result.Success)
{
string jsonResult = request.downloadHandler.text;
var responseData = JsonUtility.FromJson<ResponseMultiSimpleData>(request.downloadHandler.text);
return responseData.data;
}
......@@ -162,7 +161,10 @@ namespace MDPro3.Net
if (responseData.code == 0)
MessageManager.Cast(InterString.Get("点赞卡组成功。"));
else
MessageManager.Cast(InterString.Get("点赞卡组失败:") + InterString.Get(responseData.message, responseData.messageValue));
MessageManager.Cast(InterString.Get("点赞卡组失败:") +
//InterString.Get(responseData.message, responseData.messageValue)
responseData.message
);
}
else
MessageManager.Cast(InterString.Get("点赞卡组失败:") + request.error);
......@@ -229,7 +231,7 @@ namespace MDPro3.Net
decks[i].deckId = ids[i];
decks[i].userId = MyCard.account.user.id.ToString();
decks[i].Save(newName, DateTime.Now, false);
decks[i].Save(newName, DateTime.UtcNow, false);
}
var json = JsonUtility.ToJson(body);
......@@ -296,10 +298,9 @@ namespace MDPro3.Net
if (request.result == UnityWebRequest.Result.Success)
{
var responseData = JsonUtility.FromJson<SyncResponseSingleData>(request.downloadHandler.text);
Debug.LogFormat("Sync Deck: {0}, Result: {1} {2} {3}.", deckName, responseData.code, responseData.message, responseData.data);
if (showHint)
MessageManager.Cast(InterString.Get("云端卡组「[?]」已同步。", deckName));
deck.Save(deckName, DateTime.Now, false);
deck.Save(deckName, DateTime.UtcNow, false);
return true;
}
else
......@@ -451,45 +452,41 @@ namespace MDPro3.Net
public string deckId;
public string deckContributor;
public string deckName;
public string deckType;
public int deckRank = 0;
public int deckLike = 0;
public string deckUploadDate;
public string deckUpdateDate;
public long deckUploadDate;
public long deckUpdateDate;
public int deckCoverCard1 = 0;
public int deckCoverCard2 = 0;
public int deckCoverCard3 = 0;
public int deckCase = 0;
public int deckProtector = 0;
public string lastDate;
public string deckYdk;
public string deckMainSerial;
public string deckYdk;
public int userid;
public bool isPublic;
public string description;
public bool isDelete;
//List Only
public string lastDate;
public OnlineDeckData() { }
public DateTime GetUpdateTime()
{
try
{
return DateTime.Parse(deckUpdateDate);
}
catch
public DateTime GetUpdateUtcTime()
{
return DateTime.Parse(deckUploadDate);
var dataTimeOffset = DateTimeOffset.FromUnixTimeSeconds(deckUpdateDate);
return dataTimeOffset.UtcDateTime;
}
}
}
[Serializable]
public class ResponseSingleData
{
public int code = 0;
public string message;
public string messageValue;
//public string messageValue;
public OnlineDeckData data;
}
......
......@@ -296,9 +296,10 @@ namespace MDPro3.Servant
{
localFoundedIds.Add(od.deckId);
var fileInfo = new FileInfo(deckFiles[i]);
var serverTime = od.GetUpdateTime();
var diff = serverTime - fileInfo.LastWriteTime;
//Debug.LogFormat("{0}({1}): {2}-{3}={4}", od.deckName, od.deckId, serverTime, fileInfo.LastWriteTime, diff.TotalSeconds);
var serverTime = od.GetUpdateUtcTime();
var diff = serverTime - fileInfo.LastWriteTimeUtc;
//Debug.Log($"{od.deckName}: serverTime: {serverTime} localTime: {fileInfo.LastWriteTimeUtc}");
if (diff.TotalSeconds > 5f || diff.TotalSeconds < -5f)
{
......@@ -323,6 +324,7 @@ namespace MDPro3.Servant
var task = OnlineDeck.SyncDeck(deck.Value.deckId, deck.Key, deck.Value, false);
while (!task.IsCompleted)
yield return null;
deck.Value.Save(deck.Key, DateTime.UtcNow, false);
}
//更新已经有Id的本地较旧卡组
foreach (var deck in decksNeedUpdateFromServer)
......@@ -335,7 +337,7 @@ namespace MDPro3.Servant
File.Delete(oldPath);
var newPath = Program.PATH_DECK + od.deckName + Program.EXPANSION_YDK;
File.WriteAllText(newPath, od.deckYdk);
File.SetLastWriteTime(newPath, od.GetUpdateTime());
File.SetLastWriteTimeUtc(newPath, od.GetUpdateUtcTime());
}
//上传没有Id的本地卡组
......@@ -369,7 +371,7 @@ namespace MDPro3.Servant
var d = new Deck(deck.deckYdk, string.Empty, string.Empty);
d.userId = MyCard.account.user.id.ToString();
d.deckId = deck.deckId;
d.Save(deck.deckName, deck.GetUpdateTime());
d.Save(deck.deckName, deck.GetUpdateUtcTime());
}
#if UNITY_EDITOR
......
......@@ -317,12 +317,12 @@ namespace MDPro3.UI.ServantUI
{
var uri = new Uri(clipBoard);
var deck = DeckShareURL.UriToDeck(uri);
deck.Save(deckName, DateTime.Now);
deck.Save(deckName, DateTime.UtcNow);
}
else if (clipBoard.Contains(YdkeConverter.ydkeHeader))
{
var deck = YdkeConverter.Ydke2Deck(clipBoard);
deck.Save(deckName, DateTime.Now);
deck.Save(deckName, DateTime.UtcNow);
}
Config.SetConfigDeck(deckName);
RefreshList();
......
......@@ -1197,7 +1197,7 @@ namespace MDPro3.UI
try
{
var deckName = GetDeckName();
Deck.Save(deckName, DateTime.Now);
Deck.Save(deckName, DateTime.UtcNow);
if (deckName != this.deckName)
File.Delete(Program.PATH_DECK + this.deckName + Program.EXPANSION_YDK);
this.deckName = deckName;
......
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