Example #1
0
        /// <summary>
        /// 根據目前登入者檢查是否有權限存取功能
        /// </summary>
        /// <param name="appFunctionId"></param>
        /// <returns></returns>
        public static bool CheckAuthorization(MasterMember loginUser, int appFunctionId, int operations)
        {
            if (loginUser == null)
            {
                return(false);
            }

            if (loginUser != null && operations == 0 && appFunctionId == 0)
            {
                return(true);
            }

            bool returnValue = false;

            //// 判斷使用者是否具有可以存取功能的角色
            var roles = from userRole in loginUser.AdminRoles
                        where userRole.AdminBar.AdminBarId == appFunctionId &&
                        (userRole.AdminValue & operations) == operations
                        select userRole;

            if (roles.Count() > 0)
            {
                returnValue = true;
            }

            return(returnValue);
        }
Example #2
0
        /// <summary>
        /// 驗證使用者,若通過驗證則完成簽入動作
        /// </summary>
        /// <returns></returns>
        public bool ValidateUser()
        {
            IDictionary <string, string> conditions = new Dictionary <string, string>();

            conditions.Add("Account", this.Account);
            IList <MasterMember> adminList = m_FTISService.GetMasterMemberListNoLazy(conditions);

            if (adminList != null && adminList.Count() > 0)
            {
                MasterMember admin           = adminList[0];
                string       passwordDecrypt = EncryptUtil.GetMD5(Password);
                if (passwordDecrypt.Equals(admin.Password, StringComparison.OrdinalIgnoreCase))
                {
                    //modelUser = admin;
                    FormsAuthentication.SetAuthCookie(this.Account, this.RememberMe);
                    Ticket.SignIn(this.Account, this.RememberMe, 1);
                    m_SessionHelper.LoginUser = admin;

                    ////登入紀錄
                    MasterLog masterLog = new MasterLog(this.Account, HttpHelper.GetUserIp());
                    m_FTISService.CreateMasterLog(masterLog);

                    return(true);
                }
            }

            return(false);
        }
Example #3
0
        public ActionResult Delete(int id)
        {
            AjaxResult result = new AjaxResult();

            try
            {
                if (id.Equals(1))
                {
                    throw new Exception("admin不可刪除!");
                }

                MasterMember entity = m_FTISService.GetMasterMemberById(id);
                m_FTISService.DeleteMasterMember(entity);

                result.ErrorCode = AjaxResultStatus.Success;
                result.Message   = string.Format("{0}刪除成功", entity.Name);
            }
            catch (Exception ex)
            {
                result.ErrorCode = AjaxResultStatus.Exception;
                result.Message   = ex.Message;
            }

            return(this.Json(result));
        }
    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();
        }
    }
Example #5
0
        protected void LoadEntity(MasterMember entity)
        {
            if (entity != null)
            {
                EntityId = entity.MasterMemberId;
                Name     = entity.Name;
                Account  = entity.Account;
                Password = m_DefaultPass;
                Status   = entity.Status;
                RegDate  = entity.RegDate;
                Email    = entity.Email;
                Tel      = entity.Tel;
                Memo     = entity.Memo;

                ////權限
                RolesBarList1  = GetRolesBarList(entity, SiteEntities.Master);
                RolesBarList2  = GetRolesBarList(entity, SiteEntities.AboutUs);
                RolesBarList3  = GetRolesBarList(entity, SiteEntities.News);
                RolesBarList4  = GetRolesBarList(entity, SiteEntities.HomeNews);
                RolesBarList5  = GetRolesBarList(entity, SiteEntities.Activity);
                RolesBarList6  = GetRolesBarList(entity, SiteEntities.Member);
                RolesBarList7  = GetRolesBarList(entity, SiteEntities.Download);
                RolesBarList8  = GetRolesBarList(entity, SiteEntities.Norm);
                RolesBarList9  = GetRolesBarList(entity, SiteEntities.Carbon);
                RolesBarList10 = GetRolesBarList(entity, SiteEntities.Application);
                RolesBarList11 = GetRolesBarList(entity, SiteEntities.Grade);
                RolesBarList12 = GetRolesBarList(entity, SiteEntities.Question);
                RolesBarList13 = GetRolesBarList(entity, SiteEntities.Links);
                RolesBarList14 = GetRolesBarList(entity, SiteEntities.Epaper);
                RolesBarList15 = GetRolesBarList(entity, SiteEntities.Season);
                RolesBarList16 = GetRolesBarList(entity, SiteEntities.Examination);
                RolesBarList17 = GetRolesBarList(entity, SiteEntities.GreenFactory);
            }
        }
