예제 #1
0
        // async void Sync()
        // {
        //     List<UserResponse> res = await FetchUsers();
        //     List<User> users = new List<User>(res.Count);
        //     var tasks = new List<Task<Texture2D>>();
        //     var semaphore = new SemaphoreSlim(30, 30);
        //     foreach (UserResponse user in res)
        //     {
        //         await semaphore.WaitAsync();
        //         tasks.Add(FetchIcon(user.iconUrl));
        //         semaphore.Release(1);
        //     }
        //     var icons = await Task.WhenAll(tasks);
        //     for (int i = 0; i < users.Count; i++)
        //     {
        //         var scores = new Dictionary<Genre, float>();
        //         foreach (Score score in res[i].scores)
        //         {
        //             scores.Add(score.genre, score.score);
        //         }
        //         var tmp = new User();
        //         Texture2D texture = new Texture2D(5, 5);
        //         tmp.name = res[i].name;
        //         tmp.id = res[i].id;
        //         tmp.icon = icons[i];
        //         tmp.scores = scores;
        //         users.Add(tmp);
        //     }
        //     try { userManager.AddUsers(users); }
        //     catch (MissingFieldException err) { Debug.LogError(err); }
        //     try { rankingManager.AddUsers(userManager.users.Where(user => user.id != "").ToList()); }
        //     catch (ArgumentException err) { Debug.LogError(err); }
        // }
        async Task Sync()
        {
            List <UserResponse> res = await FetchUsers();

            List <User> users = new List <User>(res.Count);

            foreach (UserResponse user in res)
            {
                var scores = new Dictionary <Genre, float>();
                foreach (Score score in user.scores)
                {
                    scores.Add(score.genre, score.score);
                }
                var       tmp     = new User();
                Texture2D texture = new Texture2D(5, 5);
                tmp.name   = user.name;
                tmp.id     = user.id;
                tmp.scores = scores;
                users.Add(tmp);
                FetchIcon(user.id, user.iconUrl);
            }
            try { userManager.AddUsers(users); }
            catch (MissingFieldException err) { Debug.LogError(err); }
            try { rankingManager.AddUsers(userManager.users.Where(user => user.id != "").ToList()); }
            catch (ArgumentException err) { Debug.LogError(err); }
        }