Пример #1
0
        public static IEnumerable <CAvatar> GetAvatars()
        {
            if (_Avatars.Count == 0)
            {
                return(null);
            }

            var result = new CAvatar[_Avatars.Count];

            _Avatars.Values.CopyTo(result, 0);

            return(result);
        }
Пример #2
0
        public static int NewAvatar(string fileName)
        {
            CAvatar avatar = CAvatar.GetAvatar(fileName);

            if (avatar == null)
            {
                return(-1);
            }

            avatar.ID = _AvatarIDs.Dequeue();
            _Avatars.Add(avatar.ID, avatar);
            _AvatarsChanged = true;
            return(avatar.ID);
        }
Пример #3
0
        public static void EditAvatar(CAvatar editAvatar)
        {
            if (editAvatar == null)
            {
                return;
            }

            var change = new SChange {
                Action = EAction.EditAvatar, Avatar = editAvatar
            };

            lock (_QueueMutex)
            {
                _Queue.Enqueue(change);
            }
        }
Пример #4
0
        public static void AddAvatar(CAvatar newAvatar)
        {
            if (newAvatar == null)
            {
                return;
            }

            var change = new SChange {
                Action = EAction.AddAvatar, Avatar = newAvatar
            };

            lock (_QueueMutex)
            {
                _Queue.Enqueue(change);
            }
        }
Пример #5
0
        private static void _LoadAvatars()
        {
            var knownFiles = new List <string>();

            if (_Avatars.Count > 0)
            {
                var ids = new int[_Avatars.Keys.Count];
                _Avatars.Keys.CopyTo(ids, 0);
                foreach (int id in ids)
                {
                    if (_Avatars[id].Reload())
                    {
                        knownFiles.Add(Path.GetFileName(_Avatars[id].FileName));
                    }
                    else
                    {
                        _Avatars.Remove(id);
                    }
                }
            }

            var files = new List <string>();

            foreach (string path in CConfig.ProfileFolders)
            {
                files.AddRange(CHelper.ListImageFiles(path, true, true));
            }

            foreach (string file in files)
            {
                if (knownFiles.Contains(Path.GetFileName(file)))
                {
                    continue;
                }

                CAvatar avatar = CAvatar.GetAvatar(file);
                if (avatar != null)
                {
                    avatar.ID = _AvatarIDs.Dequeue();
                    _Avatars.Add(avatar.ID, avatar);
                }
            }
            _ProfilesChanged = true;
        }
Пример #6
0
        private static CAvatar _AddAvatar(CBase64Image avatarData)
        {
            try
            {
                string filename = _SaveImage(avatarData, "snapshot", CConfig.ProfileFolders[0]);

                CAvatar avatar = CAvatar.GetAvatar(filename);
                if (avatar != null)
                {
                    CProfiles.AddAvatar(avatar);
                    return(avatar);
                }
                return(null);
            }
            catch
            {
                return(null);
            }
        }
Пример #7
0
        private static SProfileData _CreateProfileData(CProfile profile, bool isReadonly)
        {
            SProfileData profileData = new SProfileData
            {
                IsEditable = !isReadonly,
                ProfileId  = profile.ID,
                PlayerName = profile.PlayerName,
                //Is TR_USERROLE_GUEST or TR_USERROLE_NORMAL?
                Type       = (profile.UserRole.HasFlag(EUserRole.TR_USERROLE_NORMAL) ? 1 : 0),
                Difficulty = (int)profile.Difficulty
            };

            CAvatar avatar = profile.Avatar;

            if (avatar != null)
            {
                if (File.Exists(avatar.FileName))
                {
                    profileData.Avatar = new CBase64Image(_CreateDelayedImage(avatar.FileName));
                }
            }
            return(profileData);
        }