Example #6
0
        private string[] GetRolesBarList(MasterMember entity, SiteEntities siteEntities)
        {
            IList <string> list = new List <string>();

            foreach (SiteOperations operation in Enum.GetValues(typeof(SiteOperations)))
            {
                if (operation == SiteOperations.None)
                {
                    continue;
                }

                if (ACUtility.CheckAuthorization(entity, (int)siteEntities, (int)operation))
                {
                    list.Add(((int)operation).ToString());
                }
            }

            if (list.Count > 0)
            {
                return(list.ToArray());
            }
            else
            {
                return(new string[] { });
            }
        }
Example #7
0
        public ActionResult MultiDelete(string allId)
        {
            AjaxResult    result = new AjaxResult(AjaxResultStatus.Success, string.Empty);
            StringBuilder sbMsg  = new StringBuilder();

            string[] ids = allId.Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries);

            foreach (string id in ids)
            {
                try
                {
                    if ("1".Equals(id))
                    {
                        throw new Exception("admin不可刪除!");
                    }

                    MasterMember entity = m_FTISService.GetMasterMemberById(Convert.ToInt32(id));
                    m_FTISService.DeleteMasterMember(entity);
                }
                catch (Exception ex)
                {
                    result.ErrorCode = AjaxResultStatus.Fail;
                    sbMsg.AppendFormat(ex.Message + "<br/>");
                }
            }

            result.Message = sbMsg.ToString();
            return(this.Json(result));
        }
Example #8
0
        /// <summary>
        /// 根據目前登入者檢查是否有權限存取功能
        /// </summary>
        /// <param name="appFunctionId"></param>
        /// <returns></returns>
        public static bool CheckAuthorization(MasterMember loginUser, SiteEntities appFunction)
        {
            int appFunctionId = (int)appFunction;

            if (loginUser == null)
            {
                return(false);
            }

            if (loginUser != null && appFunctionId == 0)
            {
                return(true);
            }

            bool returnValue = false;

            //// 判斷使用者是否具有可以存取功能的角色,只要AdminValue大於0表示有此Menu
            var roles = from userRole in loginUser.AdminRoles
                        where userRole.AdminBar.AdminBarId == appFunctionId &&
                        userRole.AdminValue > 0
                        select userRole;

            if (roles.Count() > 0)
            {
                returnValue = true;
            }

            return(returnValue);
        }
Example #9
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);
    }
Example #10
0
        public void SendMasterList(WorldClient pClient)
        {
            if (pClient.Character.MasterList.Count == 0)
            {
                return;
            }

            using (var packet = new Packet(SH37Type.SendMasterList))
            {
                MasterMember Master = pClient.Character.MasterList.Find(d => d.IsMaster == true);
                if (Master != null)
                {
                    int nowyear  = (Master.RegisterDate.Year - 1920 << 1) | Convert.ToByte(Master.IsOnline);
                    int nowmonth = (Master.RegisterDate.Month << 4) | 0x0F;
                    packet.WriteString(Master.pMemberName, 16);
                    packet.WriteByte((byte)nowyear);
                    packet.WriteByte((byte)nowmonth);
                    packet.WriteByte((byte)DateTime.Now.Day);
                    packet.WriteByte(0x01); //unk
                    packet.WriteByte(Master.Level);
                    packet.WriteByte(0);    //unk
                    packet.WriteByte(0x03); //unk
                    int count = pClient.Character.MasterList.Count - 1;
                    packet.WriteUShort((ushort)count);
                }
                else
                {
                    DateTime now      = DateTime.Now;
                    int      nowyear  = (now.Year - 1920 << 1) | 1;
                    int      nowmonth = (now.Month << 4) | 0x0F;
                    packet.WriteString("", 16);
                    packet.WriteByte((byte)nowyear);
                    packet.WriteByte((byte)nowmonth);
                    packet.WriteByte((byte)now.Day);
                    packet.WriteByte(0x01); //unk
                    packet.WriteByte(1);
                    packet.WriteByte(0);    //unk
                    packet.WriteByte(0x03); //unk
                    packet.WriteUShort((ushort)pClient.Character.MasterList.Count);
                    //tODO when master null
                }
                foreach (var Member in pClient.Character.MasterList)
                {
                    packet.WriteString(Member.pMemberName, 16);
                    int year  = (Member.RegisterDate.Year - 1920 << 1) | Convert.ToUInt16(Member.IsOnline);
                    int month = (Member.RegisterDate.Month << 4) | 0x0F;
                    packet.WriteByte((byte)year);
                    packet.WriteByte((byte)month);
                    packet.WriteByte(0xB9);
                    packet.WriteByte(0x11); //unk
                    packet.WriteByte(Member.Level);
                    packet.WriteByte(0);    //unk
                }
                pClient.SendPacket(packet);
            }
        }
