/// <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); }
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; } }); }
/// <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); }