Exemple #1
0
 public GameHub(Game game)
 {
     _game = game;
     _timer = new Timer();
     _timer.Elapsed += CreateGame;
     _context = GlobalHost.ConnectionManager.GetHubContext<GameHub>();
 }
        /*
        *   POST: Game/ChooseCharacter
        *   Przy pierwszym dolaczeniu do pokoju zatwierdza wybór postaci
        */
        public ActionResult ConfirmCharacterSelection()
        {
            NameValueCollection Form = Request.Form;
            string gameCode = (string)Form["gamecode"];

            // roboczo:
            string characterID = "1";
            //string characterID = (string)Form["characterid"];

            Game modelGame = new Game();

            bool resultModel = modelGame
                .NewUserCurrentlyInGameDbs(User.Identity.GetUserId()
                , gameCode, characterID);

            //return RedirectToAction("Room", new { id = gameCode });
            return View("~/Views/Game/CardPanel.cshtml");
        }
        /*
        *   POST
        *   Generuje kod gry do pokoju, ktory nastepnie trzeba aktywowac
        */
        public ActionResult GenerateCode()
        {
            Game modelGame = new Game();

            if (User.Identity.IsAuthenticated)
            {
                ViewBag.gamecode = modelGame.GenerateGameCodeConnectedWithUserID(User.Identity.GetUserId());
            }
            else
            {
                ViewBag.gamecode = null;
            }
            return View();
        }
        /*
        *   POST: /Game/TryRoomActivation
        *   Pobiera z formularza aktywacji nazwe gry, sparwdza czy jest dozwolona,
        *   kontroluje zgodnosc kodu gry i ID sesji uzytkownika
        */
        public ActionResult TryRoomActivation()
        {
            NameValueCollection Form = Request.Form;
            string roomName = (string)Form["roomname"];
            string gameCode = (string)Form["gamecode"];

            Game modelGame = new Game();
            bool result = modelGame
                .TryRoomActivate(ref roomName, ref gameCode, 
                User.Identity.GetUserId());

            if(result == true)
            {
                @ViewData["gamecode"] = gameCode;
                @ViewData["roomname"] = roomName;
                ViewBag.roomActivated = true;

                // Wstępnie zapisałem do sesji dane o bieżącej grze
                Session["GameCode"] = gameCode;
                Session["GameName"] = roomName;
                Session["IsActive"] = true;
            }
            else
            {
                ViewBag.roomActivated = false;
            }

            return View();
        }
        /*
        *   GET: Game/JoinRoom/id
        *   Główna metoda dostępu do pokuju
        */
        public ActionResult Room(string id)
        {
            string gameCode = id;
            GameDb resultDb = ApplicationDb.GamesInfo.Find(gameCode);

            // 1. uzytkownik niezalogowany
            if (!User.Identity.IsAuthenticated)
            {
                return View("~/Views/Game/RoomLoginPetition.cshtml");
            }
            // 2. brak kodu w bazie
            else if (resultDb == null)
            {
                return View("~/Views/Game/RoomNotFound.cshtml");
            }
            // 3. pokoj nieaktywowany
            else if (resultDb.activated == false)
            {
                return View("~/Views/Game/RoomNotActivated.cshtml");
            }
            else
            {
                Game modelGame = new Game();
                bool resultModel = modelGame
                    .CheckIfUserJoinedGameAlready(User.Identity.GetUserId(), 
                    gameCode);  
                
                // 4. Uzytkownik pierwszy raz dolaczyl do pokoju.
                if (resultModel == false)
                {
                    ViewData["gamecode1"] = gameCode;
                    ViewBag.selectingcharacter = true;
                    return View();
                }
                else
                {
                    ViewData["gamecode1"] = gameCode;
                    ViewData["roomname"] = resultDb.name;
                    ViewBag.selectingcharacter = false;
                    if (resultDb.CreatorUserID == User.Identity.GetUserId())
                    {
                        ViewData["gamecode1"] += "Jestes mistrzem gry.";
                    }
                    return View();
                }
            }
        }