public byte[] GetBytes(bool skipFailedData = false)
        {
            byte[] characterBytes   = (skipFailedData && FailedCharacterDecoding) ? OriginalCharacterBytes : Character.GetCharacterBytes();
            byte[] statsBytes       = Stat.GetStatBytes();
            byte[] skillBytes       = (skipFailedData && FailedSkillDecoding) ? OriginalSkillBytes : Skill.GetSkillBytes();
            byte[] inventoryBytes   = (skipFailedData && FailedInventoryDecoding) ? OriginalInventoryBytes : Inventory.GetInventoryBytes(Character.HasMercenary);
            byte[] rawCharacterData = new byte[characterBytes.Length + statsBytes.Length + skillBytes.Length + inventoryBytes.Length];

            Array.Copy(characterBytes, rawCharacterData, characterBytes.Length);
            Array.Copy(statsBytes, 0, rawCharacterData, characterBytes.Length, statsBytes.Length);
            Array.Copy(skillBytes, 0, rawCharacterData, characterBytes.Length + statsBytes.Length, skillBytes.Length);
            Array.Copy(inventoryBytes, 0, rawCharacterData, characterBytes.Length + statsBytes.Length + skillBytes.Length, inventoryBytes.Length);

            FixHeaders(ref rawCharacterData);

            return(rawCharacterData);
        }
Exemplo n.º 2
0
        /// <summary>
        /// Saves player data to specified path
        /// </summary>
        /// <param name="filePath">Path to save character data as</param>
        public void Write(Stream saveFile, bool skipFailedData)
        {
            byte[] characterBytes   = (skipFailedData && FailedCharacterDecoding) ? OriginalCharacterBytes : Character.GetCharacterBytes();
            byte[] statsBytes       = Stat.GetStatBytes();
            byte[] skillBytes       = (skipFailedData && FailedSkillDecoding) ? OriginalSkillBytes : Skill.GetSkillBytes();
            byte[] inventoryBytes   = (skipFailedData && FailedInventoryDecoding) ? OriginalInventoryBytes : Inventory.GetInventoryBytes(Character.HasMercenary);
            byte[] rawCharacterData = new byte[characterBytes.Length + statsBytes.Length + skillBytes.Length + inventoryBytes.Length];

            Array.Copy(characterBytes, rawCharacterData, characterBytes.Length);
            Array.Copy(statsBytes, 0, rawCharacterData, characterBytes.Length, statsBytes.Length);
            Array.Copy(skillBytes, 0, rawCharacterData, characterBytes.Length + statsBytes.Length, skillBytes.Length);
            Array.Copy(inventoryBytes, 0, rawCharacterData, characterBytes.Length + statsBytes.Length + skillBytes.Length, inventoryBytes.Length);

            FixHeaders(ref rawCharacterData);

            using (BinaryWriter bw = new BinaryWriter(saveFile))
            {
                bw.Write(rawCharacterData);
            }

            //File.WriteAllBytes(filePath, rawCharacterData);
        }