예제 #1
0
 internal void WriteTo(BinaryWriter writer, MapWidgetsFormatVersion formatVersion, MapWidgetsSubVersion subVersion, SpecialDoodadVersion specialDoodadVersion)
 {
     writer.Write(TypeId);
     writer.Write(Variation);
     writer.Write(Position.X);
     writer.Write(Position.Y);
 }
예제 #2
0
        internal void WriteTo(BinaryWriter writer, MapWidgetsFormatVersion formatVersion, MapWidgetsSubVersion subVersion, bool useNewFormat)
        {
            writer.Write(TypeId);
            writer.Write(Variation);
            writer.Write(Position.X);
            writer.Write(Position.Y);
            writer.Write(Position.Z);
            writer.Write(Rotation);
            writer.Write(Scale.X);
            writer.Write(Scale.Y);
            writer.Write(Scale.Z);

            if (useNewFormat)
            {
                writer.Write(SkinId);
            }

            if (formatVersion > MapWidgetsFormatVersion.RoCBETA)
            {
                writer.Write((byte)State);
            }

            writer.Write(Life);

            if (formatVersion == MapWidgetsFormatVersion.TFT)
            {
                writer.Write(MapItemTableId);

                writer.Write(ItemTableSets.Count);
                foreach (var itemSet in ItemTableSets)
                {
                    writer.Write(itemSet, formatVersion, subVersion, useNewFormat);
                }
            }

            writer.Write(CreationNumber);
        }
예제 #3
0
        internal void ReadFrom(BinaryReader reader, MapWidgetsFormatVersion formatVersion, MapWidgetsSubVersion subVersion, out bool useNewFormat)
        {
            TypeId    = reader.ReadInt32();
            Variation = reader.ReadInt32();
            Position  = new Vector3(reader.ReadSingle(), reader.ReadSingle(), reader.ReadSingle());
            Rotation  = reader.ReadSingle();
            Scale     = new Vector3(reader.ReadSingle(), reader.ReadSingle(), reader.ReadSingle());

            // Check if next byte is 'printable' (this also assumes that _flags byte is a low number).
            useNewFormat = reader.PeekChar() >= 0x20;
            SkinId       = useNewFormat ? reader.ReadInt32() : TypeId;

            if (formatVersion > MapWidgetsFormatVersion.RoCBETA)
            {
                State = (DoodadState)reader.ReadByte();
                if ((int)State >= 8)
                {
                    throw new InvalidDataException($"Invalid doodad state: {State}.");
                }
            }

            Life = reader.ReadByte();

            if (formatVersion == MapWidgetsFormatVersion.TFT)
            {
                MapItemTableId = reader.ReadInt32();

                nint droppedItemDataCount = reader.ReadInt32();
                for (nint i = 0; i < droppedItemDataCount; i++)
                {
                    ItemTableSets.Add(reader.ReadRandomItemSet(formatVersion, subVersion, useNewFormat));
                }
            }

            CreationNumber = reader.ReadInt32();
        }
예제 #4
0
 public static void Write(this BinaryWriter writer, InventoryItemData inventoryItemData, MapWidgetsFormatVersion formatVersion, MapWidgetsSubVersion subVersion, bool useNewFormat) => inventoryItemData.WriteTo(writer, formatVersion, subVersion, useNewFormat);
예제 #5
0
 public static void Write(this BinaryWriter writer, ModifiedAbilityData modifiedAbilityData, MapWidgetsFormatVersion formatVersion, MapWidgetsSubVersion subVersion, bool useNewFormat) => modifiedAbilityData.WriteTo(writer, formatVersion, subVersion, useNewFormat);
예제 #6
0
 public static RandomUnitTableUnit ReadRandomUnitTableUnit(this BinaryReader reader, MapWidgetsFormatVersion formatVersion, MapWidgetsSubVersion subVersion, bool useNewFormat) => new RandomUnitTableUnit(reader, formatVersion, subVersion, useNewFormat);
예제 #7
0
 internal void ReadFrom(BinaryReader reader, MapWidgetsFormatVersion formatVersion, MapWidgetsSubVersion subVersion, bool useNewFormat)
 {
     TableId = reader.ReadInt32();
     Column  = reader.ReadInt32();
 }
예제 #8
0
 internal abstract void WriteTo(BinaryWriter writer, MapWidgetsFormatVersion formatVersion, MapWidgetsSubVersion subVersion, bool useNewFormat);
예제 #9
0
 public static ModifiedAbilityData ReadModifiedAbilityData(this BinaryReader reader, MapWidgetsFormatVersion formatVersion, MapWidgetsSubVersion subVersion, bool useNewFormat) => new ModifiedAbilityData(reader, formatVersion, subVersion, useNewFormat);
예제 #10
0
 internal void ReadFrom(BinaryReader reader, MapWidgetsFormatVersion formatVersion, MapWidgetsSubVersion subVersion, SpecialDoodadVersion specialDoodadVersion)
 {
     TypeId    = reader.ReadInt32();
     Variation = reader.ReadInt32();
     Position  = new Point(reader.ReadInt32(), reader.ReadInt32());
 }
예제 #11
0
 internal InventoryItemData(BinaryReader reader, MapWidgetsFormatVersion formatVersion, MapWidgetsSubVersion subVersion, bool useNewFormat)
 {
     ReadFrom(reader, formatVersion, subVersion, useNewFormat);
 }
예제 #12
0
 internal void WriteTo(BinaryWriter writer, MapWidgetsFormatVersion formatVersion, MapWidgetsSubVersion subVersion, bool useNewFormat)
 {
     writer.Write(AbilityId);
     writer.WriteBool(IsAutocastActive);
     writer.Write(HeroAbilityLevel);
 }