Example #11
0
        public bool CheckLoginId(string account)
        {
            bool         result       = true;
            MasterMember masterMember = m_FTISService.GetMasterMemberByAccount(account);

            if (masterMember == null)
            {
                result = false;
            }

            return(result);
        }
Example #12
0
        public void Test_MasterMemberPassword()
        {
            //查詢
            IDictionary <string, string> conditions = new Dictionary <string, string>();

            conditions.Add("Account", "admin");
            IList <MasterMember> adminList = m_FTISService.GetMasterMemberListNoLazy(conditions);
            MasterMember         admin     = adminList[0];
            string password = admin.Password;
            string md5      = EncryptUtil.GetMD5("01801726");

            Assert.IsTrue(password.Equals(md5, StringComparison.OrdinalIgnoreCase));
        }
Example #13
0
        public void ApprenticeLevelUP(WorldCharacter pChar)
        {
            MasterMember pMember = pChar.MasterList.Find(d => d.IsMaster == true);

            if (pMember != null)
            {
                //Todo Add Break if the difference is greater than 5
                AddApprenticeReward(pChar);
                MasterMember.UpdateLevel(pChar.Character.CharLevel, pChar.Character.Name);
                if (pMember.pMember.Character.Client != null)
                {
                    SendApprenticeLevelUp(pMember.pMember, pChar.Character.Name, pChar.Character.CharLevel);
                }
            }
        }
Example #14
0
        public void RemoveMasterMember(WorldCharacter pChar, string name)
        {
            MasterMember pMember = pChar.MasterList.Find(d => d.pMemberName == name);
            WorldClient  pClient = ClientManager.Instance.GetClientByCharname(name);

            if (pClient != null)
            {
                SendApprenticeRemoveMaster(pClient, pMember.pMemberName);
                pClient.Character.MasterList.Remove(pMember);
            }
            pMember.RemoveFromDatabase();
            pMember.RemoveFromDatabase(pChar.Character.ID, pMember.pMemberName);
            pChar.MasterList.Remove(pMember);
            pChar.UpdateMasterJoin();
        }
Example #15
0
        public void RemoveMasterMember(WorldClient pClient)
        {
            MasterMember pMember = pClient.Character.MasterList.Find(d => d.IsMaster == true);

            if (pMember != null)
            {
                SendApprenticeRemoveMaster(pMember.pMember, pClient.Character.Character.Name);
                MasterMember Memb = pMember.pMember.Character.MasterList.Find(d => d.pMemberName == pClient.Character.Character.Name);
                pMember.pMember.Character.MasterList.Remove(Memb);
            }
            pMember.RemoveFromDatabase();
            pMember.RemoveFromDatabase(pMember.MasterID, pClient.Character.Character.Name);
            pClient.Character.MasterList.Remove(pMember);
            pClient.Character.UpdateMasterJoin();
            SendMasterRemoveResponse(pClient);
        }
Example #16
0
        private void Save(MasterMember entity)
        {
            entity.MasterMemberId = EntityId;
            entity.Name           = Name;
            entity.Account        = Account;
            ////因為密碼加密,Load時會給一個m_DefaultPass,存檔時要不同才會去修改密碼
            if (!m_DefaultPass.Equals(Password))
            {
                entity.Password = EncryptUtil.GetMD5(Password);
            }
            entity.Status = Status;
            entity.Email  = Email;
            entity.Tel    = Tel;
            entity.Memo   = Memo;

            ////權限
            foreach (AdminRole role in entity.AdminRoles)
            {
                if (role.AdminBar.AdminBarId.Equals((int)SiteEntities.Grade))
                {
                    continue;
                }

                role.AdminValue = SetRolesAdminValue(role.AdminBar.AdminBarId);
            }

            if (entity.MasterMemberId == 0)
            {
                entity.RegDate = DateTime.Now;
                m_FTISService.CreateMasterMember(entity);
            }
            else
            {
                m_FTISService.UpdateMasterMember(entity);
            }

            ////重新取得user
            LoginUserContainer.GetInstance().InitMember(this.Account);

            LoadEntity(entity.MasterMemberId);
        }
