public static void MailProcessMessadge(ModelMail incoming) { var msg = (ModelMailMessadge)incoming; LetterDef def; switch (msg.type) { case ModelMailMessadge.MessadgeTypes.ThreatBig: def = LetterDefOf.ThreatBig; break; case ModelMailMessadge.MessadgeTypes.ThreatSmall: def = LetterDefOf.ThreatSmall; break; case ModelMailMessadge.MessadgeTypes.Death: def = LetterDefOf.Death; break; case ModelMailMessadge.MessadgeTypes.Negative: def = LetterDefOf.NegativeEvent; break; case ModelMailMessadge.MessadgeTypes.Neutral: def = LetterDefOf.NeutralEvent; break; case ModelMailMessadge.MessadgeTypes.Positive: def = LetterDefOf.PositiveEvent; break; case ModelMailMessadge.MessadgeTypes.Visitor: def = LetterDefOf.AcceptVisitors; break; default: def = LetterDefOf.NeutralEvent; break; } Find.LetterStack.ReceiveLetter(ChatController.ServerCharTranslate(msg.label) , ChatController.ServerCharTranslate(msg.text) , def); }
public bool ApplyChats(ModelUpdateChat updateDate) { //переводим сообщения с сервера for (int ic = 0; ic < updateDate.Chats.Count; ic++) { for (int ip = 0; ip < updateDate.Chats[ic].Posts.Count; ip++) { updateDate.Chats[ic].Posts[ip].Message = ChatController.ServerCharTranslate(updateDate.Chats[ic].Posts[ip].Message); } } int newPost = 0; var newStr = ""; if (Chats != null) { lock (Chats) { foreach (var chat in updateDate.Chats) { var cur = Chats.FirstOrDefault(c => c.Id == chat.Id); if (cur != null) { cur.Posts.AddRange(chat.Posts); var newPosts = chat.Posts.Where(p => p.OwnerLogin != SessionClientController.My.Login).ToList(); newPost += newPosts.Count; if (newStr == "" && newPosts.Count > 0) { newStr = chat.Name + ": " + newPosts[0].Message; } chat.Posts = cur.Posts; cur.Name = chat.Name; // это только для ускорения, сервер не передает список пати логинов, если ничего не изменилось // т.к. передать 3000+ логинов по 8 байт, это уже несколько пакетов if (chat.PartyLogin != null && chat.PartyLogin.Count > 0) { cur.PartyLogin = chat.PartyLogin; } } else { Chats.Add(chat); } } var ids = updateDate.Chats.Select(x => x.Id); Chats.RemoveAll(x => !ids.Contains(x.Id)); } } else { Chats = updateDate.Chats; } if (UIInteraction && newPost > 0) { GameMessage(newStr); } ChatNotReadPost += newPost; return(newPost > 0); }