VPet/VPet-Simulator.Windows.Interface/GameSave_v2.cs

123 lines
3.5 KiB
C#
Raw Normal View History

2023-09-17 12:57:28 +00:00
using LinePutScript;
using LinePutScript.Dictionary;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
2023-09-22 13:24:02 +00:00
using System.Security.Policy;
2023-09-17 12:57:28 +00:00
using System.Text;
using System.Threading.Tasks;
using VPet_Simulator.Core;
namespace VPet_Simulator.Windows.Interface
{
/// <summary>
2023-09-20 12:58:28 +00:00
/// 游戏存档 最新版
2023-09-17 12:57:28 +00:00
/// </summary>
2023-09-20 12:58:28 +00:00
public class GameSave_v2
2023-09-17 12:57:28 +00:00
{
2023-09-20 12:58:28 +00:00
/// <summary>
/// 新存档
/// </summary>
public GameSave_v2()
{
GameSave = new GameSave();
Statistics = new Statistics();
}
protected void load(ILPS lps, Statistics oldStatistics = null, GameSave oldGameSave = null, ILPS olddata = null)
2023-09-17 12:57:28 +00:00
{
if (lps.FindLine("statistics") == null)
{//尝试从老存档加载
2023-09-20 12:58:28 +00:00
Statistics = oldStatistics;
2023-09-17 12:57:28 +00:00
}
else
{
Statistics = new Statistics(lps["statistics"].ToList());
}
2023-09-22 13:24:02 +00:00
ILine vpet = lps.FindLine("vpet");
bool nohashcheck = true;
long hash;
if (vpet != null)
2023-09-17 12:57:28 +00:00
{
2023-09-22 13:24:02 +00:00
GameSave = GameSave.Load(vpet);
hash = vpet.GetInt64("hash");
if (vpet.Remove("hash"))
{
HashCheck = vpet.GetLongHashCode() == hash;
nohashcheck = false;
}
2023-09-17 12:57:28 +00:00
}
2023-09-20 12:58:28 +00:00
else if (oldGameSave != null)
{
GameSave = oldGameSave;
}
2023-09-22 13:24:02 +00:00
if (nohashcheck)
{
hash = vpet.GetInt64("hash");
if (lps.Remove("hash"))
{
HashCheck = vpet.GetLongHashCode() == hash;
}
}
2023-09-20 12:58:28 +00:00
if (olddata != null)
Data.AddRange(olddata);
Data.AddRange(lps);
}
/// <summary>
/// 读存档, 带入老数据
/// </summary>
/// <param name="lps">数据</param>
/// <param name="oldStatistics">老统计</param>
/// <param name="oldGameSave">老存档</param>
/// <param name="olddata">老数据</param>
public GameSave_v2(ILPS lps, Statistics oldStatistics = null, GameSave oldGameSave = null, ILPS olddata = null)
{
load(lps, oldStatistics, oldGameSave, olddata);
}
/// <summary>
/// 读存档, 带入老存档
/// </summary>
/// <param name="lps"></param>
/// <param name="oldSave"></param>
public GameSave_v2(ILPS lps, GameSave_v2 oldSave)
{
load(lps, oldSave.Statistics,oldSave.GameSave,oldSave.Data);
2023-09-17 12:57:28 +00:00
}
2023-09-20 12:58:28 +00:00
/// <summary>
/// 游戏相关数据
/// </summary>
public LPS_D Data = new LPS_D();
/// <summary>
/// 游戏存档
/// </summary>
public GameSave GameSave;
/// <summary>
/// 统计
/// </summary>
2023-09-17 12:57:28 +00:00
public Statistics Statistics = null;
2023-09-22 13:24:02 +00:00
public ILPS ToLPS()
2023-09-20 12:58:28 +00:00
{
var lps = new LPS_D();
lps.AddRange(Data);
lps.AddLine(GameSave.ToLine());
lps.Add(new Line("statistics", "", Statistics.ToSubs()));
return lps;
}
2023-09-22 13:24:02 +00:00
/// <summary>
/// Hash检查
/// </summary>
public bool HashCheck { get; private set; }
/// <summary>
///
/// </summary>
public void HashCheckOff ()
{
HashCheck = false;
}
2023-09-17 12:57:28 +00:00
}
}