public async Task <ActionResult> InsertGame()
        {
            var queryString         = HttpContext.Request.QueryString.ToString();
            NameValueCollection nvc = HttpUtility.ParseQueryString(queryString);
            var id = int.Parse(nvc["id"]);

            var dbGame = Game.GetGames(null, id);

            if (!dbGame.HasValues)
            {
                const int limit   = 1;
                var       apiGame = await Utilities.API.Get <List <Game.GameAPIModel> >($"games/{id}/?fields=id,name,genres,platforms,summary,cover.url,release_dates&limit={limit}");

                var game = new Game.GameModel
                {
                    GameId       = apiGame[0].Id,
                    Name         = apiGame[0].Name,
                    Summary      = apiGame[0].Summary,
                    Cover        = apiGame[0].Cover == null ? "https://www.picclickimg.com/00/s/MTYwMFgxNjAw/z/8xgAAOSwr81USRqc/$/Nintendo-WII-DVD-Video-Game-Case-White-Blank-_57.jpg" : apiGame[0].Cover.Url,
                    GenresStr    = "",
                    PlatformsStr = ""
                };

                foreach (var genre in apiGame[0].Genres)
                {
                    game.GenresStr += $"{genre},";
                }

                foreach (var platform in apiGame[0].Platforms)
                {
                    game.PlatformsStr += $"{platform},";
                }

                try
                {
                    var newGame = Game.InsertGame(User.FindFirst(ClaimTypes.NameIdentifier).Value, game);

                    return(Created("/api/Games", newGame));
                }
                catch (Exception ex)
                {
                    return(StatusCode(500, new { message = ex.Message }));
                }
            }
            else
            {
                try
                {
                    var newGame = Game.InsertUserGame(User.FindFirst(ClaimTypes.NameIdentifier).Value, id);

                    return(Created("/api/Games", newGame));
                }
                catch (Exception ex)
                {
                    return(StatusCode(500, new { message = ex.Message }));
                }
            }
        }
        public async Task <ActionResult> SearchGames(string name)
        {
            const int limit    = 10;
            var       gamesApi = await Utilities.API.Get <List <Game.GameAPIModel> >($"games/?search={name}&fields=id,name,summary,genres,platforms,cover.url,release_dates&limit={limit}");

            var games = new List <Game.GameModel>();

            var userGamesJObj = Game.GetGames(User.FindFirst(ClaimTypes.NameIdentifier).Value, null);
            var userGames     = userGamesJObj.ToObject <List <Game.GameModel> >();

            foreach (var game in gamesApi)
            {
                var newGame = new Game.GameModel
                {
                    GameId    = game.Id,
                    Name      = game.Name,
                    Summary   = game.Summary,
                    Cover     = game.Cover == null ? "https://www.picclickimg.com/00/s/MTYwMFgxNjAw/z/8xgAAOSwr81USRqc/$/Nintendo-WII-DVD-Video-Game-Case-White-Blank-_57.jpg" : game.Cover.Url,
                    Genres    = new List <Game.Genre>(),
                    Platforms = new List <Game.Platform>()
                };

                if (game.Genres != null)
                {
                    foreach (var genreId in game.Genres)
                    {
                        var genre = Game.GetGenre(genreId);

                        newGame.Genres.Add(JsonConvert.DeserializeObject <Game.Genre>(genre.ToString()));
                    }
                }

                if (game.Platforms != null)
                {
                    foreach (var platformId in game.Platforms)
                    {
                        var platform = Game.GetPlatform(platformId);

                        newGame.Platforms.Add(JsonConvert.DeserializeObject <Game.Platform>(platform.ToString()));
                    }
                }

                games.Add(newGame);
            }

            games = games.Where(p => userGames.All(p2 => p2.GameId != p.GameId)).ToList();

            return(Json(games));
        }
