示例#1
0
    //..........................................................................................................................
    public void ProcessMessage(CloudMailbox.BaseMessage inMessage)
    {
        // add into pending friends..
        CloudMailbox.FriendRequest req = inMessage as CloudMailbox.FriendRequest;
        if (req != null)
        {
            FriendInfo fInfo = m_Friends.Find(f => f.PrimaryKey == inMessage.m_Sender);
            if (fInfo != null)
            {
                //Debug.Log("User with name " + inMessage.m_Sender + " is already your friend");
                return;
            }

            List <PendingFriendInfo> pfInfo = m_PendingFriends.FindAll(f => f.PrimaryKey == inMessage.m_Sender);
            if (pfInfo != null && pfInfo.Count > 0)
            {
                foreach (PendingFriendInfo p in pfInfo)
                {
                    if (p != null && p.IsItRequest == true)
                    {
                        //Debug.Log("Request from this person is already in pending list");
                        return;
                    }
                }
            }

            PendingFriendInfo friend = new PendingFriendInfo();
            friend.PrimaryKey   = req.m_Sender;
            friend.Nickname     = req.m_NickName;
            friend.Username_New = req.m_Username;
            friend.AddedDate    = GuiBaseUtils.DateToEpoch(inMessage.m_SendTime);
            friend.Message      = inMessage.m_Message;
            friend.CloudCommand = req.m_ConfirmCommand;

            m_PendingFriends.Add(friend);
            OnPendingFriendListChanged();
            Save();
            return;
        }

        CloudMailbox.FriendRequestReject reject = inMessage as CloudMailbox.FriendRequestReject;
        if (reject != null)
        {
            // remove this friend from pending list if it is still there.
            List <PendingFriendInfo> pfInfo = m_PendingFriends.FindAll(friend => friend.PrimaryKey == inMessage.m_Sender);
            if (pfInfo != null && pfInfo.Count > 0)
            {
                foreach (PendingFriendInfo p in pfInfo)
                {
                    m_PendingFriends.Remove(p);
                }
            }

            OnPendingFriendListChanged();
            Save();
            return;
        }

        Debug.LogError("Unknown message " + inMessage + " " + inMessage.msgType);
    }
示例#2
0
    public static string GetSubject(this Message message)
    {
        string text = message != null ? message.m_Message : "";

        if (message is NewsMessage)
        {
            NewsMessage msg = (NewsMessage)message;
            text = string.IsNullOrEmpty(msg.m_Subject) == false ? msg.m_Subject : msg.m_HeadLine;
        }
        else if (message is ResetResearch)
        {
            text = TextDatabase.instance[01170010];
        }
        return(string.IsNullOrEmpty(text) == false ? text : "");
    }
示例#3
0
    public static string GetMessage(this Message message)
    {
        string text = message != null ? message.m_Message : "";

        if (message is NewsMessage)
        {
            NewsMessage msg = (NewsMessage)message;
            text = string.IsNullOrEmpty(text) == true ? msg.m_HeadLine : text;
        }
        else if (message is ResetResearch)
        {
            text = TextDatabase.instance[01170010].Replace("\n", " ");
        }
        return(string.IsNullOrEmpty(text) == false ? text : "");
    }
示例#4
0
        public void Update(Message message, int index, bool selected)
        {
            m_MessageIndex = index;

            m_Highlight.Show(m_Line.Visible && selected, true);
            m_Sender.SetNewText(GuiBaseUtils.FixNameForGui(message.GetSender()));
            m_Subject.SetNewText(GuiBaseUtils.TrimLongText(message.GetSubject(), MAX_SUBJECT_LENGTH));

            m_SenderIcon.State = message.GetMultiSpriteState();

            if (message.m_IsRead != m_IsReadIcon.Widget.Visible)
            {
                m_IsReadIcon.Widget.Show(message.m_IsRead, true);
            }
        }
示例#5
0
        public void Update(Message message, int index)
        {
            m_MessageIndex = index;

            m_Subject.SetNewText(message != null ? GuiBaseUtils.TrimLongText(message.GetSubject(), MAX_SUBJECT_LENGTH) : "");
            m_Date.SetNewText(message != null ? message.m_SendTime.ToLongRegionalString() : "");
            m_Text.SetNewText(message != null ? message.GetMessage() : TextDatabase.instance[0104112]);

            bool showReply = m_MessageIndex >= 0 && message is FriendMessage ? true : false;

            if (showReply != m_Reply.Widget.Visible)
            {
                m_Reply.Widget.Show(showReply, true);
            }
        }
示例#6
0
    // HANDLERS

    void OnUpdateTableRow(GUIBase_Widget widget, int rowIndex, int itemIndex)
    {
        MessageLine row = m_MessageLines[rowIndex];

        if (itemIndex < m_Messages.Length)
        {
            Message message = m_Messages[itemIndex];
            bool    active  = m_ActiveMessage == itemIndex ? true : false;

            row.Show();
            row.Update(message, itemIndex, active);
        }
        else
        {
            row.Hide();
        }
    }
示例#7
0
    void ProcessMessages(Message[] messages)
    {
        m_Messages         = messages;
        m_ImportantMessage = -1;

        System.Array.Sort(m_Messages, (x, y) => { return(x.m_SendTime.CompareTo(y.m_SendTime) * -1); });

        int unreadMessage = 0;

        for (int idx = 0; idx < m_Messages.Length; ++idx)
        {
            Message message = m_Messages[idx];
            if (message.m_IsRead == true)
            {
                continue;
            }

            if (message is FriendMessage)
            {
                unreadMessage++;
            }
            else if (message is SystemMessage)
            {
                if (m_ImportantMessage == -1)
                {
                    m_ImportantMessage = idx;
                }
                unreadMessage++;
            }
        }
        ;

        m_MessageList.MaxItems = m_Messages.Length;
        m_MessageList.Widget.SetModify();

        m_UnreadMessages = unreadMessage;
        ActiveMessage    = m_ActiveMessage;
    }
示例#8
0
 public static string GetSender(this Message message)
 {
     if (message is FriendMessage)
     {
         FriendMessage friendMessage = (FriendMessage)message;
         if (string.IsNullOrEmpty(friendMessage.m_NickName) == false)
         {
             return(friendMessage.m_NickName);
         }
         var friend = GameCloudManager.friendList.friends.Find(obj => obj.PrimaryKey == message.m_Sender);
         if (friend != null)
         {
             return(friend.Nickname);
         }
     }
     else if (message is FriendRequest)
     {
         FriendRequest friendRequest = (FriendRequest)message;
         if (string.IsNullOrEmpty(friendRequest.m_NickName) == false)
         {
             return(friendRequest.m_NickName);
         }
         if (string.IsNullOrEmpty(friendRequest.m_Username) == false)
         {
             return(friendRequest.m_Username);
         }
     }
     else if (message is FriendRequestReject)
     {
         FriendRequestReject friendRequest = (FriendRequestReject)message;
         if (string.IsNullOrEmpty(friendRequest.m_NickName) == false)
         {
             return(friendRequest.m_NickName);
         }
     }
     return(message != null && string.IsNullOrEmpty(message.m_Sender) == false ? message.m_Sender : message.msgType);
 }
示例#9
0
 public static string GetMultiSpriteState(this Message message)
 {
     return(message != null?message.GetType().Name : GUIBase_MultiSprite.DefaultState);
 }