コード例 #1
0
        public static void Write(Stream output, Party instance, Endian endian)
        {
            output.WriteBytes(instance.Unknown0000Bytes);
            output.WriteBytes(instance.NameBytes);

            ArrayHelper.ForEach(instance.Units, e => Unit.Write(output, e, endian), UnitCount);

            int itemQuantityIndex = 0;

            if (instance.ItemQuantities != null)
            {
                if (instance.ItemQuantities.Length > ItemQuantityCount)
                {
                    throw new InvalidOperationException("too many item quantities to write");
                }
                var itemQuantityCount = Math.Min(instance.ItemQuantities.Length, ItemQuantityCount);
                output.Write(instance.ItemQuantities, 0, itemQuantityCount);
                itemQuantityIndex += itemQuantityCount;
            }
            if (itemQuantityIndex < ItemQuantityCount)
            {
                output.Write(DummyItemQuantities, 0, ItemQuantityCount - itemQuantityIndex);
            }

            ArrayHelper.ForEach(instance.CursedWeapons, e => CursedWeapon.Write(output, e), CursedWeaponCount);

            output.WriteValueU32(instance.Unknown2CB8, endian);
            output.WriteValueU32(instance.Unknown2CBC, endian);
        }
コード例 #2
0
 public static void Write(Stream output, CursedWeapon instance)
 {
     output.WriteValueU8(instance.Unknown00);
     output.WriteBytes(instance.NameBytes);
     output.WriteValueU8(instance.RecoveryTimeBonus);
     output.WriteValueU8(instance.Attack);
     output.WriteValueU8(instance.Defense);
     output.WriteValueU8(instance.HealthPoints);
     output.WriteValueU8(instance.MagicPoints);
     output.WriteValueU8(instance.Strength);
     output.WriteValueU8(instance.Vitality);
     output.WriteValueU8(instance.Dexterity);
     output.WriteValueU8(instance.Agility);
     output.WriteValueU8(instance.Avoidance);
     output.WriteValueU8(instance.Intelligence);
     output.WriteValueU8(instance.Mind);
     output.WriteValueU8(instance.Resistance);
     output.WriteValueU8(instance.Unknown33);
     output.WriteValueU8(instance.Unknown34);
     output.WriteValueU8(instance.Unknown35);
     output.WriteValueU8(instance.Unknown36);
     output.WriteValueU8(instance.Unknown37);
     output.WriteValueU8(instance.Unknown38);
     output.WriteValueU8(instance.Unknown39);
 }
コード例 #3
0
        public static Party Read(Stream input, Endian endian)
        {
            Party instance;

            instance.Unknown0000Bytes = input.ReadBytes(Unknown0000Length);
            instance.NameBytes        = input.ReadBytes(NameLength);
            instance.Units            = new Unit[UnitCount];
            for (int i = 0; i < UnitCount; i++)
            {
                instance.Units[i] = Unit.Read(input, endian);
            }
            instance.ItemQuantities = input.ReadBytes(ItemQuantityCount);
            instance.CursedWeapons  = new CursedWeapon[CursedWeaponCount];
            for (int i = 0; i < CursedWeaponCount; i++)
            {
                instance.CursedWeapons[i] = CursedWeapon.Read(input);
            }
            instance.Unknown2CB8 = input.ReadValueU32(endian);
            instance.Unknown2CBC = input.ReadValueU32(endian);
            return(instance);
        }