Пример #1
0
    /// <summary>
    /// 移除申请
    /// </summary>
    /// <param name="groupId"></param>
    /// <param name="playerId"></param>
    public void RemoveApply(int groupId, int playerId)
    {
        ChatGroupEntity group = GetGroup(groupId);

        if (group == null)
        {
            return;
        }

        for (int i = 0; i < group.ApplyList.Count; ++i)
        {
            if (group.ApplyList[i].id == playerId)
            {
                group.ApplyList.RemoveAt(i);
                break;
            }
        }
        group.hasNewApply = group.ApplyList.Count > 0;
        TransferData data = new TransferData();

        data.SetValue("GroupId", groupId);
        data.SetValue("PlayerId", playerId);
        data.SetValue("HasNewApply", group.hasNewApply);
        SendNotification(ON_GROUP_REMOVE_APPLY, data);
    }
Пример #2
0
    /// <summary>
    /// 进入房间
    /// </summary>
    /// <param name="obj"></param>
    private void OnEnterRoom(TransferData data)
    {
        ChatGroupEntity group = data.GetValue <ChatGroupEntity>("GroupEntity");

        if (group.id != m_GroupId)
        {
            return;
        }
        int          roomId = data.GetValue <int>("RoomId");
        PlayerEntity player = data.GetValue <PlayerEntity>("PlayerEntity");

        for (int i = 0; i < m_RoomList.Count; ++i)
        {
            if (m_RoomList[i].RoomId != roomId)
            {
                continue;
            }
            UIItemChatRoom room = m_RoomList[i];
            for (int j = 0; j < room.PlayerList.Count; ++j)
            {
                if (room.PlayerList[j].PlayerId == 0)
                {
                    room.PlayerList[j].SetUI(group.id, roomId, player.id, player.avatar, group.isOwner);
                    break;
                }
            }
        }
    }
Пример #3
0
    /// <summary>
    /// 显示群列表
    /// </summary>
    /// <param name="lst"></param>
    public void ShowGroupList(List <ChatGroupEntity> lst)
    {
        SetPageActive(lst.Count > 0 ? m_ExistGroup : m_NoneGroupPage);
        if (lst == null || lst.Count == 0)
        {
            return;
        }

        for (int i = 0; i < m_GroupList.Count; ++i)
        {
            UIItemChatGroup item = m_GroupList[i];
            UIPoolManager.Instance.Despawn(item.transform);
        }
        m_GroupList.Clear();

        for (int i = 0; i < lst.Count; ++i)
        {
            ChatGroupEntity group = lst[i];
            UIItemChatGroup item  = UIPoolManager.Instance.Spawn("UIItemChatGroup").GetComponent <UIItemChatGroup>();
            item.gameObject.SetParent(m_ChatGroupContainer);
            item.SetUI(group.id, group.name, group.avatar /*GetChatGroupHead(group.avatarIndex)*/, group.currMemberCount, group.maxMemberCount, group.roomCount);
            item.SetSelect(false);
            item.SetNewTip(group.hasNewApply);
            m_GroupList.Add(item);
        }
    }
Пример #4
0
    /// <summary>
    /// 设置成员身份
    /// </summary>
    /// <param name="groupId"></param>
    /// <param name="playerId"></param>
    /// <param name="isManager"></param>
    public void SetMemberIdentity(int groupId, int playerId, bool isManager, bool isPlayer)
    {
        ChatGroupEntity group = GetGroup(groupId);

        if (group == null)
        {
            return;
        }
        PlayerEntity player = GetMember(groupId, playerId);

        if (player == null)
        {
            return;
        }
        player.isManager = isManager;

        group.members.Sort();
        TransferData data = new TransferData();

        data.SetValue("GroupEntity", group);
        data.SetValue("PlayerEntity", player);
        data.SetValue("OneselfEntity", group.playerEntity);
        data.SetValue("IsPlayer", isPlayer);
        data.SetValue("Index", group.members.IndexOf(player));
        SendNotification(ON_PLAYER_INFO_CHANGED, data);
    }
