コード例 #1
0
    /// <summary>
    /// 获取未读消息记录
    /// </summary>
    public int GetUnCheckChatNum(UInt64 onlyId)
    {
        int res = 0;

        for (int i = 0; i < RoleManager.Instance.playerPeople.protoData.AllSinglePeopleChatDataList.Count; i++)
        {
            SinglePeopleChatData data = RoleManager.Instance.playerPeople.protoData.AllSinglePeopleChatDataList[i];
            if (data.Belong == onlyId)
            {
                for (int j = 0; j < data.ChatDataList.Count; j++)
                {
                    OneChatData oneData = data.ChatDataList[j];
                    if (!oneData.Checked)
                    {
                        res++;
                    }
                }
                break;
            }
        }
        return(res);
    }
コード例 #2
0
    public Button btn_reply;//回复按钮
    public override void Init(object[] args)
    {
        base.Init(args);

        oneChatData = args[0] as OneChatData;
        //bool isPlayer = false;
        People people = RoleManager.Instance.FindPeopleWithOnlyId(oneChatData.Belong);

        txt_content.SetText(oneChatData.Content);

        SetHeight();
        if (!oneChatData.IsPlayer)
        {
            //txt_name.gameObject.SetActive(true);
            img_icon.transform.SetParent(trans_enemyHeadPos, false);
            img_icon.transform.localPosition = Vector2.zero;
        }
        else
        {
            // txt_name.gameObject.SetActive(false);
            img_icon.transform.SetParent(trans_myHeadPos, false);

            img_icon.transform.localPosition = Vector2.zero;
        }

        switch (oneChatData.ChatType)
        {
        case (int)WetalkMsgType.InviteAction:
            if (oneChatData.Valid)
            {
                btn_reply.gameObject.SetActive(true);
            }
            else
            {
                btn_reply.gameObject.SetActive(false);
            }

            break;

        default:

            btn_reply.gameObject.SetActive(false);
            break;
        }

        addBtnListener(btn_reply, () =>
        {
            switch (oneChatData.ChatType)
            {
            case (int)WetalkMsgType.InviteAction:
                ActionSetting actionSetting = DataTable.FindActionSetting(oneChatData.InviteActionId);
                PanelManager.Instance.OpenCommonHint("是否答应和" + people.protoData.Name + actionSetting.name + "?"
                                                     , () =>
                {
                    SocializationManager.Instance.ApplyInvite(people);
                },
                                                     null,
                                                     "答应",
                                                     "拒绝");
                break;

            default:
                break;
            }
        });
    }
コード例 #3
0
    /// <summary>
    /// 发信给玩家 暂时只记录在玩家手机里面
    /// </summary>
    public void SendMsgToPlayer(People from, People to, WetalkMsgData wetalkMsgData)
    {
        SinglePeopleChatData singlePeopleChatData = null;
        UInt64 theOnlyId = 0;

        if (from.protoData.IsPlayer)
        {
            theOnlyId = to.protoData.OnlyId;
        }
        else
        {
            theOnlyId = from.protoData.OnlyId;
        }
        //红点
        for (int i = 0; i < RoleManager.Instance.playerPeople.protoData.AllSinglePeopleChatDataList.Count; i++)
        {
            if (RoleManager.Instance.playerPeople.protoData.AllSinglePeopleChatDataList[i].Belong == theOnlyId)
            {
                singlePeopleChatData = RoleManager.Instance.playerPeople.protoData.AllSinglePeopleChatDataList[i];
                //置顶
                var tmp = RoleManager.Instance.playerPeople.protoData.AllSinglePeopleChatDataList[0];
                RoleManager.Instance.playerPeople.protoData.AllSinglePeopleChatDataList[0] = singlePeopleChatData;
                RoleManager.Instance.playerPeople.protoData.AllSinglePeopleChatDataList[i] = tmp;
                break;
            }
        }
        //如果没有聊过天,则插到第一位
        if (singlePeopleChatData == null)
        {
            singlePeopleChatData        = new SinglePeopleChatData();
            singlePeopleChatData.Belong = theOnlyId;
            RoleManager.Instance.playerPeople.protoData.AllSinglePeopleChatDataList.Insert(0, singlePeopleChatData);
        }
        OneChatData oneChatData = new OneChatData();

        oneChatData.ChatType       = (int)wetalkMsgData.wetalkMsgType;
        oneChatData.Belong         = from.protoData.OnlyId;
        oneChatData.Content        = wetalkMsgData.content;
        oneChatData.InviteActionId = wetalkMsgData.inviteActionId;
        if (from.protoData.IsPlayer)
        {
            oneChatData.Checked = true;
        }
        oneChatData.IsPlayer = from.protoData.IsPlayer;
        oneChatData.Valid    = true;
        singlePeopleChatData.ChatDataList.Add(oneChatData);
        //上一条聊天记录需要失效(回复按钮取消等)
        if (singlePeopleChatData.ChatDataList.Count > 1)
        {
            singlePeopleChatData.ChatDataList[singlePeopleChatData.ChatDataList.Count - 2].Valid = false;
        }
        //后续可能只保留20条的聊天记录
        //其它人发给玩家的 则有红点
        if (!from.protoData.IsPlayer)
        {
            RedPoint son    = RedPointManager.Instance.GetRedPointFromDic(RedPointType.SinglePeopleChatMsg, from.protoData.OnlyId);
            RedPoint parent = RedPointManager.Instance.GetRedPointFromDic(RedPointType.AllChatMsg, 0);
            RedPointManager.Instance.BindRedPoint(parent, son);
            RedPointManager.Instance.ChangeRedPointStatus(RedPointType.SinglePeopleChatMsg, from.protoData.OnlyId, true);
        }
        //发消息给手机ui显示
        EventCenter.Broadcast(TheEventType.SendWetalkMessage, wetalkMsgData);
        EventCenter.Broadcast(TheEventType.ShowMainPanelRedPoint);
    }