\r
public class Status\r
{\r
- private readonly string _baseDir = AppDomain.CurrentDomain.BaseDirectory;\r
- private readonly string _statusFileName;\r
public static bool Restoring { get; set; }\r
public Achievement Achievement { get; set; }\r
public List<MaterialCount> MaterialHistory { get; set; }\r
public double CondRegenTime { get; set; }\r
public ExMapInfo.ExMapState ExMapState { get; set; }\r
+ public QuestStatus[] QuestList { get; set; }\r
+ public QuestCount[] QuestCountList { get; set; }\r
+ public DateTime QuestLastReset { get; set; }\r
+\r
+ private const string FileName = "status.xml";\r
+ private static readonly string StatusFile = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, FileName);\r
\r
public Status()\r
{\r
- _statusFileName = Path.Combine(_baseDir, "status.xml");\r
CondRegenTime = double.MinValue;\r
}\r
\r
Restoring = true;\r
var serializer = new XmlSerializer(typeof(Status));\r
Status status;\r
- using (var file = File.OpenText(_statusFileName))\r
+ using (var file = File.OpenText(StatusFile))\r
status = (Status)serializer.Deserialize(file);\r
foreach (var property in GetType().GetProperties())\r
property.SetValue(this, property.GetValue(status, null), null);\r
catch (FileNotFoundException)\r
{\r
}\r
+ catch (InvalidOperationException ex)\r
+ {\r
+ throw new Exception(FileName + "が壊れています。", ex);\r
+ }\r
finally\r
{\r
Restoring = false;\r
public void Save()\r
{\r
var serializer = new XmlSerializer(typeof(Status));\r
- using (var file = File.CreateText(_statusFileName))\r
+ using (var file = File.CreateText(StatusFile + ".tmp"))\r
serializer.Serialize(file, this);\r
+ File.Copy(StatusFile + ".tmp", StatusFile, true);\r
+ File.Delete(StatusFile + ".tmp");\r
}\r
}\r
}
\ No newline at end of file