BitCollectors.QfgCharacterEditor.Library.GameInfo.Qfg1GameInfo.EncodedCharacterString C# (CSharp) Method

EncodedCharacterString() public method

public EncodedCharacterString ( QfgCharacter character ) : string
character QfgCharacter
return string
        public string EncodedCharacterString(QfgCharacter character)
        {
            string str = string.Format("83-{25}-2-72-71-115-{0}-{1}-{2}-{3}-{4}-{5}-{6}-{7}-{8}-{9}-{10}-{11}-{12}-28-4-57-75-{13}-{14}-{15}-{16}-{17}-{18}-{19}-{20}-{21}-{22}-{23}-{24}-0-121-6-9991-9992-67-8-45-112-",
                character.Strength.ToString(),
                character.Intelligence.ToString(),
                character.Agility.ToString(),
                character.Vitality.ToString(),
                character.Luck.ToString(),
                character.WeaponUse.ToString(),
                character.Parry.ToString(),
                character.Dodge.ToString(),
                character.Stealth.ToString(),
                character.PickLocks.ToString(),
                character.Throwing.ToString(),
                character.Climbing.ToString(),
                character.Magic.ToString(),
                character.MagicSkillOpen.ToString(),
                character.MagicSkillDetect.ToString(),
                character.MagicSkillTrigger.ToString(),
                character.MagicSkillDazzle.ToString(),
                character.MagicSkillZap.ToString(),
                character.MagicSkillCalm.ToString(),
                character.MagicSkillFlame.ToString(),
                character.MagicSkillFetch.ToString(),
                character.InventoryDaggers.ToString(),
                character.InventoryHealingPotions.ToString(),
                character.InventoryMagicPotions.ToString(),
                character.InventoryVigorPotions.ToString(),
                ((int)character.QfgClass).ToString()
                );


            string[] ar = str.Split('-');
            List<int> decodedStrArray = new List<int>();

            foreach (string st in ar)
            {
                if (st != "")
                    decodedStrArray.Add(Int32.Parse(st));
            }

            int total1 = 0xce;
            int total2 = 0;

            for (int i = 0; i < 35; i += 2)
            {
                total1 += decodedStrArray[i + 1];
            }

            for (int i = 1; i < 35; i += 2)
            {
                total2 += decodedStrArray[i + 1];
            }

            total1 &= 127;
            total2 &= 127;

            character.CheckSum1 = total1;
            character.CheckSum2 = total2;

            str = str.Replace("-9992-", "-" + total2.ToString() + "-");
            str = str.Replace("-9991-", "-" + total1.ToString() + "-");

            ar = null;
            ar = str.Split('-');
            decodedStrArray.Clear();
            foreach (string st in ar)
            {
                if (st != "")
                    decodedStrArray.Add(Int32.Parse(st));
            }


            int prev = 0;// x53;
            int index = 0;
            List<int> encodedVal = new List<int>();

            foreach (int val in decodedStrArray)
            {
                int encoded = val;
                encoded ^= prev & 127;

                if (index > 0)
                    encodedVal.Add(encoded);

                prev = encoded;
                index++;
            }

            List<string> encodedStrArray = new List<string>();
            foreach (int val in encodedVal)
            {
                encodedStrArray.Add(val.ToString("X"));
            }

            string encodedValue = "";

            for (int i = 0; i < encodedStrArray.Count; i++)
            {
                encodedValue += encodedStrArray[i].PadLeft(2, ' ').ToLower();
            }

            return encodedValue;
        }