Example #17
0
        public async Task <ActionResult> Delete(MasterMember model)
        {
            try
            {
                MemberRepository Repository = new MemberRepository();
                var result = await Repository.DeleteMember(model.MemberId);

                if (result == true)
                {
                    return(await GetList());
                }
                else
                {
                    return(View(result));
                }
            }
            catch
            {
                return(View(false));
            }
        }
Example #18
0
 public void MasterRequestAccept(string requestername, string TargetName)
 {
     WorldClient target = ClientManager.Instance.GetClientByCharname(TargetName);
     WorldClient requester = ClientManager.Instance.GetClientByCharname(requestername);
     MasterRequestResponse Reponse = new MasterRequestResponse(target, requester);
     if (Reponse.responseAnswer)
     {
         MasterMember ReqMember = new MasterMember(requester,target.Character.ID);
         MasterMember TargetM = new MasterMember(target,requester.Character.ID);
         target.Character.MasterList.Add(ReqMember);
         requester.Character.MasterList.Add(TargetM);
         ReqMember.AddToDatabase();
         TargetM.IsMaster = true;
         TargetM.AddToDatabase();
         SendMasterRequestAccept(requester, TargetName);
     }
     else
     {
         MasterRequest rRequest = pMasterRequests.Find(d => d.InvitedClient == requester);
         this.pMasterRequests.Remove(rRequest);
     }
 }
Example #19
0
        public void MasterRequestAccept(string requesterName, string targetName)
        {
            var target    = ClientManager.Instance.GetClientByCharname(targetName);
            var requester = ClientManager.Instance.GetClientByCharname(requesterName);
            var response  = new MasterRequestResponse(target, requester);

            if (response.ResponseAnswer)
            {
                var reqMember = new MasterMember(requester, target.Character.ID);
                var targetM   = new MasterMember(target, requester.Character.ID);
                target.Character.MasterList.Add(reqMember);
                requester.Character.MasterList.Add(targetM);
                reqMember.AddToDatabase();
                targetM.IsMaster = true;
                targetM.AddToDatabase();
                SendMasterRequestAccept(requester, targetName);
            }
            else
            {
                var rRequest = _pMasterRequests.Find(d => Equals(d.InvitedClient, requester));
                _pMasterRequests.Remove(rRequest);
            }
        }
Example #20
0
        public void MasterRequestAccept(string requestername, string TargetName)
        {
            WorldClient           target    = ClientManager.Instance.GetClientByCharname(TargetName);
            WorldClient           requester = ClientManager.Instance.GetClientByCharname(requestername);
            MasterRequestResponse Reponse   = new MasterRequestResponse(target, requester);

            if (Reponse.responseAnswer)
            {
                MasterMember ReqMember = new MasterMember(requester, target.Character.ID);
                MasterMember TargetM   = new MasterMember(target, requester.Character.ID);
                target.Character.MasterList.Add(ReqMember);
                requester.Character.MasterList.Add(TargetM);
                ReqMember.AddToDatabase();
                TargetM.IsMaster = true;
                TargetM.AddToDatabase();
                SendMasterRequestAccept(requester, TargetName);
            }
            else
            {
                MasterRequest rRequest = pMasterRequests.Find(d => d.InvitedClient == requester);
                this.pMasterRequests.Remove(rRequest);
            }
        }
Example #21
0
 /// <summary>
 /// 根據目前登入者檢查是否有權限存取功能
 /// </summary>
 /// <param name="appFunctionId"></param>
 /// <returns></returns>
 public static bool CheckAuthorization(MasterMember loginUser, SiteEntities appFunction, SiteOperations operation)
 {
     return(CheckAuthorization(loginUser, (int)appFunction, (int)operation));
 }
