Esempio n. 1
0
        private void SetRank(int rank)
        {
            ArrayList rankWords = new ArrayList(4);

            rankWords.AddRange(new string[] { "best", "1", "2", "3" });

            RemoveKeywords(rankWords);

            switch (rank)
            {
            case 0:
                KeywordList.AddRange(new string[] { "1", "best" });
                break;

            case 1:
                KeywordList.Add("1");
                break;

            case 2:
                KeywordList.Add("2");
                break;

            case 3:
                KeywordList.Add("3");
                break;
            }

            KeywordList.Sort();
        }
Esempio n. 2
0
        private void SetRank(int rank)
        {
            // rebuilding the keyword list this way is necessary, otherwise, other recently selected List View items are getting promoted
            // maybe there is a shared pointer reference or something to the keywordlist
            // basically I have no idea why this line of code is necessary, but it is necessary
            _keywordList = new List <string>(_keywordList);
            List <string> rankWords = new List <string>(4);

            rankWords.AddRange(new string[] { "best", "1", "2", "3" });

            RemoveKeywords(rankWords);

            switch (rank)
            {
            case 0:
                KeywordList.AddRange(new string[] { "1", "best" });
                break;

            case 1:
                KeywordList.Add("1");
                break;

            case 2:
                KeywordList.Add("2");
                break;

            case 3:
                KeywordList.Add("3");
                break;
            }

            KeywordList.Sort();
        }
Esempio n. 3
0
 public void AddKeywords(ArrayList keywords)
 {
     foreach (string keyword in keywords)
     {
         if (!KeywordList.Contains(keyword))
         {
             KeywordList.Add(keyword);
         }
     }
     KeywordList.Sort();
 }
Esempio n. 4
0
        public static KeywordList Deserialize(byte[] buffer)
        {
            if (buffer == null)
            {
                throw new ArgumentNullException(nameof(buffer));
            }

            // Serialized sequentially as length-prefixed string.
            KeywordList keywords = new KeywordList();

            using (BinaryReader reader = new BinaryReader(new MemoryStream(buffer)))
            {
                while (reader.BaseStream.Position < reader.BaseStream.Length)
                {
                    byte   length  = reader.ReadByte();
                    byte[] keyword = reader.ReadBytes(length);
                    keywords.Add(keyword);
                }
            }
            return(keywords);
        }
Esempio n. 5
0
        public static void UnicodeSpeechChat3(NetState state, PacketReader pvSrc)
        {
            Mobile from = state.Mobile;

            MessageType type = (MessageType)pvSrc.ReadByte();
            int         hue  = pvSrc.ReadInt16();

            pvSrc.ReadInt16(); // font
            string lang = pvSrc.ReadString(4);
            string text;

            bool isEncoded = (type & MessageType.Encoded) != 0;

            int[] keywords;

            if (isEncoded)
            {
                int value = pvSrc.ReadInt16();
                int count = (value & 0xFFF0) >> 4;
                int hold  = value & 0xF;

                if (count < 0 || count > 50)
                {
                    return;
                }

                KeywordList keyList = c_KeywordList;

                for (int i = 0; i < count; ++i)
                {
                    int speechID;

                    if ((i & 1) == 0)
                    {
                        hold   <<= 8;
                        hold    |= pvSrc.ReadByte();
                        speechID = hold;
                        hold     = 0;
                    }
                    else
                    {
                        value    = pvSrc.ReadInt16();
                        speechID = (value & 0xFFF0) >> 4;
                        hold     = value & 0xF;
                    }

                    if (!keyList.Contains(speechID))
                    {
                        keyList.Add(speechID);
                    }
                }

                text = pvSrc.ReadUTF8StringSafe();

                keywords = keyList.ToArray();
            }
            else
            {
                text = pvSrc.ReadUnicodeStringSafe();

                keywords = c_EmptyInts;
            }

            text = text.Trim();

            if (text.Length <= 0 || text.Length > 128)
            {
                return;
            }

            type &= ~MessageType.Encoded;

            if (!Enum.IsDefined(typeof(MessageType), type))
            {
                type = MessageType.Regular;
            }

            from.Language = lang;

            Channel c = Channel.GetByType(typeof(Guild));

            if (RUOVersion.GuildChat(type) && c != null)
            {
                if (c.CanChat(from, true))
                {
                    c.OnChat(from, text);
                }
            }
            else
            {
                from.DoSpeech(text, keywords, type, Utility.ClipDyedHue(hue));
            }
        }