ServerCore
RepositorySaveData.cs
using OCUnion;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using Util;
namespace ServerOnlineCity
{
public clast RepositorySaveData
{
///
/// Длинна истории сохранений пользователя (макс кол-во файлов с колонией пользователя от 1)
///
public int CountSaveDataPlayer { get; } = 3;
private Repository MainRepository;
public RepositorySaveData(Repository repository)
{
MainRepository = repository;
}
private string GetFileNameBase(string login)
{
return Path.Combine(MainRepository.SaveFolderDataPlayers, Repository.NormalizeLogin(login) + ".dat");
}
///
/// Получить данные по сохранению игры пользователя.
///
/// Логин пользователя, но основании него получается имя файла
/// Номер сохранения, от 1 самого последнего, до CountSaveDataPlayer самого старого. Если такого файла нет, будет дан самый старый существующий
/// Содержимое сейва игры или null если ни одного файла с данными нет.
public byte[] LoadPlayerData(string login, int numberSave)
{
if (numberSave < 1 || numberSave > CountSaveDataPlayer) return null;
var fileName = GetFileNameBase(login) + numberSave.ToString();
var info = new FileInfo(fileName);
if (!info.Exists || info.Length < 10) return null;
//читаем содержимое
bool readAsXml;
using (var file = File.OpenRead(fileName))
{
var buff = new byte[10];
file.Read(buff, 0, 10);
readAsXml = Encoding.ASCII.GetString(buff, 0, 10).Contains("