Example #22
0
        public void Test_MasterMember()
        {
            //新增
            MasterMember masterMember = m_FTISService.MakeMasterMember();

            masterMember.Account  = "dadaTest";
            masterMember.Password = "******";
            masterMember.RegDate  = DateTime.Now;
            masterMember.Memo     = "memo";
            masterMember.Status   = "1";
            masterMember.Tel      = "12345678";
            masterMember.Email    = "*****@*****.**";
            masterMember.Name     = "dada12345";
            foreach (AdminRole role in masterMember.AdminRoles)
            {
                int adminValue = 15; ////預設全部權限

                ////特別幾個功能給不一樣的權限
                if (role.AdminBar.AdminBarId.Equals((int)SiteEntities.AboutUs))
                {
                    adminValue = (int)SiteOperations.Read;
                }
                if (role.AdminBar.AdminBarId.Equals((int)SiteEntities.Activity))
                {
                    adminValue = (int)SiteOperations.Create;
                }
                if (role.AdminBar.AdminBarId.Equals((int)SiteEntities.Application))
                {
                    adminValue = (int)SiteOperations.Edit;
                }
                if (role.AdminBar.AdminBarId.Equals((int)SiteEntities.Download))
                {
                    adminValue = (int)SiteOperations.Delete;
                }

                role.AdminValue = adminValue;
            }
            m_FTISService.CreateMasterMember(masterMember);

            //查詢
            IDictionary <string, string> conditions = new Dictionary <string, string>();
            IList <MasterMember>         adminList  = m_FTISService.GetMasterMemberListNoLazy(conditions);

            Assert.AreEqual(9, adminList.Count);
            foreach (MasterMember admin in adminList)
            {
                foreach (AdminRole role in admin.AdminRoles)
                {
                    int value = role.AdminValue;
                }
            }

            //檢查權限
            try
            {
                Assert.IsTrue(ACUtility.CheckAuthorization(masterMember, (int)SiteEntities.AboutUs, (int)SiteOperations.Read));
                Assert.IsFalse(ACUtility.CheckAuthorization(masterMember, (int)SiteEntities.AboutUs, (int)SiteOperations.Create));
                Assert.IsFalse(ACUtility.CheckAuthorization(masterMember, (int)SiteEntities.AboutUs, (int)SiteOperations.Edit));
                Assert.IsFalse(ACUtility.CheckAuthorization(masterMember, (int)SiteEntities.AboutUs, (int)SiteOperations.Delete));

                Assert.IsFalse(ACUtility.CheckAuthorization(masterMember, (int)SiteEntities.Activity, (int)SiteOperations.Read));
                Assert.IsTrue(ACUtility.CheckAuthorization(masterMember, (int)SiteEntities.Activity, (int)SiteOperations.Create));
                Assert.IsFalse(ACUtility.CheckAuthorization(masterMember, (int)SiteEntities.Activity, (int)SiteOperations.Edit));
                Assert.IsFalse(ACUtility.CheckAuthorization(masterMember, (int)SiteEntities.Activity, (int)SiteOperations.Delete));

                Assert.IsFalse(ACUtility.CheckAuthorization(masterMember, (int)SiteEntities.Application, (int)SiteOperations.Read));
                Assert.IsFalse(ACUtility.CheckAuthorization(masterMember, (int)SiteEntities.Application, (int)SiteOperations.Create));
                Assert.IsTrue(ACUtility.CheckAuthorization(masterMember, (int)SiteEntities.Application, (int)SiteOperations.Edit));
                Assert.IsFalse(ACUtility.CheckAuthorization(masterMember, (int)SiteEntities.Application, (int)SiteOperations.Delete));

                Assert.IsFalse(ACUtility.CheckAuthorization(masterMember, (int)SiteEntities.Download, (int)SiteOperations.Read));
                Assert.IsFalse(ACUtility.CheckAuthorization(masterMember, (int)SiteEntities.Download, (int)SiteOperations.Create));
                Assert.IsFalse(ACUtility.CheckAuthorization(masterMember, (int)SiteEntities.Download, (int)SiteOperations.Edit));
                Assert.IsTrue(ACUtility.CheckAuthorization(masterMember, (int)SiteEntities.Download, (int)SiteOperations.Delete));

                Assert.IsTrue(ACUtility.CheckAuthorization(masterMember, (int)SiteEntities.Grade, (int)SiteOperations.Read));
                Assert.IsTrue(ACUtility.CheckAuthorization(masterMember, (int)SiteEntities.News, (int)SiteOperations.Create));
                Assert.IsTrue(ACUtility.CheckAuthorization(masterMember, (int)SiteEntities.Question, (int)SiteOperations.Edit));
                Assert.IsTrue(ACUtility.CheckAuthorization(masterMember, (int)SiteEntities.Season, (int)SiteOperations.Delete));
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex);
            }

            //刪除
            m_FTISService.DeleteMasterMember(masterMember);
        }
Example #23
0
        public void Insert()
        {
            MasterMember entity = m_FTISService.MakeMasterMember();

            Save(entity);
        }
Example #24
0
        public void Update()
        {
            MasterMember entity = m_FTISService.GetMasterMemberByIdNoLazy(EntityId);

            Save(entity);
        }
Example #25
0
        protected void LoadEntity(int id)
        {
            MasterMember entity = m_FTISService.GetMasterMemberByIdNoLazy(id);

            LoadEntity(entity);
        }
    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;
        }
    }
Example #27
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");
                }
            }
        }
    }