Пример #1
0
 public GroupMemberViewModel(GroupMemberData data)
 {
     user                     = new GroupUser();
     user.groupID             = data.group_id;
     user.userID              = data.user_id;
     user.avatar              = data.portrait;
     user.friend_name         = data.friend_name;
     user.group_user_nickname = data.group_user_nickname;
     user.id_card             = data.id_card;
     user.inv_name            = data.inv_name;
     user.is_administrator    = data.is_administrator;
     user.is_manager          = data.is_manager;
     user.is_shield           = data.is_shield;
     user.user_name           = data.user_name;
     NickName                 = string.IsNullOrEmpty(user.friend_name) ? user.user_name : user.friend_name;
     GroupNickName            = string.IsNullOrEmpty(user.group_user_nickname) ? user.user_name : user.group_user_nickname;
     IDCard                   = user.id_card;
     if (user.is_administrator == 1)
     {
         Leave = "群主";
     }
     else if (user.is_manager == 1)
     {
         Leave = "管理员";
     }
     else
     {
         Leave = "成员";
     }
 }
Пример #2
0
        public S_PARTY_MEMBER_STAT_UPDATE(TeraMessageReader reader) : base(reader)
        {
            ServerId = reader.ReadUInt32();
            PlayerId = reader.ReadUInt32();

            CurrentHP = /*reader.Version < 321550 || reader.Version > 321600 ? */ reader.ReadInt64() /*: reader.ReadInt32()*/;
            CurrentMP = reader.ReadInt32();
            MaxHP     = /*reader.Version < 321550 || reader.Version > 321600 ? */ reader.ReadInt64() /*: reader.ReadInt32()*/;
            MaxMP     = reader.ReadInt32();

            Level    = reader.ReadInt16();
            InCombat = reader.ReadInt16() > 0;
            Vitality = reader.ReadInt16();

            Alive = reader.ReadBoolean();

            reader.Skip(4);
            CurrentRE = reader.ReadInt32();
            MaxRE     = reader.ReadInt32();

            GroupMemberData = new GroupMemberData()
            {
                ServerId  = ServerId,
                PlayerId  = PlayerId,
                CurrentHP = CurrentHP,
                CurrentMP = CurrentMP,
                CurrentST = CurrentRE,
                MaxHP     = MaxHP,
                MaxMP     = MaxMP,
                MaxST     = MaxRE,
                Level     = (uint)Level,
                InCombat  = InCombat,
                Alive     = Alive
            };
        }
Пример #3
0
 public void Disband()
 {
     Members.Clear();
     Leader  = new GroupMemberData();
     IsRaid  = false;
     InGroup = false;
     Size    = Members.Count;
 }
Пример #4
0
        public async Task <GroupMemberData[]> GetGroupMembers()
        {
            UserSession session = await Database.UserSessions.FromSignalRId(Context.UserIdentifier);

            User  user = session.User;
            Group grp  = user.GroupMember.Group;
            List <GroupMemberData> list = new List <GroupMemberData>();

            foreach (GroupMember gmem in grp.GroupMembers)
            {
                GroupMemberData res = await GetGroupMember(gmem.User.Id.ToString());

                list.Add(res);
            }
            return(list.ToArray());
        }
Пример #5
0
        public S_PARTY_MEMBER_LIST(TeraMessageReader reader) : base(reader)
        {
            var count  = reader.ReadUInt16();
            var offset = reader.ReadUInt16();

            Im   = reader.ReadBoolean();
            Raid = reader.ReadBoolean();

            reader.Skip(12);

            LeaderServerId = reader.ReadUInt32();
            LeaderPlayerId = reader.ReadUInt32();

            reader.Skip(19);

            Members = new List <GroupMemberData>();

            for (var i = 0; i < count; i++)
            {
                var u = new GroupMemberData();
                reader.RepositionAt(offset);
                reader.Skip(2);
                var nextOffset = reader.ReadUInt16();
                var nameOffset = reader.ReadUInt16();
                u.ServerId  = reader.ReadUInt32();
                u.PlayerId  = reader.ReadUInt32();
                u.Level     = reader.ReadUInt32();
                u.Class     = (Class)reader.ReadUInt32();
                u.Online    = reader.ReadBoolean();
                u.EntityId  = reader.ReadUInt64();
                u.Order     = reader.ReadInt32();
                u.CanInvite = reader.ReadBoolean();
                u.Laurel    = (Laurel)reader.ReadUInt32();
                u.Awakened  = reader.ReadInt32() > 0;

                reader.RepositionAt(nameOffset);
                u.Name     = reader.ReadTeraString();
                u.Alive    = true;
                u.IsLeader = u.ServerId == LeaderServerId && u.PlayerId == LeaderPlayerId;
                Members.Add(u);
                offset = nextOffset;
            }
        }
