예제 #1
0
        public override void Deserialize(IDataReader reader)
        {
            uint num1 = (uint)reader.ReadUShort();

            for (int index = 0; (long)index < (long)num1; ++index)
            {
                uint num2 = (uint)reader.ReadVarUhShort();
                if (num2 < 0U)
                {
                    throw new Exception("Forbidden value (" + (object)num2 + ") on elements of chosenIdols.");
                }
                this.chosenIdols.Add(num2);
            }
            uint num3 = (uint)reader.ReadUShort();

            for (int index = 0; (long)index < (long)num3; ++index)
            {
                uint num2 = (uint)reader.ReadVarUhShort();
                if (num2 < 0U)
                {
                    throw new Exception("Forbidden value (" + (object)num2 + ") on elements of partyChosenIdols.");
                }
                this.partyChosenIdols.Add(num2);
            }
            uint num4 = (uint)reader.ReadUShort();

            for (int index = 0; (long)index < (long)num4; ++index)
            {
                PartyIdol instance = ProtocolTypeManager.GetInstance <PartyIdol>((uint)reader.ReadUShort());
                instance.Deserialize(reader);
                this.partyIdols.Add(instance);
            }
        }
예제 #2
0
        public override void Deserialize(ICustomDataInput reader)
        {
            var countChosenIdols = reader.ReadShort();

            ChosenIdols = new List <short>();
            for (short i = 0; i < countChosenIdols; i++)
            {
                ChosenIdols.Add(reader.ReadVarShort());
            }
            var countPartyChosenIdols = reader.ReadShort();

            PartyChosenIdols = new List <short>();
            for (short i = 0; i < countPartyChosenIdols; i++)
            {
                PartyChosenIdols.Add(reader.ReadVarShort());
            }
            var countPartyIdols = reader.ReadShort();

            PartyIdols = new List <PartyIdol>();
            for (short i = 0; i < countPartyIdols; i++)
            {
                var       partyIdolstypeId = reader.ReadShort();
                PartyIdol type             = new PartyIdol();
                type.Deserialize(reader);
                PartyIdols.Add(type);
            }
        }
예제 #3
0
        public override void Deserialize(IDataReader reader)
        {
            var ChosenIdolsCount = reader.ReadShort();

            ChosenIdols = new List <short>();
            for (var i = 0; i < ChosenIdolsCount; i++)
            {
                ChosenIdols.Add(reader.ReadVarShort());
            }
            var PartyChosenIdolsCount = reader.ReadShort();

            PartyChosenIdols = new List <short>();
            for (var i = 0; i < PartyChosenIdolsCount; i++)
            {
                PartyChosenIdols.Add(reader.ReadVarShort());
            }
            var PartyIdolsCount = reader.ReadShort();

            PartyIdols = new List <PartyIdol>();
            for (var i = 0; i < PartyIdolsCount; i++)
            {
                PartyIdol objectToAdd = ProtocolTypeManager.GetInstance(reader.ReadUShort());
                objectToAdd.Deserialize(reader);
                PartyIdols.Add(objectToAdd);
            }
        }
예제 #4
0
        public override void Deserialize(ICustomDataInput reader)
        {
            int chosenIdolsCount = reader.ReadUShort();
            int chosenIdolsIndex;

            m_chosenIdols = new System.Collections.Generic.List <ushort>();
            for (chosenIdolsIndex = 0; (chosenIdolsIndex < chosenIdolsCount); chosenIdolsIndex = (chosenIdolsIndex + 1))
            {
                m_chosenIdols.Add(reader.ReadVarUhShort());
            }
            int partyChosenIdolsCount = reader.ReadUShort();
            int partyChosenIdolsIndex;

            m_partyChosenIdols = new System.Collections.Generic.List <ushort>();
            for (partyChosenIdolsIndex = 0; (partyChosenIdolsIndex < partyChosenIdolsCount); partyChosenIdolsIndex = (partyChosenIdolsIndex + 1))
            {
                m_partyChosenIdols.Add(reader.ReadVarUhShort());
            }
            int partyIdolsCount = reader.ReadUShort();
            int partyIdolsIndex;

            m_partyIdols = new System.Collections.Generic.List <PartyIdol>();
            for (partyIdolsIndex = 0; (partyIdolsIndex < partyIdolsCount); partyIdolsIndex = (partyIdolsIndex + 1))
            {
                PartyIdol objectToAdd = ProtocolTypeManager.GetInstance <PartyIdol>((short)reader.ReadUShort());
                objectToAdd.Deserialize(reader);
                m_partyIdols.Add(objectToAdd);
            }
        }
