public void Init(MasterMember member)
    {
        if (member.IsValid() == false)
        {
            return;
        }
        //显示待审批成员
        if (member.IsReserveMember() == false)
        {
            return;
        }

        m_MasterMember = member;

        if (m_NameLabel != null)
        {
            m_NameLabel.text = member.MemberName;
        }
        if (m_GuildNameLabel != null)
        {
            m_GuildNameLabel.text = member.GuildName;
        }
        if (m_LevelLabel != null)
        {
            m_LevelLabel.text = member.Level.ToString();
        }
        if (m_ProfessionLabel != null)
        {
            m_ProfessionLabel.text = Utils.GetProfessionNameByType(member.Profession);//StrDictionary.GetClientDictionaryString("#{" + CharacterDefine.PROFESSION_DICNUM[member.Profession].ToString() + "}");
        }
        if (m_CombatValueLabel != null)
        {
            m_CombatValueLabel.text = member.CombatValue.ToString();
        }
    }
Esempio n. 2
0
    void OnLoadMasterReserveMemberItem(GameObject resItem, object param)
    {
        if (null == resItem)
        {
            LogModule.ErrorLog("load master reserve member item fail");
            return;
        }

        Utils.CleanGrid(m_MasterReserveMemberGrid);

        //填充数据
        int nMasterMemberItemIndex = 0;

        foreach (KeyValuePair <UInt64, MasterMember> info in GameManager.gameManager.PlayerDataPool.MasterInfo.MasterReserveMemberList)
        {
            MasterMember member = info.Value;
            if (member.IsValid() && member.IsReserveMember() == true)
            {
                GameObject newMasterMemberItem = Utils.BindObjToParent(resItem, m_MasterReserveMemberGrid, nMasterMemberItemIndex.ToString());
                if (null != newMasterMemberItem &&
                    null != newMasterMemberItem.GetComponent <MasterReserveMemberItemLogic>())
                {
                    newMasterMemberItem.GetComponent <MasterReserveMemberItemLogic>().Init(member);
                }
                nMasterMemberItemIndex++;
            }
        }

        //Grid排序,防止列表异常
        m_MasterReserveMemberGrid.GetComponent <UIGrid>().Reposition();
        m_MasterReserveMemberGrid.GetComponent <UITopGrid>().Recenter(true);
    }
    public void UpdateSpeakers()
    {
        if (m_ChatInfoLogic == null)
        {
            return;
        }

        if (m_LastSpeakerItem == null)
        {
            return;
        }

        Utils.CleanGrid(m_LastSpeakersGrid);
        m_LastSpeakersList.Clear();

        switch (m_ChatInfoLogic.CurChannelType)
        {
        case ChatInfoLogic.CHANNEL_TYPE.CHAT_TYPE_WORLD:
        {
            List <ChatHistoryItem> historyList = GameManager.gameManager.PlayerDataPool.ChatHistory.ChatHistoryList;
            for (int i = 0; i < historyList.Count; ++i)
            {
                AddLastSpeakers(historyList[i]);
            }
        }
        break;

        case ChatInfoLogic.CHANNEL_TYPE.CHAT_TYPE_TELL:
        {
            List <LastSpeaker> tellList = GameManager.gameManager.PlayerDataPool.TellChatSpeakers.LastSpeakerList;
            for (int i = 0; i < tellList.Count; i++)
            {
                AddNewLastSpeaker(tellList[i].Guid, tellList[i].Name);
            }
        }
        break;

        case ChatInfoLogic.CHANNEL_TYPE.CHAT_TYPE_NORMAL:
        {
            foreach (KeyValuePair <string, Obj> objPair in Singleton <ObjManager> .Instance.ObjPools)
            {
                if (objPair.Value.ObjType == Games.GlobeDefine.GameDefine_Globe.OBJ_TYPE.OBJ_OTHER_PLAYER)
                {
                    Obj_OtherPlayer objPlayer = objPair.Value as Obj_OtherPlayer;
                    if (objPlayer != null)
                    {
                        AddNewLastSpeaker(objPlayer.GUID, objPlayer.BaseAttr.RoleName);
                    }
                }
            }
        }
        break;

        case ChatInfoLogic.CHANNEL_TYPE.CHAT_TYPE_TEAM:
        {
            if (GameManager.gameManager.PlayerDataPool.IsHaveTeam())
            {
                for (int i = 0; i < GlobeVar.MAX_TEAM_MEMBER; i++)
                {
                    TeamMember member = GameManager.gameManager.PlayerDataPool.TeamInfo.GetTeamMember(i);
                    if (member != null && member.IsValid() && member.Guid != Singleton <ObjManager> .Instance.MainPlayer.GUID)
                    {
                        AddNewLastSpeaker(member.Guid, member.MemberName);
                    }
                }
            }
        }
        break;

        case ChatInfoLogic.CHANNEL_TYPE.CHAT_TYPE_GUILD:
        {
            if (GameManager.gameManager.PlayerDataPool.IsHaveGuild())
            {
                m_GuildMemberSpeak.Clear();

                // 帮会频道先加载最近说过话的 再加载剩下的
                List <ChatHistoryItem> historyList = GameManager.gameManager.PlayerDataPool.ChatHistory.ChatHistoryList;
                for (int i = 0; i < historyList.Count; ++i)
                {
                    if (historyList[i].EChannel == GC_CHAT.CHATTYPE.CHAT_TYPE_GUILD &&
                        m_LastSpeakersGrid != null &&
                        historyList[i].SenderGuid != GlobeVar.INVALID_GUID &&
                        historyList[i].SenderName != "")
                    {
                        if (false == m_GuildMemberSpeak.Contains(historyList[i].SenderGuid))
                        {
                            AddNewLastSpeaker(historyList[i].SenderGuid, historyList[i].SenderName);
                            m_GuildMemberSpeak.Add(historyList[i].SenderGuid);
                        }
                    }
                }

                foreach (KeyValuePair <UInt64, GuildMember> memberPair in GameManager.gameManager.PlayerDataPool.GuildInfo.GuildMemberList)
                {
                    GuildMember member = memberPair.Value;
                    if (member.Guid != GlobeVar.INVALID_GUID &&
                        member.Job != (int)Games.GlobeDefine.GameDefine_Globe.GUILD_JOB.RESERVE &&
                        false == m_GuildMemberSpeak.Contains(member.Guid))
                    {
                        AddNewLastSpeaker(member.Guid, member.MemberName);
                    }
                }
            }
        }
        break;

        case ChatInfoLogic.CHANNEL_TYPE.CHAT_TYPE_MASTER:
        {
            if (GameManager.gameManager.PlayerDataPool.IsHaveMaster())
            {
                foreach (KeyValuePair <UInt64, MasterMember> memberPair in GameManager.gameManager.PlayerDataPool.MasterInfo.MasterMemberList)
                {
                    MasterMember member = memberPair.Value;
                    if (member.Guid != GlobeVar.INVALID_GUID &&
                        !member.IsReserveMember())
                    {
                        AddNewLastSpeaker(member.Guid, member.MemberName);
                    }
                }
            }
        }
        break;

        case ChatInfoLogic.CHANNEL_TYPE.CHAT_TYPE_FRIEND:
        {
            GameObject lastitem = null;
            // 两次循环 先加载不在未阅读好友列表的 再加载在的 保证有未阅读消息的好友在左侧列表最上方
            foreach (KeyValuePair <UInt64, Relation> _relation in GameManager.gameManager.PlayerDataPool.FriendList.RelationDataList)
            {
                if (!GameManager.gameManager.PlayerDataPool.ChatHistory.FriendSendList.Contains(_relation.Key))
                {
                    lastitem = AddNewLastSpeaker(_relation.Key, _relation.Value.Name);
                }
            }
            for (int i = GameManager.gameManager.PlayerDataPool.ChatHistory.FriendSendList.Count - 1; i >= 0; i--)
            {
                UInt64 senderGuid = GameManager.gameManager.PlayerDataPool.ChatHistory.FriendSendList[i];
                if (GameManager.gameManager.PlayerDataPool.FriendList.RelationDataList.ContainsKey(senderGuid))
                {
                    string senderName = GameManager.gameManager.PlayerDataPool.FriendList.RelationDataList[senderGuid].Name;
                    lastitem = AddNewLastSpeaker(senderGuid, senderName);
                }
            }
            if (lastitem != null && lastitem.GetComponent <LastSpeakerItemLogic>() != null)
            {
                lastitem.GetComponent <LastSpeakerItemLogic>().ChooseSpeaker();
            }
        }
        break;

        case ChatInfoLogic.CHANNEL_TYPE.CHAT_TYPE_SYSTEM:
            break;
        }
    }