Пример #6
0
 public void addGroupMember(GroupMemberData data)
 {
     queue.QueueTask(() =>
     {
         if (data == null)
         {
             return;
         }
         var user = db.groupUsers.Where(p => p.groupID == data.group_id && p.userID == data.user_id).FirstOrDefault();
         if (user != null)
         {
             user.groupID             = data.group_id;
             user.userID              = data.user_id;
             user.avatar              = data.portrait;
             user.friend_name         = data.friend_name;
             user.group_user_nickname = data.group_user_nickname;
             user.id_card             = data.id_card;
             user.inv_name            = data.inv_name;
             user.is_administrator    = data.is_administrator;
             user.is_manager          = data.is_manager;
             user.is_shield           = data.is_shield;
             user.user_name           = data.user_name;
             db.SaveChanges();
         }
         else
         {
             GroupUser user1           = new GroupUser();
             user1.groupID             = data.group_id;
             user1.userID              = data.user_id;
             user1.avatar              = data.portrait;
             user1.friend_name         = data.friend_name;
             user1.group_user_nickname = data.group_user_nickname;
             user1.id_card             = data.id_card;
             user1.inv_name            = data.inv_name;
             user1.is_administrator    = data.is_administrator;
             user1.is_manager          = data.is_manager;
             user1.is_shield           = data.is_shield;
             user1.user_name           = data.user_name;
             db.groupUsers.Add(user1);
             db.SaveChanges();
         }
     });
 }
Пример #7
0
        public S_PARTY_MEMBER_INFO(TeraMessageReader reader) : base(reader)
        {
            var count  = reader.ReadUInt16();
            var offset = reader.ReadUInt16();

            reader.Skip(8);
            Id = reader.ReadUInt32();

            reader.BaseStream.Position = offset - 4;
            Members = new List <GroupMemberData>();
            for (var i = 0; i < count; i++)
            {
                var u = new GroupMemberData();
                reader.Skip(2); // var current = reader.ReadUInt16();
                var next       = reader.ReadUInt16();
                var nameOffset = reader.ReadUInt16();
                u.PlayerId = reader.ReadUInt32();
                u.Class    = (Class)reader.ReadUInt16();
                reader.Skip(2 + 2);
                u.Level = Convert.ToUInt32(reader.ReadUInt16());
                reader.ReadBoolean();
                reader.Skip(1);
                u.Order     = Convert.ToInt32(reader.ReadInt16());
                u.GuardId   = reader.ReadUInt32();
                u.SectionId = reader.ReadUInt32();
                //u.Location = SessionManager.DB.GetSectionName(gId, aId);
                u.IsLeader = reader.ReadBoolean();
                //u.Laurel = (Laurel)reader.ReadUInt32();
                //Console.WriteLine("---");
                u.Online = reader.ReadBoolean();
                //Console.WriteLine(reader.ReadByte());
                //Console.WriteLine(reader.ReadByte());
                reader.BaseStream.Position = nameOffset - 4;
                u.Name = reader.ReadTeraString();
                //u.IsLeader = u.PlayerId == Id;
                Members.Add(u);
                if (next != 0)
                {
                    reader.BaseStream.Position = next - 4;
                }
            }
        }
