Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        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);
        }