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(); }
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(); }
public void AddKeywords(ArrayList keywords) { foreach (string keyword in keywords) { if (!KeywordList.Contains(keyword)) { KeywordList.Add(keyword); } } KeywordList.Sort(); }
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); }
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)); } }