Exemple #3
0
        public override void DrawMenu()
        {
            MenuSpriteElement bg = new MenuSpriteElement("GUI/newgame_menu.jpg", new Rectangle(0, 0, GameManager.Width, GameManager.Height));

            Root.AddChild(bg);

            // exit button
            {
                Rectangle exitRect = new Rectangle(GameManager.Width - 152, 1, 151, 71);
                MenuButtonElement exitButton = new MenuButtonElement(exitRect, delegate()
                {
                    Menu.GoToScene(MainMenu.Instance);
                });
                exitButton.AddChild(new MenuSpriteElement("GUI/button_bg", exitRect, "BACK"));
                bg.AddChild(exitButton);
            }

            // music settings
            {
                musicRect = new Rectangle(GameManager.Width - 500, 1, 151, 71);
                MenuButtonElement musicButton = new MenuButtonElement(musicRect, delegate()
                {
                    if (!music)
                    {
                        music     = true;
                        musicText = "MUSIC: ON";
                    }
                    else
                    {
                        music     = false;
                        musicText = "MUSIC: OFF";
                    }
                    musicSpriteElement.Text = musicText;
                });
                musicSpriteElement = new MenuSpriteElement("GUI/button_bg", musicRect, musicText);
                musicButton.AddChild(musicSpriteElement);
                bg.AddChild(musicButton);
            }

            //vibration settings
            {
                vibRect = new Rectangle(GameManager.Width - 345, 1, 190, 71);
                MenuButtonElement vibButton = new MenuButtonElement(vibRect, delegate()
                {
                    if (!vibration)
                    {
                        vibration = true;
                        vibText   = "VIBRATION: ON";
                    }
                    else
                    {
                        vibration = false;
                        vibText   = "VIBRATION: OFF";
                    }
                    vibrationSpriteElement.Text = vibText;
                });
                vibrationSpriteElement = new MenuSpriteElement("GUI/button_bg", vibRect, vibText);
                vibButton.AddChild(vibrationSpriteElement);
                bg.AddChild(vibButton);
            }

            // difficulty selector
            {
                difficultySelector = new MainMenuPlainSelector <Difficulty>(Difficulty.NORMAL);
                bg.AddChild(difficultySelector);

                difficultySelector.BaseX  = Convert.ToInt32(0.279 * GameManager.Width);
                difficultySelector.BaseY  = Convert.ToInt32(0.359 * GameManager.Height);
                difficultySelector.YDiff  = Convert.ToInt32(0.085 * GameManager.Height);
                difficultySelector.Width  = Convert.ToInt32(0.12 * GameManager.Width);
                difficultySelector.Height = Convert.ToInt32(0.077 * GameManager.Height);


                difficultySelector.AddElement("EASY", Difficulty.EASY);
                difficultySelector.AddElement("NORMAL", Difficulty.NORMAL);
                difficultySelector.AddElement("HARD", Difficulty.HARD);
            }

            //gamemode selector
            {
                gamemodeSelector = new MainMenuPlainSelector <GameMode>(GameMode.NORMAL);
                bg.AddChild(gamemodeSelector);

                gamemodeSelector.BaseX  = Convert.ToInt32(0.077 * GameManager.Width);
                gamemodeSelector.BaseY  = Convert.ToInt32(0.359 * GameManager.Height);
                gamemodeSelector.YDiff  = Convert.ToInt32(0.085 * GameManager.Height);
                gamemodeSelector.Width  = Convert.ToInt32(0.15 * GameManager.Width);
                gamemodeSelector.Height = Convert.ToInt32(0.077 * GameManager.Height);

                if (SinglePlayer)
                {
                    gamemodeSelector.AddElement("NORMAL", GameMode.NORMAL);
                    gamemodeSelector.AddElement("ENDLESS", GameMode.ENDLESS);
                    gamemodeSelector.AddElement("TIME", GameMode.TIME);
                    gamemodeSelector.Selected = GameMode.NORMAL;
                }
                else
                {
                    gamemodeSelector.AddElement("FIGHT", GameMode.FIGHT);
                    gamemodeSelector.AddElement("TIMER", GameMode.TIMER);
                    gamemodeSelector.Selected = GameMode.FIGHT;
                }
            }

            //play button
            {
                playRect = new Rectangle(Convert.ToInt32(0.78125 * GameManager.Width), Convert.ToInt32(0.444 * GameManager.Height), Convert.ToInt32(0.114 * GameManager.Width), Convert.ToInt32(0.0583 * GameManager.Height));
                MenuButtonElement playButton = new MenuButtonElement(playRect,
                                                                     delegate()
                {
                    if (gamemodeSelector.Selected == GameMode.FIGHT || gamemodeSelector.Selected == GameMode.TIMER)
                    {
                        return;                                                                                                 //nincs megvalósítva a multiplayer :(
                    }
                    gameModel = new Game.GameModel(MainMenu.imageDatabase, gamemodeSelector.Selected, difficultySelector.Selected, music, vibration, null, null);
                    NewGame(gamemodeSelector.Selected, difficultySelector.Selected, music, vibration);
                    GameManager.Instance.SwitchScene(gameModel);
                }
                                                                     );
                bg.AddChild(playButton);
                playButton.AddChild(new MenuSpriteElement("GUI/button_play.png", playRect));
            }

            if (NewGameMenu.Tutorial)
            {
                //tutorial
                tutorial = new TutorialElement();

                bg.AddChild(tutorial);

                tutorial.AddRectangle(new Point((GameManager.Width / 2) + 50, GameManager.Height / 3), new Point((GameManager.Width / 2) + 50, GameManager.Height / 3),
                                      "This is the first place you see when you want to play.");
                tutorial.AddRectangle(new Point(gamemodeSelector.BaseX, gamemodeSelector.BaseY), new Point(gamemodeSelector.BaseX + gamemodeSelector.Width, gamemodeSelector.BaseY + gamemodeSelector.GetHeight()),
                                      "Here you can select the gamemode you want");
                tutorial.AddRectangle(new Point(gamemodeSelector.BaseX, gamemodeSelector.BaseY), new Point(gamemodeSelector.BaseX + gamemodeSelector.Width, gamemodeSelector.BaseY + gamemodeSelector.GetHeightOfElement(1)),
                                      "In Normal mode you have a fixed number of images \nand you need to find them fast for higher scores");
                tutorial.AddRectangle(new Point(gamemodeSelector.BaseX, gamemodeSelector.BaseY + gamemodeSelector.GetHeightOfElement(1)), new Point(gamemodeSelector.BaseX + gamemodeSelector.Width, gamemodeSelector.BaseY + gamemodeSelector.GetHeightOfElement(2)),
                                      "In Endless mode you have infinite number of images for training");
                tutorial.AddRectangle(new Point(gamemodeSelector.BaseX, gamemodeSelector.BaseY + gamemodeSelector.GetHeightOfElement(2)), new Point(gamemodeSelector.BaseX + gamemodeSelector.Width, gamemodeSelector.BaseY + gamemodeSelector.GetHeightOfElement(3)),
                                      "In Time mode you have a fixed number of images \nbut only half minutes. Your score will be multiplied\nwith the seconds remaining");
                tutorial.AddRectangle(new Point(gamemodeSelector.BaseX, gamemodeSelector.BaseY), new Point(gamemodeSelector.BaseX + gamemodeSelector.Width, gamemodeSelector.BaseY + gamemodeSelector.GetHeight()),
                                      "Please select a gamemode!");

                tutorial.AddRectangle(new Point(difficultySelector.BaseX, difficultySelector.BaseY), new Point(difficultySelector.BaseX + difficultySelector.Width, difficultySelector.BaseY + difficultySelector.GetHeight()),
                                      "You can choose from difficulties, we have three here");
                tutorial.AddRectangle(new Point(difficultySelector.BaseX, difficultySelector.BaseY), new Point(difficultySelector.BaseX + difficultySelector.Width, difficultySelector.BaseY + gamemodeSelector.GetHeightOfElement(1)),
                                      "In easy mode you get less tasks and pure images");
                tutorial.AddRectangle(new Point(difficultySelector.BaseX, difficultySelector.BaseY + difficultySelector.GetHeightOfElement(1)), new Point(difficultySelector.BaseX + difficultySelector.Width, difficultySelector.BaseY + difficultySelector.GetHeightOfElement(2)),
                                      "In normal mode you get average tasks and \nsome of the images are rotated, blurred or colored");
                tutorial.AddRectangle(new Point(difficultySelector.BaseX, difficultySelector.BaseY + difficultySelector.GetHeightOfElement(2)), new Point(difficultySelector.BaseX + difficultySelector.Width, difficultySelector.BaseY + difficultySelector.GetHeightOfElement(3)),
                                      "In hard mode you get a lot of tasks and \nall of the images are rotated, blurred or colored");
                tutorial.AddRectangle(new Point(difficultySelector.BaseX, difficultySelector.BaseY), new Point(difficultySelector.BaseX + difficultySelector.Width, difficultySelector.BaseY + difficultySelector.GetHeight()),
                                      "Please choose a mode if the selected is not good for you");

                tutorial.AddRectangle(new Point(musicRect.Left, musicRect.Top), new Point(musicRect.Right, musicRect.Bottom),
                                      "You can set the music here, if you want");
                tutorial.AddRectangle(new Point(vibRect.Left, vibRect.Top), new Point(vibRect.Right, vibRect.Bottom),
                                      "And the vibration too");

                tutorial.AddRectangle(new Point(playRect.Left - 10, playRect.Top - 10), new Point(playRect.Right + 10, playRect.Bottom + 10),
                                      "If all set, please click on the Play button now");
                tutorial.ShowNextTutorial();
            }
        }