예제 #13
0
 internal SpecialDoodadData(BinaryReader reader, MapWidgetsFormatVersion formatVersion, MapWidgetsSubVersion subVersion, SpecialDoodadVersion specialDoodadVersion)
 {
     ReadFrom(reader, formatVersion, subVersion, specialDoodadVersion);
 }
예제 #14
0
 internal void ReadFrom(BinaryReader reader, MapWidgetsFormatVersion formatVersion, MapWidgetsSubVersion subVersion, bool useNewFormat)
 {
     AbilityId        = reader.ReadInt32();
     IsAutocastActive = reader.ReadBool();
     HeroAbilityLevel = reader.ReadInt32();
 }
예제 #15
0
 internal ModifiedAbilityData(BinaryReader reader, MapWidgetsFormatVersion formatVersion, MapWidgetsSubVersion subVersion, bool useNewFormat)
 {
     ReadFrom(reader, formatVersion, subVersion, useNewFormat);
 }
예제 #16
0
 internal UnitData(BinaryReader reader, MapWidgetsFormatVersion formatVersion, MapWidgetsSubVersion subVersion, out bool useNewFormat)
 {
     ReadFrom(reader, formatVersion, subVersion, out useNewFormat);
 }
예제 #17
0
 public static void Write(this BinaryWriter writer, RandomUnitTableUnit randomUnitTableUnit, MapWidgetsFormatVersion formatVersion, MapWidgetsSubVersion subVersion, bool useNewFormat) => randomUnitTableUnit.WriteTo(writer, formatVersion, subVersion, useNewFormat);
예제 #18
0
 internal void WriteTo(BinaryWriter writer, MapWidgetsFormatVersion formatVersion, MapWidgetsSubVersion subVersion, bool useNewFormat)
 {
     writer.Write(Slot);
     writer.Write(ItemId);
 }
예제 #19
0
 public static void Write(this BinaryWriter writer, RandomItemSetItem randomItemSetItem, MapWidgetsFormatVersion formatVersion, MapWidgetsSubVersion subVersion, bool useNewFormat) => randomItemSetItem.WriteTo(writer, formatVersion, subVersion, useNewFormat);
예제 #20
0
 public static UnitData ReadMapUnitData(this BinaryReader reader, MapWidgetsFormatVersion formatVersion, MapWidgetsSubVersion subVersion, out bool useNewFormat) => new UnitData(reader, formatVersion, subVersion, out useNewFormat);
예제 #21
0
 internal void ReadFrom(BinaryReader reader, MapWidgetsFormatVersion formatVersion, MapWidgetsSubVersion subVersion, bool useNewFormat)
 {
     Slot   = reader.ReadInt32();
     ItemId = reader.ReadInt32();
 }
예제 #22
0
 internal override void WriteTo(BinaryWriter writer, MapWidgetsFormatVersion formatVersion, MapWidgetsSubVersion subVersion, bool useNewFormat)
 {
     writer.Write(TableId);
     writer.Write(Column);
 }
예제 #23
0
 public static SpecialDoodadData ReadMapSpecialDoodadData(this BinaryReader reader, MapWidgetsFormatVersion formatVersion, MapWidgetsSubVersion subVersion, SpecialDoodadVersion specialDoodadVersion) => new SpecialDoodadData(reader, formatVersion, subVersion, specialDoodadVersion);
예제 #24
0
 /// <summary>
 /// Initializes a new instance of the <see cref="MapUnits"/> class.
 /// </summary>
 /// <param name="formatVersion"></param>
 /// <param name="subVersion"></param>
 /// <param name="useNewFormat"></param>
 public MapUnits(MapWidgetsFormatVersion formatVersion, MapWidgetsSubVersion subVersion, bool useNewFormat)
 {
     FormatVersion = formatVersion;
     SubVersion    = subVersion;
     UseNewFormat  = useNewFormat;
 }
예제 #25
0
 public static InventoryItemData ReadInventoryItemData(this BinaryReader reader, MapWidgetsFormatVersion formatVersion, MapWidgetsSubVersion subVersion, bool useNewFormat) => new InventoryItemData(reader, formatVersion, subVersion, useNewFormat);
예제 #26
0
 internal RandomItemSetItem(BinaryReader reader, MapWidgetsFormatVersion formatVersion, MapWidgetsSubVersion subVersion, bool useNewFormat)
 {
     ReadFrom(reader, formatVersion, subVersion, useNewFormat);
 }
예제 #27
0
 public static RandomUnitAny ReadRandomUnitNeutral(this BinaryReader reader, MapWidgetsFormatVersion formatVersion, MapWidgetsSubVersion subVersion, bool useNewFormat) => new RandomUnitAny(reader, formatVersion, subVersion, useNewFormat);
예제 #28
0
 public static void Write(this BinaryWriter writer, SpecialDoodadData mapSpecialDoodadData, MapWidgetsFormatVersion formatVersion, MapWidgetsSubVersion subVersion, SpecialDoodadVersion specialDoodadVersion) => mapSpecialDoodadData.WriteTo(writer, formatVersion, subVersion, specialDoodadVersion);
예제 #29
0
 public static RandomItemSetItem ReadRandomItemSetItem(this BinaryReader reader, MapWidgetsFormatVersion formatVersion, MapWidgetsSubVersion subVersion, bool useNewFormat) => new RandomItemSetItem(reader, formatVersion, subVersion, useNewFormat);
예제 #30
0
 public static void Write(this BinaryWriter writer, UnitData mapUnitData, MapWidgetsFormatVersion formatVersion, MapWidgetsSubVersion subVersion, bool useNewFormat) => mapUnitData.WriteTo(writer, formatVersion, subVersion, useNewFormat);