예제 #5
0
        public override void Serialize(ICustomDataOutput writer)
        {
            writer.WriteShort(((short)(m_chosenIdols.Count)));
            int chosenIdolsIndex;

            for (chosenIdolsIndex = 0; (chosenIdolsIndex < m_chosenIdols.Count); chosenIdolsIndex = (chosenIdolsIndex + 1))
            {
                writer.WriteVarUhShort(m_chosenIdols[chosenIdolsIndex]);
            }
            writer.WriteShort(((short)(m_partyChosenIdols.Count)));
            int partyChosenIdolsIndex;

            for (partyChosenIdolsIndex = 0; (partyChosenIdolsIndex < m_partyChosenIdols.Count); partyChosenIdolsIndex = (partyChosenIdolsIndex + 1))
            {
                writer.WriteVarUhShort(m_partyChosenIdols[partyChosenIdolsIndex]);
            }
            writer.WriteShort(((short)(m_partyIdols.Count)));
            int partyIdolsIndex;

            for (partyIdolsIndex = 0; (partyIdolsIndex < m_partyIdols.Count); partyIdolsIndex = (partyIdolsIndex + 1))
            {
                PartyIdol objectToSend = m_partyIdols[partyIdolsIndex];
                writer.WriteUShort(((ushort)(objectToSend.TypeID)));
                objectToSend.Serialize(writer);
            }
        }
예제 #6
0
        public static void HandleIdolPartyRegisterRequestMessage(WorldClient client, IdolPartyRegisterRequestMessage message)
        {
            var partyChosenIdols = new PlayerIdol[0];
            var partyIdols       = new PartyIdol[0];

            if (client.Character.IsInParty(PartyTypeEnum.PARTY_TYPE_CLASSICAL))
            {
                partyIdols       = client.Character.Party.IdolInventory.GetPartyIdols().ToArray();
                partyChosenIdols = client.Character.Party.IdolInventory.GetIdols().ToArray();
            }

            if (message.register)
            {
                SendIdolListMessage(client, client.Character.IdolInventory.GetIdols(), partyChosenIdols, partyIdols);
            }
        }
 public void Deserialize(IDataReader reader)
 {
     ChosenIdols = new UInt16[reader.ReadShort()];
     for (var i = 0; i < ChosenIdols.Length; i++)
     {
         ChosenIdols[i] = (UInt16)reader.ReadVarShort();
     }
     PartyChosenIdols = new UInt16[reader.ReadShort()];
     for (var i = 0; i < PartyChosenIdols.Length; i++)
     {
         PartyChosenIdols[i] = (UInt16)reader.ReadVarShort();
     }
     PartyIdols = new PartyIdol[reader.ReadShort()];
     for (var i = 0; i < PartyIdols.Length; i++)
     {
         (PartyIdols[i] = new PartyIdol()).Deserialize(reader);
     }
 }
예제 #8
0
 public override void Serialize(IDataWriter writer)
 {
     writer.WriteShort((short)((int)this.chosenIdols.Length));
     uint[] numArray = this.chosenIdols;
     for (int i = 0; i < (int)numArray.Length; i++)
     {
         writer.WriteVarShort((int)numArray[i]);
     }
     writer.WriteShort((short)((int)this.partyChosenIdols.Length));
     uint[] numArray1 = this.partyChosenIdols;
     for (int j = 0; j < (int)numArray1.Length; j++)
     {
         writer.WriteVarShort((int)numArray1[j]);
     }
     writer.WriteShort((short)((int)this.partyIdols.Length));
     PartyIdol[] partyIdolArray = this.partyIdols;
     for (int k = 0; k < (int)partyIdolArray.Length; k++)
     {
         PartyIdol partyIdol = partyIdolArray[k];
         writer.WriteShort(partyIdol.TypeId);
         partyIdol.Serialize(writer);
     }
 }
