Пример #1
0
        public static ChangeSpellData ReadChangeSpellData(this ByteReader reader)
        {
            ChangeSpellData data;

            byte spellSlot = reader.ReadByte();

            byte bitfield        = reader.ReadByte();
            bool isSummonerSpell = (bitfield & 0x01) != 0;

            ChangeSlotSpellDataType type = (ChangeSlotSpellDataType)reader.ReadUInt32();

            switch (type)
            {
            case ChangeSlotSpellDataType.TargetingType:
                data = new ChangeSpellDataTargetingType();
                break;

            case ChangeSlotSpellDataType.SpellName:
                data = new ChangeSpellDataSpellName();
                break;

            case ChangeSlotSpellDataType.Range:
                data = new ChangeSpellDataRange();
                break;

            case ChangeSlotSpellDataType.MaxGrowthRange:
                data = new ChangeSpellDataMaxGrowthRange();
                break;

            case ChangeSlotSpellDataType.RangeDisplay:
                data = new ChangeSpellDataRangeDisplay();
                break;

            case ChangeSlotSpellDataType.IconIndex:
                data = new ChangeSpellDataIconIndex();
                break;

            case ChangeSlotSpellDataType.OffsetTarget:
                data = new ChangeSpellDataOffsetTarget();
                break;

            default:
                data = new ChangeSpellDataUnknown();
                break;
            }

            data.SpellSlot       = spellSlot;
            data.IsSummonerSpell = isSummonerSpell;
            data.ReadBodyInternal(reader);
            return(data);
        }
Пример #2
0
        public static IChangeSpellData ReadChangeSpellData(this LittleEndianReader reader)
        {
            IChangeSpellData        data;
            ChangeSlotSpellDataType type = (ChangeSlotSpellDataType)reader.ReadByte();

            switch (type)
            {
            case ChangeSlotSpellDataType.TargetingType:
                data = new ChangeSpellDataTargetingType();
                break;

            case ChangeSlotSpellDataType.SpellName:
                data = new ChangeSpellDataSpellName();
                break;

            case ChangeSlotSpellDataType.Range:
                data = new ChangeSpellDataRange();
                break;

            case ChangeSlotSpellDataType.MaxGrowthRange:
                data = new ChangeSpellDataMaxGrowthRange();
                break;

            case ChangeSlotSpellDataType.RangeDisplay:
                data = new ChangeSpellDataRangeDisplay();
                break;

            case ChangeSlotSpellDataType.IconIndex:
                data = new ChangeSpellDataIconIndex();
                break;

            case ChangeSlotSpellDataType.OffsetTarget:
                data = new ChangeSpellDataOffsetTarget();
                break;

            default:
                data = new ChangeSpellDataUnknown();
                break;
            }
            data.Deserialize(reader);
            return(data);
        }