Esempio n. 4
0
    public void UpdateData(GC_MASTER_RET_INFO info)
    {
        //清空之前的数据
        CleanUp();

        //判断消息包数据合法性
        if (info == null || info.MasterGuid == GlobeVar.INVALID_GUID)
        {
            return;
        }

        //填充数据
        MasterGuid         = info.MasterGuid;
        MasterName         = info.MasterName;
        MasterChiefGuid    = info.MasterChiefGuid;
        MasterTorch        = info.MasterTorch;
        MasterNotice       = info.MasterNotice;
        MasterOnlineNum    = info.MemberNum;
        m_MasterCreateTime = info.CreateTime;
        //技能
        if (info.Masterskill1 >= 0)
        {
            m_MasterSkillList.Add(info.Masterskill1, info.Masterskillname1);
        }
        if (info.Masterskill2 >= 0)
        {
            m_MasterSkillList.Add(info.Masterskill2, info.Masterskillname2);
        }
        if (info.Masterskill3 >= 0)
        {
            m_MasterSkillList.Add(info.Masterskill3, info.Masterskillname3);
        }
        if (info.Masterskill4 >= 0)
        {
            m_MasterSkillList.Add(info.Masterskill4, info.Masterskillname4);
        }
        if (info.Masterskill5 >= 0)
        {
            m_MasterSkillList.Add(info.Masterskill5, info.Masterskillname5);
        }
        if (info.Masterskill6 >= 0)
        {
            m_MasterSkillList.Add(info.Masterskill6, info.Masterskillname6);
        }
        //成员
        for (int i = 0; i < info.memberGuidCount; ++i)
        {
            MasterMember member = new MasterMember();
            member.CleanUp();

            member.Guid = info.GetMemberGuid(i);

            if (info.memberNameCount > i)
            {
                member.MemberName = info.GetMemberName(i);
            }
            if (info.memberVIPCount > i)
            {
                member.VIP = info.GetMemberVIP(i);
            }
            if (info.memberGuildNameCount > i)
            {
                member.GuildName = info.GetMemberGuildName(i);
            }
            if (info.memberLevelCount > i)
            {
                member.Level = info.GetMemberLevel(i);
            }
            if (info.memberCombatValueCount > i)
            {
                member.CombatValue = info.GetMemberCombatValue(i);
            }
            if (info.memberTorchCount > i)
            {
                member.Torch = info.GetMemberTorch(i);
            }
            if (info.memberLastLoginCount > i)
            {
                member.LastLogin = info.GetMemberLastLogin(i);
            }
            if (info.memberProfCount > i)
            {
                member.Profession = info.GetMemberProf(i);
            }
            if (info.memberStateCount > i)
            {
                member.State = info.GetMemberState(i);
            }
            if (info.memberIsReserveCount > i)
            {
                member.IsReserve = info.GetMemberIsReserve(i);
            }

            if (member.Guid == m_MasterChiefGuid)
            {
                //掌门姓名
                m_MasterChiefName = member.MemberName;
            }

            if (member.IsValid())
            {
                if (member.IsReserveMember())
                {
                    MasterReserveMemberList.Add(member.Guid, member);
                }
                else
                {
                    MasterMemberList.Add(member.Guid, member);
                }
            }
        }
        m_MasterMemberNum = MasterMemberList.Count;

        //按照薪火排序
        SortMemberListByTorch(m_MasterMemberList);

        if (ChatInfoLogic.Instance() != null)
        {
            ChatInfoLogic.Instance().UpdateMasterChannel();
            ChatInfoLogic.Instance().UpdateSpeakerList_Master();
        }
    }
    public void Init(MasterMember member)
    {
        if (member.IsValid() == false)
        {
            return;
        }
        //显示正式成员
        if (member.IsReserveMember())
        {
            return;
        }

        m_MasterMember = member;

        if (m_NameLabel != null)
        {
            m_NameLabel.text = member.MemberName;
        }
        if (m_GuildNameLabel != null)
        {
            if (member.GuildName != null && member.GuildName != "")
            {
                m_GuildNameLabel.text = member.GuildName;
            }
            else
            {
                //m_GuildNameLabel.text = "无";
                m_GuildNameLabel.text = StrDictionary.GetClientDictionaryString("#{2865}");
            }
        }
        if (m_LevelLabel != null)
        {
            m_LevelLabel.text = member.Level.ToString();
        }
        if (m_ProfessionLabel != null)
        {
            m_ProfessionLabel.text = Utils.GetProfessionNameByType(member.Profession);//StrDictionary.GetClientDictionaryString("#{" + CharacterDefine.PROFESSION_DICNUM[member.Profession].ToString() + "}");
        }
        if (m_CombatValueLabel != null)
        {
            m_CombatValueLabel.text = member.CombatValue.ToString();
        }
        if (m_OffLineTimeLable != null)
        {
            //member.LastLogin为1970年1月1日至今的标准时间,需要转换为时分秒
            if (member.State == 1)
            {
                //在线,显示在线
                //m_OffLineTimeLable.text = "在线";
                m_OffLineTimeLable.text = StrDictionary.GetClientDictionaryString("#{2866}");
            }
            else
            {
                DateTime startTime = new DateTime(1970, 1, 1);
                DateTime sendDate  = new DateTime((long)member.LastLogin * 10000000L + startTime.Ticks, DateTimeKind.Unspecified);
                sendDate = sendDate.ToLocalTime();
                if (DateTime.Now.Subtract(sendDate).Days < 1)
                {
                    m_OffLineTimeLable.text = sendDate.ToString("HH:mm");
                }
                else
                {
                    m_OffLineTimeLable.text = sendDate.ToString("MM-dd");
                }
            }
        }
    }