Пример #5
0
    /// <summary>
    /// 添加成员
    /// </summary>
    /// <param name="obj"></param>
    private void OnAddMember(TransferData data)
    {
        ChatGroupEntity group = data.GetValue <ChatGroupEntity>("GroupEntity");

        if (group.id != m_GroupId)
        {
            return;
        }

        PlayerEntity     playerEntity  = data.GetValue <PlayerEntity>("PlayerEntity");
        PlayerEntity     oneselfEntity = data.GetValue <PlayerEntity>("OneselfEntity");
        int              index         = data.GetValue <int>("Index");
        UIItemChatMember item          = UIPoolManager.Instance.Spawn("UIItemChatMember").GetComponent <UIItemChatMember>();

        item.SetUI(group.id, playerEntity.id, playerEntity.nickname, playerEntity.online > 0, playerEntity.avatar, playerEntity.isOwner, playerEntity.isManager, oneselfEntity.isOwner, oneselfEntity.isManager);
        item.gameObject.SetParent(m_MemberContainer, true);
        item.transform.SetSiblingIndex(index);
        m_MemberList.Add(item);

        bool isPlayer = data.GetValue <bool>("IsPlayer");

        if (isPlayer)
        {
            m_BtnManage.gameObject.SetActive(playerEntity.isManager || playerEntity.isOwner);
        }
    }
Пример #6
0
    /// <summary>
    /// 设置成员状态
    /// </summary>
    public void SetMemberStatus(int groupId, int playerId, long onLine)
    {
        ChatGroupEntity group = GetGroup(groupId);

        if (group == null)
        {
            return;
        }
        PlayerEntity player = GetMember(groupId, playerId);

        if (player == null)
        {
            return;
        }
        player.online = onLine;

        //group.members.Sort();
        TransferData data = new TransferData();

        data.SetValue("GroupEntity", group);
        data.SetValue("PlayerEntity", player);
        data.SetValue("OneselfEntity", group.playerEntity);
        data.SetValue("Index", group.members.IndexOf(player));
        SendNotification(ON_PLAYER_INFO_CHANGED, data);
    }
Пример #7
0
    public void RemoveRecord(int groupId, int battleId)
    {
        ChatGroupEntity group = GetGroup(groupId);

        if (group == null)
        {
            return;
        }

        for (int i = 0; i < group.recordList.Count; ++i)
        {
            if (group.recordList[i].battleId == battleId)
            {
                group.recordList.RemoveAt(i);
                break;
            }
        }

        TransferData data = new TransferData();

        data.SetValue("GroupId", groupId);
        data.SetValue("BattleId", battleId);

        SendNotification(ON_REMOVE_RECORD, data);
    }
Пример #8
0
    /// <summary>
    /// 群信息变更
    /// </summary>
    /// <param name="obj"></param>
    private void OnGroupInfoChanged(TransferData data)
    {
        ChatGroupEntity group = data.GetValue <ChatGroupEntity>("GroupEntity");

        if (group == null)
        {
            return;
        }
        for (int i = 0; i < m_GroupList.Count; ++i)
        {
            if (group.id == m_GroupList[i].GroupId)
            {
                m_GroupList[i].SetUI(group.id, group.name, group.avatar, group.currMemberCount, group.maxMemberCount, group.roomCount);
                break;
            }
        }

        if (group.id == m_GroupId)
        {
            m_CurrentGroup.SetUI(group.id, group.name, group.avatar, group.currMemberCount, group.maxMemberCount, group.rooms.Count);
        }

        m_TxtPlayerCount.SafeSetText(string.Format("{0}人", group.currMemberCount, group.maxMemberCount));

        m_TxtCards.SafeSetText(group.cards.ToString());

        m_TxtWaitingRoomCount.SafeSetText(group.WaitingRoomCount.ToString());
        m_TxtGamingRoomCount.SafeSetText(group.GamingRoomCount.ToString());
    }