Пример #8
0
        private void UpdateMembers()
        {
            if (this.InvokeRequired)
            {
                Invoke(new MethodInvoker(UpdateMembers));
                return;
            }
            else
            {
                List <UUID> requestids = new List <UUID>();

                lock (Members)
                {
                    lock (MemberData)
                    {
                        foreach (GroupMember member in Members.Values)
                        {
                            GroupMemberData memberData = new GroupMemberData();
                            memberData.ID         = member.ID;
                            MemberData[member.ID] = memberData;

                            // Add this ID to the name request batch
                            if (!instance.avnames.ContainsKey(member.ID))
                            {
                                requestids.Add(member.ID);
                            }
                            else
                            {
                                Names[member.ID] = instance.avnames[member.ID];
                                UpdateNames();
                            }
                        }
                    }
                }

                if (requestids.Count > 0)
                {
                    client.Avatars.RequestAvatarNames(requestids);
                }
            }
        }
Пример #9
0
        public S_PARTY_MEMBER_INFO(TeraMessageReader reader) : base(reader)
        {
            var count  = reader.ReadUInt16();
            var offset = reader.ReadUInt16();

            reader.Skip(2);

            reader.BaseStream.Position = offset - 4;
            Members = new List <GroupMemberData>();
            for (var i = 0; i < count; i++)
            {
                var u = new GroupMemberData();
                reader.Skip(2);
                var next       = reader.ReadUInt16();
                var nameOffset = reader.ReadUInt16();
                u.PlayerId = reader.ReadUInt32();
                u.Class    = (Class)reader.ReadUInt16();
                reader.Skip(4);
                u.Level = Convert.ToUInt32(reader.ReadUInt16());
                reader.Skip(4);
                u.GuardId   = reader.ReadUInt32();
                u.SectionId = reader.ReadUInt32();
                u.Order     = Convert.ToInt32(reader.ReadInt16());
                reader.Skip(2);
                u.IsLeader = reader.ReadBoolean();
                if (u.IsLeader)
                {
                    Id = u.PlayerId;
                }
                u.Online = reader.ReadBoolean();
                reader.BaseStream.Position = nameOffset - 4;
                u.Name = reader.ReadTeraString();
                Members.Add(u);
                if (next != 0)
                {
                    reader.BaseStream.Position = next - 4;
                }
            }
        }
Пример #10
0
        private void UpdateMembers()
        {
            if (this.InvokeRequired)
            {
                Invoke(new MethodInvoker(UpdateMembers));
                return;
            }
            else
            {
                List<UUID> requestids = new List<UUID>();

                lock (Members)
                {
                    lock (MemberData)
                    {
                        foreach (GroupMember member in Members.Values)
                        {
                            GroupMemberData memberData = new GroupMemberData();
                            memberData.ID = member.ID;
                            MemberData[member.ID] = memberData;

                            // Add this ID to the name request batch
                            if (!instance.avnames.ContainsKey(member.ID))
                            {
                                requestids.Add(member.ID);
                            }
                            else
                            {
                                Names[member.ID] = instance.avnames[member.ID];
                                UpdateNames();
                            }
                        }
                    }
                }

                if (requestids.Count > 0) client.Avatars.RequestAvatarNames(requestids);
            }
        }
Пример #11
0
 public GroupMemberController(GroupMemberData groupMemberData, ILoggerFactory loggerFactory)
 {
     _groupMemberData = groupMemberData;
     _Logger          = loggerFactory.CreateLogger(nameof(GroupMemberController));
 }
Пример #12
0
 public async Task UpdateGroupMember(GroupMemberData data)
 => await Client.GroupMemberUpdated(data);
Пример #13
0
 public bool TryGetMember(string name, out GroupMemberData member)
 {
     member = Members.FirstOrDefault(m => m.Name == name);
     return(member != null);
 }
Пример #14
0
 public bool TryGetMember(uint playerId, uint serverId, out GroupMemberData member)
 {
     member = Members.FirstOrDefault(m => m.PlayerId == playerId && m.ServerId == serverId);
     return(member != null);
 }