Exemplo n.º 1
0
    public void OpenAvailablePopup()
    {
        // AudioManager.PlaySound(AudioManager.selectFigureName);
        AudioManager1.Ins.PlaySound(SoundType.Click);

        if (availablePopup != null)
        {
            bool isActive = availablePopup.activeSelf;
            availablePopup.SetActive(!isActive);
        }

        if (availablePopup.activeSelf)
        {
            SetChallengeAgainGroup();
            UnlockChallenge();
            if (UIManager.Ins.IndexChallenge > 0)
            {
                for (int i = 0; i < UIManager.Ins.IndexChallenge; i++)
                {
                    if (i == 4)
                    {
                        backGround = backGrounFinal;
                    }
                    ChallengeItem challengeItem = challengeList[i].GetComponent <ChallengeItem>();
                    challengeItem.ChallengeItemActive(backGround, upDir);
                    challengeItem.OverChallenge(status);
                }
            }
        }
    }
        private List <ChallengeItem> Challenges(int id)
        {
            List <ChallengeItem> items      = new List <ChallengeItem>();
            List <EntityDTO>     challenges = data.GetAllChallenges(id);

            if (challenges.Count > 0)
            {
                foreach (EntityDTO challenge in challenges)
                {
                    ChallengeItem c = new ChallengeItem();
                    challenge.ExtractProperties();
                    c.Challenge   = challenge.Name;
                    c.Description = challenge.RenderHTML(GlobalStringResource.Description, ADB.SA.Reports.Entities.Enums.RenderOption.None);
                    items.Add(c);
                }
            }

            return(items);
        }
Exemplo n.º 3
0
        public async Task<Challenge> Get(int id)
        {
            var cachedResult = Cache.Default.Get(Cache.ChallengeKey(id)) as Challenge;
            if (cachedResult != null)
            {
                Debug.WriteLine("Served Collection from Cache.");
                return cachedResult;
            }

            var client = new BoardGameGeekClient();
            var geeklist = await client.LoadGeekList(id);

            var options = ParseOptions(geeklist.Description);
            var goalPerGame = options.ContainsKey("GoalPerGame") ? int.Parse((string)options["GoalPerGame"]) : -1;
            var start = options.ContainsKey("Start") ? DateTime.Parse((string)options["Start"]) : (DateTime?)null;
            var end = options.ContainsKey("End") ? DateTime.Parse((string)options["End"]) : (DateTime?)null;

            var pageOne = await client.LoadPlays(geeklist.Username, 1, start, end);
            var plays = new List<PlayItem>();

            List<Task<Plays>> tasks = new List<Task<Plays>>();
            plays.AddRange(pageOne.Items);
            if (pageOne.Total > 100)
            {
                int remaining = pageOne.Total - 100;
                int page = 2;

                while (remaining > 0)
                {
                    tasks.Add(client.LoadPlays(geeklist.Username, page, start, end));
                    page++;
                    remaining -= 100;
                }
            }

            Challenge challenge = new Challenge()
            {
                GeekListId = id,
                Title = geeklist.Title,
                Username = geeklist.Username,
                Start = start != null ? start.Value.ToString("yyyy-MM-dd") : null,
                End = start != null ? end.Value.ToString("yyyy-MM-dd") : null,
                GoalPerGame = goalPerGame,
                Items = new List<ChallengeItem>()
            };

            var games = from item in geeklist.Items
                        select new
                        {
                            GameId = item.GameId,
                            Name = item.Name,
                            Description = item.Description
                        };


            var itemsById = new Dictionary<int, ChallengeItem>();

            foreach (var item in games)
            {
                var gameOptions = ParseOptions(item.Description);
                var challengeItem = new ChallengeItem()
                {
                    GameId = item.GameId,
                    Name = item.Name
                };

                if (gameOptions.ContainsKey("AltName"))
                {
                    challengeItem.Name = (string)gameOptions["AltName"];
                }
                if (gameOptions.ContainsKey("AdditionalGameId"))
                {
                    challengeItem.AdditionalGameIds = new List<int>();
                    var list = gameOptions["AdditionalGameId"] as List<string>;
                    if (list == null)
                    {
                        challengeItem.AdditionalGameIds.Add(int.Parse((string)gameOptions["AdditionalGameId"]));
                    }
                    else
                    {
                        challengeItem.AdditionalGameIds.AddRange(list.Select(i => int.Parse((string)i)));
                    }
                }
                
                challenge.Items.Add(challengeItem);
                itemsById[item.GameId] = challengeItem;
                if (challengeItem.AdditionalGameIds != null)
                {
                    foreach (var altGameId in challengeItem.AdditionalGameIds)
                    {
                        itemsById[altGameId] = challengeItem;
                    }
                }
            }

            var additionalPages = await Task.WhenAll(tasks);
            foreach (var page in additionalPages)
            {
                plays.AddRange(page.Items);
            }

            foreach (var play in plays)
            {
                if (itemsById.ContainsKey(play.GameId))
                {
                    itemsById[play.GameId].PlayCount++;
                }
            }

            challenge.Complete = true;
            foreach (var game in challenge.Items)
            {
                if (game.PlayCount >= goalPerGame)
                {
                    game.Complete = true;
                }
                else
                {
                    challenge.Complete = false;
                }
            }

            Cache.Default.Set(Cache.ChallengeKey(id), challenge, DateTimeOffset.Now.AddSeconds(15));
            return challenge;

        }