Пример #9
0
    /// <summary>
    /// 移除房间
    /// </summary>
    /// <param name="groupId">群Id</param>
    /// <param name="roomId">房间Id</param>
    public void RemoveRoom(int groupId, int roomId)
    {
        ChatGroupEntity group = GetGroup(groupId);

        if (group == null)
        {
            return;
        }
        for (int i = 0; i < group.rooms.Count; ++i)
        {
            if (group.rooms[i].roomId == roomId)
            {
                group.rooms.RemoveAt(i);
                group.roomCount = group.rooms.Count;
                break;
            }
        }

        TransferData data = new TransferData();

        data.SetValue("GroupId", groupId);
        data.SetValue("RoomId", roomId);
        SendNotification(ON_REMOVE_ROOM, data);

        SendGroupInfoChangedNotification(group);
    }
Пример #10
0
    /// <summary>
    /// 获取群成员列表
    /// </summary>
    /// <param name="groupId"></param>
    /// <returns></returns>
    public List <PlayerEntity> GetMemberList(int groupId)
    {
        ChatGroupEntity group = GetGroup(groupId);

        if (group == null)
        {
            return(null);
        }
        return(group.members);
    }
Пример #11
0
    /// <summary>
    /// 检测是否是群主
    /// </summary>
    /// <param name="groupId">群Id</param>
    /// <param name="playerId">玩家Id</param>
    /// <returns></returns>
    public bool CheckOwner(int groupId, int playerId)
    {
        ChatGroupEntity group = GetGroup(groupId);

        if (group == null)
        {
            return(false);
        }
        return(group.ownerId == playerId);
    }
Пример #12
0
    private void OnGroupInfoChanged(TransferData data)
    {
        ChatGroupEntity group = data.GetValue <ChatGroupEntity>("GroupEntity");

        if (group == null)
        {
            return;
        }
        m_GroupCardCount = group.cards;
        m_TxtGroupCardCount.SafeSetText(group.cards.ToString());
    }
Пример #13
0
    /// <summary>
    /// 发送群信息变更消息
    /// </summary>
    /// <param name="group"></param>
    private void SendGroupInfoChangedNotification(ChatGroupEntity group)
    {
        if (group == null)
        {
            return;
        }

        TransferData data = new TransferData();

        data.SetValue("GroupEntity", group);
        SendNotification(ON_GROUP_INFO_CHANGED, data);
    }
Пример #14
0
    /// <summary>
    /// 设置群房卡数量
    /// </summary>
    /// <param name="groupId"></param>
    /// <param name="cards"></param>
    public void SetGroupCards(int groupId, int cards)
    {
        ChatGroupEntity group = GetGroup(groupId);

        if (group == null)
        {
            return;
        }
        group.cards += cards;

        SendGroupInfoChangedNotification(group);
    }
Пример #15
0
    /// <summary>
    /// 添加新群
    /// </summary>
    /// <param name="data"></param>
    private void OnAddGroup(TransferData data)
    {
        SetPageActive(m_ExistGroup);
        ChatGroupEntity group = data.GetValue <ChatGroupEntity>("ChatGroup");
        UIItemChatGroup item  = UIPoolManager.Instance.Spawn("UIItemChatGroup").GetComponent <UIItemChatGroup>();

        item.gameObject.SetParent(m_ChatGroupContainer);
        item.SetUI(group.id, group.name, group.avatar /*GetChatGroupHead(group.avatarIndex)*/, group.currMemberCount, group.maxMemberCount, group.roomCount);
        item.SetSelect(false);
        item.SetNewTip(group.hasNewApply);
        m_GroupList.Add(item);
    }
Пример #16
0
    /// <summary>
    /// 添加战绩
    /// </summary>
    /// <param name="groupId"></param>
    /// <param name="record"></param>
    public void AddRecord(int groupId, RecordEntity record)
    {
        if (record == null)
        {
            return;
        }
        ChatGroupEntity group = GetGroup(groupId);

        if (group == null)
        {
            return;
        }

        if (!group.isRequested)
        {
            return;
        }

        for (int i = 0; i < group.recordList.Count; ++i)
        {
            if (group.recordList[i].battleId == record.battleId)
            {
                RemoveRecord(groupId, record.battleId);
                break;
            }
        }

        group.recordList.Add(record);

        TransferData data = new TransferData();

        data.SetValue("GroupId", group.id);
        data.SetValue("BattleId", record.battleId);
        data.SetValue <int>("RoomId", record.roomId);
        data.SetValue <string>("DateTime", record.time);
        data.SetValue <string>("GameName", record.gameName);
        List <TransferData> lstPlayer = new List <TransferData>();

        for (int i = 0; i < record.players.Count; ++i)
        {
            RecordPlayerEntity playerEntity = record.players[i];
            TransferData       playerData   = new TransferData();
            playerData.SetValue("PlayerId", playerEntity.id);
            playerData.SetValue("Avatar", playerEntity.avatar);
            playerData.SetValue("Gold", playerEntity.gold);
            playerData.SetValue("Nickname", playerEntity.nickname);
            lstPlayer.Add(playerData);
        }
        data.SetValue <List <TransferData> >("Player", lstPlayer);

        SendNotification(ON_ADD_RECORD, data);
    }
