Commit b53f0da0 authored by SherryChaos's avatar SherryChaos

bug fix

parent d944b4ec
...@@ -261,6 +261,29 @@ namespace MDPro3.Servant ...@@ -261,6 +261,29 @@ namespace MDPro3.Servant
private float timeError = 3f; private float timeError = 3f;
private string GetDeckNameWithType(string path)
{
var type = Path.GetFileName(Path.GetDirectoryName(path));
if(type == "Deck" && type == Path.GetDirectoryName(path))
type = string.Empty;
return (type == string.Empty ? string.Empty : $"{type}/") + Path.GetFileNameWithoutExtension(path);
}
private string GetDeckTypeFromPath(string path)
{
var type = Path.GetFileName(Path.GetDirectoryName(path));
if (type == "Deck" && type == Path.GetDirectoryName(path))
type = string.Empty;
return type;
}
private string GetDeckTypeFromName(string deckName)
{
if (!deckName.Contains("/"))
return string.Empty;
return deckName.Split('/')[0];
}
private IEnumerator SyncDecks() private IEnumerator SyncDecks()
{ {
if (OnlineDeck.decks == null) if (OnlineDeck.decks == null)
...@@ -281,10 +304,8 @@ namespace MDPro3.Servant ...@@ -281,10 +304,8 @@ namespace MDPro3.Servant
for (int i = 0; i < decks.Count; i++) for (int i = 0; i < decks.Count; i++)
{ {
var deckName = Path.GetFileNameWithoutExtension(deckFiles[i]); var deckName = GetDeckNameWithType(deckFiles[i]);
var type = Path.GetFileName(Path.GetDirectoryName(deckFiles[i])); var type = GetDeckTypeFromPath(deckFiles[i]);
if (type == "Deck" && type == Path.GetDirectoryName(deckFiles[i]))
type = string.Empty;
decks[i].type = type; decks[i].type = type;
bool deckIdFound = false; bool deckIdFound = false;
...@@ -313,7 +334,8 @@ namespace MDPro3.Servant ...@@ -313,7 +334,8 @@ namespace MDPro3.Servant
else else
decksNeedUpdateFromServer.Add(deckName, decks[i]); decksNeedUpdateFromServer.Add(deckName, decks[i]);
} }
if(deckName != od.deckName && !decksNeedUpdateFromServer.Keys.Contains(deckName)) if((Path.GetFileName(deckName) != od.deckName || GetDeckTypeFromName(deckName) != od.deckType)
&& !decksNeedUpdateFromServer.Keys.Contains(deckName))
decksNeedUpdateFromServer.Add(deckName, decks[i]); decksNeedUpdateFromServer.Add(deckName, decks[i]);
} }
break; break;
...@@ -329,7 +351,7 @@ namespace MDPro3.Servant ...@@ -329,7 +351,7 @@ namespace MDPro3.Servant
{ {
Debug.LogFormat("卡组[{0}]需要更新上传。", deck.Key); Debug.LogFormat("卡组[{0}]需要更新上传。", deck.Key);
var time = DateTime.UtcNow; var time = DateTime.UtcNow;
var task = OnlineDeck.SyncDeck(deck.Value.deckId, deck.Key, deck.Value, time, false); var task = OnlineDeck.SyncDeck(deck.Value.deckId, Path.GetFileName(deck.Key), deck.Value, time, false);
while (!task.IsCompleted) while (!task.IsCompleted)
yield return null; yield return null;
} }
...@@ -339,10 +361,12 @@ namespace MDPro3.Servant ...@@ -339,10 +361,12 @@ namespace MDPro3.Servant
Debug.LogFormat("卡组[{0}]需要更新。", deck.Key); Debug.LogFormat("卡组[{0}]需要更新。", deck.Key);
var od = OnlineDeck.GetByID(deck.Value.deckId); var od = OnlineDeck.GetByID(deck.Value.deckId);
var oldPath = Program.PATH_DECK + (deck.Value.type == string.Empty ? string.Empty : $"{deck.Value.type}/") + deck.Key + Program.EXPANSION_YDK; var oldPath = Program.PATH_DECK + deck.Key + Program.EXPANSION_YDK;
if (deck.Key != od.deckName || deck.Value.type != od.deckType) if (Path.GetFileName(deck.Key) != od.deckName || deck.Value.type != od.deckType)
File.Delete(oldPath); File.Delete(oldPath);
var newPath = Program.PATH_DECK + (od.deckType == string.Empty ? string.Empty : $"{od.deckType}/") + od.deckName + Program.EXPANSION_YDK; var newPath = Program.PATH_DECK + (od.deckType == string.Empty ? string.Empty : $"{od.deckType}/") + od.deckName + Program.EXPANSION_YDK;
if(!Directory.Exists(Path.GetDirectoryName(newPath)))
Directory.CreateDirectory(Path.GetDirectoryName(newPath));
File.WriteAllText(newPath, od.deckYdk); File.WriteAllText(newPath, od.deckYdk);
File.SetLastWriteTimeUtc(newPath, od.GetUpdateUtcTime()); File.SetLastWriteTimeUtc(newPath, od.GetUpdateUtcTime());
} }
...@@ -350,8 +374,7 @@ namespace MDPro3.Servant ...@@ -350,8 +374,7 @@ namespace MDPro3.Servant
//下载本地ID不存在的服务器卡组 //下载本地ID不存在的服务器卡组
//OnlineDeck.UploadDecks() 会刷新OnlineDeck.decks,因此本功能需要在[上传没有Id的本地卡组]之前执行 //OnlineDeck.UploadDecks() 会刷新OnlineDeck.decks,因此本功能需要在[上传没有Id的本地卡组]之前执行
var odtd = OnlineDeck.decks var odtd = OnlineDeck.decks
.Where(od => !od.isDelete && !localFoundIds.Contains(od.deckId)) .Where(od => !od.isDelete && !localFoundIds.Contains(od.deckId));
.ToList();
foreach (var deck in odtd) foreach (var deck in odtd)
{ {
var path = Program.PATH_DECK + (deck.deckType == string.Empty ? string.Empty : $"{deck.deckType}/") + deck.deckName + Program.EXPANSION_YDK; var path = Program.PATH_DECK + (deck.deckType == string.Empty ? string.Empty : $"{deck.deckType}/") + deck.deckName + Program.EXPANSION_YDK;
...@@ -380,7 +403,7 @@ namespace MDPro3.Servant ...@@ -380,7 +403,7 @@ namespace MDPro3.Servant
var info = string.Format("卡组[{0}]需要上传:{1}。", deck.Key, deck.Value.deckId); var info = string.Format("卡组[{0}]需要上传:{1}。", deck.Key, deck.Value.deckId);
Debug.Log(info); Debug.Log(info);
deckNames.Add(deck.Key); deckNames.Add(Path.GetFileName(deck.Key));
decksToUp.Add(deck.Value); decksToUp.Add(deck.Value);
} }
var task2 = OnlineDeck.UploadDecks(decksToUp, deckNames); var task2 = OnlineDeck.UploadDecks(decksToUp, deckNames);
......
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