Exemplo n.º 4
0
        public async Task <Challenge> Get(int id)
        {
            var cachedResult = Cache.Default.Get(Cache.ChallengeKey(id)) as Challenge;

            if (cachedResult != null)
            {
                Debug.WriteLine("Served Collection from Cache.");
                return(cachedResult);
            }

            var client   = new BoardGameGeekClient();
            var geeklist = await client.LoadGeekList(id);

            var options     = ParseOptions(geeklist.Description);
            var goalPerGame = options.ContainsKey("GoalPerGame") ? int.Parse((string)options["GoalPerGame"]) : -1;
            var start       = options.ContainsKey("Start") ? DateTime.Parse((string)options["Start"]) : (DateTime?)null;
            var end         = options.ContainsKey("End") ? DateTime.Parse((string)options["End"]) : (DateTime?)null;

            var pageOne = await client.LoadPlays(geeklist.Username, 1, start, end);

            var plays = new List <PlayItem>();

            List <Task <Plays> > tasks = new List <Task <Plays> >();

            plays.AddRange(pageOne.Items);
            if (pageOne.Total > 100)
            {
                int remaining = pageOne.Total - 100;
                int page      = 2;

                while (remaining > 0)
                {
                    tasks.Add(client.LoadPlays(geeklist.Username, page, start, end));
                    page++;
                    remaining -= 100;
                }
            }

            Challenge challenge = new Challenge()
            {
                GeekListId                = id,
                Title                     = geeklist.Title,
                Username                  = geeklist.Username,
                Start                     = start != null?start.Value.ToString("yyyy-MM-dd") : null,
                                      End = start != null?end.Value.ToString("yyyy-MM-dd") : null,
                                                GoalPerGame = goalPerGame,
                                                Items       = new List <ChallengeItem>()
            };

            var games = from item in geeklist.Items
                        select new
            {
                GameId      = item.GameId,
                Name        = item.Name,
                Description = item.Description
            };


            var itemsById = new Dictionary <int, ChallengeItem>();

            foreach (var item in games)
            {
                var gameOptions   = ParseOptions(item.Description);
                var challengeItem = new ChallengeItem()
                {
                    GameId = item.GameId,
                    Name   = item.Name
                };

                if (gameOptions.ContainsKey("AltName"))
                {
                    challengeItem.Name = (string)gameOptions["AltName"];
                }
                if (gameOptions.ContainsKey("AdditionalGameId"))
                {
                    challengeItem.AdditionalGameIds = new List <int>();
                    var list = gameOptions["AdditionalGameId"] as List <string>;
                    if (list == null)
                    {
                        challengeItem.AdditionalGameIds.Add(int.Parse((string)gameOptions["AdditionalGameId"]));
                    }
                    else
                    {
                        challengeItem.AdditionalGameIds.AddRange(list.Select(i => int.Parse((string)i)));
                    }
                }

                challenge.Items.Add(challengeItem);
                itemsById[item.GameId] = challengeItem;
                if (challengeItem.AdditionalGameIds != null)
                {
                    foreach (var altGameId in challengeItem.AdditionalGameIds)
                    {
                        itemsById[altGameId] = challengeItem;
                    }
                }
            }

            var additionalPages = await Task.WhenAll(tasks);

            foreach (var page in additionalPages)
            {
                plays.AddRange(page.Items);
            }

            foreach (var play in plays)
            {
                if (itemsById.ContainsKey(play.GameId))
                {
                    itemsById[play.GameId].PlayCount++;
                }
            }

            challenge.Complete = true;
            foreach (var game in challenge.Items)
            {
                if (game.PlayCount >= goalPerGame)
                {
                    game.Complete = true;
                }
                else
                {
                    challenge.Complete = false;
                }
            }

            Cache.Default.Set(Cache.ChallengeKey(id), challenge, DateTimeOffset.Now.AddSeconds(15));
            return(challenge);
        }