Пример #17
0
    /// <summary>
    /// 清空申请人
    /// </summary>
    public void ClearApply(int groupId)
    {
        ChatGroupEntity group = GetGroup(groupId);

        if (group == null)
        {
            return;
        }
        while (group.ApplyList.Count > 0)
        {
            RemoveApply(groupId, group.ApplyList[0].id);
        }
    }
Пример #18
0
    /// <summary>
    /// 清空房间
    /// </summary>
    /// <param name="groupId">群Id</param>
    public void ClearRoom(int groupId)
    {
        ChatGroupEntity group = GetGroup(groupId);

        if (group == null)
        {
            return;
        }
        while (group.rooms.Count > 0)
        {
            RemoveRoom(group.id, group.rooms[0].roomId);
        }
    }
Пример #19
0
    /// <summary>
    /// 清空群成员
    /// </summary>
    /// <param name="groupId">群Id</param>
    public void ClearMember(int groupId)
    {
        ChatGroupEntity group = GetGroup(groupId);

        if (group == null)
        {
            return;
        }

        while (group.members.Count > 0)
        {
            RemoveMember(groupId, group.members[0].id);
        }
    }
Пример #20
0
    /// <summary>
    /// 添加群
    /// </summary>
    /// <param name="entity">群数据实体</param>
    public void AddGroup(ChatGroupEntity entity)
    {
        if (GetGroup(entity.id) != null)//有这个群的信息了就不加了
        {
            AppDebug.LogWarning("这个群存在了");
            return;
        }
        AllGroup.Add(entity);

        TransferData data = new TransferData();

        data.SetValue("ChatGroup", entity);
        SendNotification(ON_ADD_GROUP, data);
    }
Пример #21
0
    /// <summary>
    /// 添加群成员
    /// </summary>
    /// <param name="groupId">群Id</param>
    /// <param name="entity">玩家数据实体</param>
    public void AddMember(int groupId, PlayerEntity entity, bool isPlayer)
    {
        if (entity == null)
        {
            return;
        }
        ChatGroupEntity group = GetGroup(groupId);

        if (group == null)
        {
            return;
        }
        if (GetMember(groupId, entity.id) != null)
        {
            AppDebug.LogWarning("这个玩家存在了");
            return;
        }
        AppDebug.Log("玩家" + entity.nickname + "加入群" + group.name);
        if (group.ownerId == entity.id)
        {
            entity.isOwner = true;
        }
        if (!group.isRequested)
        {
            ++group.currMemberCount;
        }
        else
        {
            group.members.Add(entity);
            group.currMemberCount = group.members.Count;
        }

        group.members.Sort();

        if (isPlayer)
        {
            group.playerEntity = entity;
        }

        TransferData data = new TransferData();

        data.SetValue("GroupEntity", group);
        data.SetValue("PlayerEntity", entity);
        data.SetValue("IsPlayer", isPlayer);
        data.SetValue("Index", group.members.IndexOf(entity));
        data.SetValue("OneselfEntity", group.playerEntity);
        SendNotification(ON_ADD_MEMBER, data);

        SendGroupInfoChangedNotification(group);
    }
