public static ParsePlayer ( string fileName ) : ArkData.Player | ||
fileName | string | |
return | ArkData.Player |
public static Player ParsePlayer(string fileName)
{
FileInfo fileInfo = new FileInfo(fileName);
if (!fileInfo.Exists)
return null;
byte[] data = File.ReadAllBytes(fileName);
return new Player()
{
Id = Convert.ToInt64(GetId(data)),
SteamId = GetSteamId(data),
SteamName = Helpers.GetString(data, "PlayerName"),
CharacterName = Helpers.GetString(data, "PlayerCharacterName"),
TribeId = Helpers.GetInt(data, "TribeID"),
Level = (short)(1 + Convert.ToInt32(Helpers.GetUInt16(data, "CharacterStatusComponent_ExtraCharacterLevel"))),
FileCreated = fileInfo.CreationTime,
FileUpdated = fileInfo.LastWriteTime
};
}
/// <summary> /// Instantiates the ArkDataContainer and parses all the user data files /// </summary> /// <param name="directory">The directory containing the profile and tribe files.</param> public static ArkDataContainer Create(string directory) { if (!Directory.Exists(directory)) { throw new DirectoryNotFoundException("The ARK data directory couldn't be found."); } var playerFiles = Directory.GetFiles(directory).Where(p => Path.GetExtension(p).Equals(".arkprofile")).ToArray(); var tribeFiles = Directory.GetFiles(directory).Where(p => Path.GetExtension(p).Equals(".arktribe")).ToArray(); if (playerFiles.Length == 0 && tribeFiles.Length == 0) { throw new FileLoadException("The directory did not contain any of the parseable files."); } var container = new ArkDataContainer(); for (var i = 0; i < playerFiles.Length; i++) { container.Players.Add(Parser.ParsePlayer(playerFiles[i])); } for (var i = 0; i < tribeFiles.Length; i++) { container.Tribes.Add(Parser.ParseTribe(tribeFiles[i])); } container.LinkPlayerTribe(); return(container); }