예제 #9
0
        public override void Deserialize(IDataReader reader)
        {
            var limit        = reader.ReadShort();
            var chosenIdols_ = new short[limit];

            for (int i = 0; i < limit; i++)
            {
                chosenIdols_[i] = reader.ReadVarShort();
                if (chosenIdols_[i] < 0)
                {
                    throw new Exception("Forbidden value on chosenIdols_[i] = " + chosenIdols_[i] + ", it doesn't respect the following condition : chosenIdols_[i] < 0");
                }
            }
            chosenIdols = chosenIdols_;
            limit       = reader.ReadShort();
            var partyChosenIdols_ = new short[limit];

            for (int i = 0; i < limit; i++)
            {
                partyChosenIdols_[i] = reader.ReadVarShort();
                if (partyChosenIdols_[i] < 0)
                {
                    throw new Exception("Forbidden value on partyChosenIdols_[i] = " + partyChosenIdols_[i] + ", it doesn't respect the following condition : partyChosenIdols_[i] < 0");
                }
            }
            partyChosenIdols = partyChosenIdols_;
            limit            = reader.ReadShort();
            var partyIdols_ = new PartyIdol[limit];

            for (int i = 0; i < limit; i++)
            {
                partyIdols_[i] = Types.ProtocolTypeManager.GetInstance <PartyIdol>(reader.ReadShort());
                partyIdols_[i].Deserialize(reader);
            }
            partyIdols = partyIdols_;
        }
예제 #10
0
        public IEnumerable <PartyIdol> GetPartyIdols()
        {
            var idolItems  = Party.Members.SelectMany(x => x.Inventory.GetItems(y => y.Template.TypeId == (uint)ItemTypeEnum.IDOLE)).ToArray();
            var partyIdols = new Dictionary <int, PartyIdol>();

            foreach (var idolItem in idolItems)
            {
                var template = IdolManager.Instance.GetTemplateByItemId(idolItem.Template.Id);
                var ownerIds = new List <long>();

                if (partyIdols.TryGetValue(template.Id, out var partyIdol))
                {
                    ownerIds.AddRange(partyIdol.ownersIds);
                    partyIdols.Remove(partyIdol.id);
                }

                ownerIds.Add(idolItem.Owner.Id);
                partyIdol = new PartyIdol((short)template.Id, (short)template.ExperienceBonus, (short)template.DropBonus, ownerIds);

                partyIdols.Add(template.Id, partyIdol);
            }

            return(partyIdols.Values);
        }
예제 #11
0
 public IdolPartyRefreshMessage(
     PartyIdol partyIdol_
     )
 {
     PartyIdol_ = partyIdol_;
 }
예제 #12
0
 public override void Deserialize(IDataReader reader)
 {
     PartyIdol = new PartyIdol();
     PartyIdol.Deserialize(reader);
 }
예제 #13
0
 public IdolPartyRefreshMessage(PartyIdol PartyIdol)
 {
     this.PartyIdol = PartyIdol;
 }
예제 #14
0
 public IdolPartyRefreshMessage(PartyIdol partyIdol)
 {
     this.partyIdol = partyIdol;
 }
예제 #15
0
 public override void Deserialize(ICustomDataInput reader)
 {
     m_partyIdol = new PartyIdol();
     m_partyIdol.Deserialize(reader);
 }
예제 #16
0
 public IdolPartyRefreshMessage(PartyIdol partyIdol)
 {
     m_partyIdol = partyIdol;
 }
예제 #17
0
 public static void SendIdolPartyRefreshMessage(WorldClient client, PartyIdol idol)
 {
     client.Send(new IdolPartyRefreshMessage(idol));
 }
예제 #18
0
 public override void Deserialize(ICustomDataInput reader)
 {
     PartyIdol_ = new PartyIdol();
     PartyIdol_.Deserialize(reader);
 }