Пример #22
0
    /// <summary>
    /// 添加房间
    /// </summary>
    /// <param name="groupId"></param>
    /// <param name="entity"></param>
    public void AddRoom(int groupId, RoomEntityBase entity, List <int> lstPlayerId)
    {
        ChatGroupEntity group = GetGroup(groupId);

        if (group == null)
        {
            return;
        }
        if (entity == null)
        {
            return;
        }
        if (GetRoom(groupId, entity.gameId) != null)
        {
            AppDebug.LogWarning("房间存在了");
            return;
        }
        AppDebug.Log("有一个新的房间");
        if (lstPlayerId != null)
        {
            for (int i = 0; i < lstPlayerId.Count; ++i)
            {
                bool isExists = false;
                for (int j = 0; j < group.members.Count; ++j)
                {
                    if (lstPlayerId[i] == group.members[j].id)
                    {
                        entity.players.Add(group.members[j]);
                        isExists = true;
                        break;
                    }
                }
                if (!isExists)
                {
                    entity.players.Add(null);
                }
            }
        }
        group.rooms.Add(entity);
        group.roomCount = group.rooms.Count;

        TransferData data = new TransferData();

        data.SetValue("GroupEntity", group);
        data.SetValue("RoomEntity", entity);
        SendNotification(ON_ADD_ROOM, data);

        SendGroupInfoChangedNotification(group);
    }
Пример #23
0
    /// <summary>
    /// 移除群
    /// </summary>
    /// <param name="groupId">群Id</param>
    public void RemoveGroup(int groupId)
    {
        ChatGroupEntity group = GetGroup(groupId);

        if (group == null)
        {
            return;
        }
        AllGroup.Remove(group);

        TransferData data = new TransferData();

        data.SetValue("ChatGroup", group);
        SendNotification(ON_REMOVE_GROUP, data);
    }
Пример #24
0
    /// <summary>
    /// 刷新申请
    /// </summary>
    /// <param name="groupId"></param>
    /// <param name="playerId"></param>
    public void RefreshApply(int groupId)
    {
        ChatGroupEntity group = GetGroup(groupId);

        if (group == null)
        {
            return;
        }
        Debug.Log("---------group.ApplyList-----------------" + group.ApplyList.Count);
        TransferData data = new TransferData();

        data.SetValue("GroupId", groupId);
        data.SetValue("ApplyList", group.ApplyList);
        SendNotification(ON_GROUP_REFRESH_APPLY, data);
    }
Пример #25
0
        public static int CreateChatGroup(ChatGroupInfo GroupInfo)
        {
            var _Context = new SystemContext();

            var entity = new ChatGroupEntity()
            {
                GroupName   = GroupInfo.GroupName,
                GroupDesc   = GroupInfo.GroupDesc,
                CreateDate  = DateTime.Now,
                CreateEmpID = GroupInfo.CreateEmpID,
                IsDelete    = false,
                IsPublic    = false
            };

            _Context.ChatGroupEntity.Add(entity);
            _Context.SaveChanges();

            // 将自己添加进组成员
            _Context.ChatGroupEmpsEntity.Add(new ChatGroupEmpsEntity()
            {
                GroupID = entity.GroupID,
                EmpID   = GroupInfo.CreateEmpID
            });

            foreach (var id in GroupInfo.Emps)
            {
                if (id != GroupInfo.CreateEmpID)
                {
                    _Context.ChatGroupEmpsEntity.Add(new ChatGroupEmpsEntity()
                    {
                        GroupID = entity.GroupID,
                        EmpID   = id
                    });
                }
            }

            _Context.SaveChanges();

            var notifySrv = UnityContainerHelper.GetServer <WSHandler>();

            notifySrv.Send(new
            {
                TargetGroup = entity.GroupID,
                MessageType = 104
            });

            return(entity.GroupID);
        }
Пример #26
0
    /// <summary>
    /// 添加聊天消息
    /// </summary>
    /// <param name="data"></param>
    private void OnAddMessage(TransferData data)
    {
        ChatGroupEntity group = data.GetValue <ChatGroupEntity>("GroupEntity");

        if (group == null)
        {
            return;
        }
        MessageEntity message = data.GetValue <MessageEntity>("Message");

        if (message == null)
        {
            return;
        }

        if (group.id != m_GroupId)
        {
            for (int i = 0; i < m_GroupList.Count; ++i)
            {
                if (m_GroupList[i].GroupId == group.id)
                {
                    m_GroupList[i].SetNewTip(true);
                }
            }
        }
        else
        {
            int index = data.GetValue <int>("Index");
            UIItemChatGroupMessage item = UIPoolManager.Instance.Spawn("UIItemChatGroupMessage").GetComponent <UIItemChatGroupMessage>();
            item.SetUI(message.sendPlayer.avatar, message.message.ToUTF8String(), message.isPlayer);
            item.gameObject.SetParent(m_MessageContainer);
            m_MessageList.Add(item);
            item.transform.SetSiblingIndex(index);
            if (index > 0)
            {
                m_ScrollViewMessage.scrollView.DOVerticalNormalizedPos(0f, 0.2f);
                if (!m_MessageContainer.gameObject.activeInHierarchy)
                {
                    m_NewMessageTip.SetActive(true);
                }
            }
            else
            {
                m_ScrollViewMessage.scrollView.DOVerticalNormalizedPos(0.99f, 0.2f);
            }
        }
    }
Пример #27
0
    /// <summary>
    /// 获取房间
    /// </summary>
    /// <param name="groupId">群Id</param>
    /// <param name="roomId">房间Id</param>
    /// <returns></returns>
    public RoomEntityBase GetRoom(int groupId, int roomId)
    {
        ChatGroupEntity group = GetGroup(groupId);

        if (group == null)
        {
            return(null);
        }
        for (int i = 0; i < group.rooms.Count; ++i)
        {
            if (group.rooms[i].roomId == roomId)
            {
                return(group.rooms[i]);
            }
        }
        return(null);
    }
Пример #28
0
    /// <summary>
    /// 申请加入群
    /// </summary>
    public void SetNewApply(int groupId, bool hasNewApply)
    {
        ChatGroupEntity group = GetGroup(groupId);

        if (group == null)
        {
            return;
        }

        group.hasNewApply = hasNewApply;

        TransferData data = new TransferData();

        data.SetValue("GroupId", groupId);
        data.SetValue("HasNewApply", group.hasNewApply);
        SendNotification(ON_GROUP_NEW_APPLY, data);
    }
Пример #29
0
    /// <summary>
    /// 获取成员
    /// </summary>
    /// <param name="groupId"></param>
    /// <param name="playerId"></param>
    /// <returns></returns>
    public PlayerEntity GetMember(int groupId, int playerId)
    {
        ChatGroupEntity group = GetGroup(groupId);

        if (group == null)
        {
            return(null);
        }
        for (int i = 0; i < group.members.Count; ++i)
        {
            if (group.members[i].id == playerId)
            {
                return(group.members[i]);
            }
        }
        return(null);
    }
Пример #30
0
    /// <summary>
    /// 玩家信息变更
    /// </summary>
    /// <param name="obj"></param>
    private void OnPlayerInfoChanged(TransferData data)
    {
        ChatGroupEntity group = data.GetValue <ChatGroupEntity>("GroupEntity");

        if (group == null)
        {
            return;
        }
        if (group.id != m_GroupId)
        {
            return;
        }
        PlayerEntity player        = data.GetValue <PlayerEntity>("PlayerEntity");
        PlayerEntity oneselfEntity = data.GetValue <PlayerEntity>("OneselfEntity");

        if (player == null)
        {
            return;
        }

        int index = data.GetValue <int>("Index");

        for (int i = 0; i < m_MemberList.Count; ++i)
        {
            if (m_MemberList[i].PlayerId == player.id)
            {
                m_MemberList[i].SetUI(group.id, player.id, player.nickname, player.online > 0, player.avatar, player.isOwner, player.isManager, oneselfEntity.isOwner, oneselfEntity.isManager);
                m_MemberList[i].transform.SetSiblingIndex(index);
                break;
            }
        }

        bool isPlayer = data.GetValue <bool>("IsPlayer");

        if (isPlayer)
        {
            m_BtnManage.gameObject.SetActive(player.isManager || player.isOwner);
            for (int i = 0; i < m_RoomPlayerList.Count; ++i)
            {
                m_RoomPlayerList[i].SetAuthority(player.isManager);
            }
        }
    }