Esempio n. 1
0
    //Bake appropriate cookies, then send to user and reload the page.  See loadCookies() for cookie unboxing and loadMain()
    //for loading of the appropriate main window page.
    protected void gamePageButtonClicked(Object sender, EventArgs e)
    {
        //Get needed Controls
        GamePageButton gamePageButton = (GamePageButton)sender;
        GameLink       gameLink       = gamePageButton.GameLink;
        Panel          gamePanel      = (Panel)gamePageButton.Parent;
        Panel          gameTypePanel  = (Panel)gameLink.Parent;

        //Make required Cookies
        Session["gameLinkID"]      = gameLink.ID;
        Session["gameCategoryID"]  = gameLink.GameTypeDropdown.ID;
        Session["gamePanelID"]     = gamePanel.ID;
        Session["gameTypePanelID"] = gameTypePanel.ID;

        //Save Active Game to be Shown, and remove any savedContent from objectTables.
        Session["activeGame"] = gamePageButton.Game;
        Session.Remove("savedContent");
        if (!gamePageButton.IsCustomPage)
        {
            Response.Redirect("~/" + gamePageButton.Url);
        }
        else
        {
            Session["customPath"] = Request.ApplicationPath + gamePageButton.Url;
            Response.Redirect("~/Player/CustomPage");
        }
    }
Esempio n. 2
0
 public GamePageButton(GameLink gameLink, String url, Game game, bool isCustomPage = false)
 {
     this.gameLink     = gameLink;
     this.url          = url;
     this.game         = game;
     this.isCustomPage = isCustomPage;
 }
Esempio n. 3
0
    public async Task The_link_is_self_updating()
    {
        using var sut = GameLink.Open();

        using CancellationTokenSource cts = new(TimeSpan.FromSeconds(3));

        GameLinkTestObserver actual = new(cts.Token);

        sut.Subscribe(actual);

        try
        {
            var success = await actual.Handle;
            Assert.True(success, "GameLink should push updates to subscribers.");
        }
        catch (TaskCanceledException)
        {
            Assert.True(
                actual.Last.UiTick > actual.First.UiTick,
                "This test only works if you are in a map, not in a loading screen etc."
                );
        }

        Assert.True(actual.Last.UiTick > actual.First.UiTick, "GameLink should be self-updating");
    }
Esempio n. 4
0
    //Grabs all the cookies and uses them to persist all necessary data on the Main page.
    protected void loadCookies()
    {
        //Make sure I have cookie needed for Dropdown load state, and if so set CSS to saved state
        if (Session["gameLinkID"] != null && Session["gameCategoryID"] != null && Session["gamePanelID"] != null && Session["gameTypePanelID"] != null)
        {
            GameLink  gameLink      = (GameLink)this.FindControl((String)Session["gameLinkID"]);
            HyperLink gameCategory  = (HyperLink)this.FindControl((String)Session["gameCategoryID"]);
            Panel     gamePanel     = (Panel)this.FindControl((String)Session["gamePanelID"]);
            Panel     gameTypePanel = (Panel)this.FindControl((String)Session["gameTypePanelID"]);

            //Re-Set Appropriate Controls as Active
            if (gameLink == null)
            {
                return;
            }
            gameLink.CssClass += " active";
            gameLink.GameTypeDropdown.CssClass += " active";
            gameLink.Carrot.Attributes.Remove("class");
            gameLink.Carrot.Attributes.Add("class", "fa fa-caret-up");

            gameLink.Text = gameLink.Text.Replace("fa fa-caret-down", "fa fa-caret-up");

            //Display Appropriate Dropdowns
            gamePanel.Style.Add("display", "block");
            gameTypePanel.Style.Add("display", "block");
        }
    }
Esempio n. 5
0
        public async Task <IGame> GetGameById(int gameId)
        {
            using (var connection = new SqlConnection(_connectionString))
            {
                //списко игр для уникальности
                var gameDictionary = new Dictionary <int, Game>();
                var sql            = string.Format("SELECT * FROM GetGameById({0})", gameId);

                connection.Open();

                var games = await connection.QueryAsync <Game, Platform, Genre, GameLink, Game>
                                (sql, (game, platform, genre, gamelink) =>
                {
                    //проверям есть ли списка уже
                    if (!gameDictionary.TryGetValue(game.GameId, out var gameEntry))
                    {
                        GameLink g          = new GameLink();
                        gameEntry           = game;
                        gameEntry.GameLinks = new List <GameLink>();
                        gameDictionary.Add(gameEntry.GameId, gameEntry);
                    }
                    gamelink.Url       = "https://zerpico.ru/retrolauncher/" + gamelink.Url;
                    gameEntry.Genre    = genre;
                    gameEntry.Platform = platform;
                    gameEntry.GameLinks.Add(gamelink);
                    return(gameEntry);
                }, splitOn : "PlatformId,GenreId,LinkId");

                var result = (games != null && games.Count() > 0) ? games.FirstOrDefault() : new Game();
                return(result);
            }
            //  return new Task<IGame>(() => { return new Game() { GameId = 1, Name = "sample" }; });
        }
 public static SelectableOption <GameLink> Map(GameLink gameLink)
 {
     return(new SelectableOption <GameLink>
     {
         Value = gameLink,
         Selected = false
     });
 }
Esempio n. 7
0
    public void Name_can_be_read_from_Mumble_link()
    {
        using var sut = GameLink.Open();

        var actual = sut.GetSnapshot();

        Assert.Equal("Guild Wars 2", actual.Name);
    }
Esempio n. 8
0
    public void The_link_provides_identity()
    {
        using var sut = GameLink.Open();

        var snapshot = sut.GetSnapshot();

        Assert.True(snapshot.TryGetIdentity(out var actual, MissingMemberBehavior.Error));
    }
Esempio n. 9
0
    private void RealMain(CancellationToken cancellationToken)
    {
        if (!OperatingSystem.IsWindows())
        {
            Console.WriteLine("This sample is only supported on Windows!");
            return;
        }

        using var mumble = GameLink.Open();

        using var subscription = mumble.Subscribe(this);

        WaitHandle.WaitAll(new[] { cancellationToken.WaitHandle });
    }
Esempio n. 10
0
 private Task HandleResponseAsync(Response response, CancellationToken ct)
 {
     return(response switch
     {
         PlayerRegistered playerRegistered => OnPlayerRegistered(playerRegistered, ct),
         MapUpdated mapUpdated => OnMapUpdated(mapUpdated, ct),
         GameLink gameLink => OnGameLink(gameLink),
         GameStarting gameStarting => OnGameStarting(gameStarting),
         GameResult gameResult => OnInfoEvent(gameResult),
         CharacterStunned characterStunned => OnInfoEvent(characterStunned),
         HeartBeatResponse heartBeatResponse => OnHearBeatEvent(heartBeatResponse, ct),
         GameEnded gameEnded => OnGameEnded(gameEnded),
         TournamentEnded tournamentEnded => OnTournamentEnded(tournamentEnded),
         InvalidPlayerName invalidPlayerName => OnInfoEvent(invalidPlayerName),
         _ => Task.CompletedTask
     });
Esempio n. 11
0
    public void The_link_provides_context()
    {
        using var sut = GameLink.Open();

        var snapshot = sut.GetSnapshot();

        Assert.True(snapshot.TryGetContext(out var actual));
        Assert.True(actual.BuildId > 100_000, "Game build should be over 100,000");

        var server = actual.GetServerAddress();

        Assert.NotEmpty(server.ToString());

        // Port is not specified
        Assert.Equal(0, server.Port);
    }
Esempio n. 12
0
    public MumbleLinkFact()
    {
        if (!GameLink.IsSupported())
        {
            Skip = "GameLink is not supported on the current platform.";
            return;
        }

        try
        {
            using var file = MemoryMappedFile.OpenExisting(
                      "MumbleLink",
                      MemoryMappedFileRights.Read
                      );
        }
        catch (FileNotFoundException)
        {
            Skip =
                "The GameLink is not initialized. Start Mumble -and- Guild Wars 2 before running this test.";
        }
    }
Esempio n. 13
0
        public async Task <Game> GetGameById(int gameId)
        {
            using (var connection = new SqlConnection(_connectionString))
            {
                //списко игр для уникальности
                var gameDictionary = new Dictionary <int, Game>();
                var sql            = @"select gb.game_id as GameId, gb.game_name as Name, gb.name_second as NameSecond, gb.name_other as NameOther, gnr.genre_name as Genre, gb.year, gb.developer, gb.annotation, 
                                pl.platform_id as PlatformId, pl.platform_name as PlatformName, pl.alias, 
                                lnk.link_id as LinkId, lnk.url, lnk.type_url as TypeUrl
                            FROM gb_games gb
                            JOIN gb_genres gnr ON gnr.genre_id = gb.genre_id
                            JOIN gb_platforms pl ON gb.platform_id = pl.platform_id
                            JOIN gb_links lnk ON lnk.game_id = gb.game_id
                            WHERE gb.game_id =  " + gameId.ToString();

                connection.Open();

                var games = await connection.QueryAsync <Game, Platform, GameLink, Game>
                                (sql, (game, platform, gamelink) =>
                {
                    //проверям есть ли списка уже
                    if (!gameDictionary.TryGetValue(game.GameId, out var gameEntry))
                    {
                        GameLink g          = new GameLink();
                        gameEntry           = game;
                        gameEntry.GameLinks = new List <GameLink>();
                        gameDictionary.Add(gameEntry.GameId, gameEntry);
                    }
                    gamelink.Url       = "https://zerpico.ru/retrolauncher/" + gamelink.Url;
                    gameEntry.Platform = platform;
                    gameEntry.GameLinks.Add(gamelink);
                    return(gameEntry);
                }, splitOn : "PlatformId,LinkId");

                var result = (games != null && games.Count() > 0) ? games.FirstOrDefault() : new Game();
                return(result);
            }
            //  return new Task<IGame>(() => { return new Game() { GameId = 1, Name = "sample" }; });
        }
Esempio n. 14
0
    //Loads all the NavBar content for each game the user is Game Mastering in.
    protected void loadGMGames()
    {
        Panel gmGames = new Panel();

        gmGames.ID       = "gmGames";
        gmGames.CssClass = "outerDropdownContainer";

        //Foreach Game Database says User is GMing in, create a corresponding Game Dropdown and associated panel.
        //This is a 'pretend' game to display what it should look like if you actually are playing in two games.
        foreach (Game game in gmGamesList)
        {
            GameLink gameLink = new GameLink(gmGamesLink, gmCarrot);
            gameLink.ID           = Server.HtmlDecode(game.GameName + "GMLink");
            gameLink.Text         = game.GameName;
            gameLink.Text        += "<i class=\"fa fa-caret-down\"></i>";
            gameLink.GameCarrotID = game.GameName + "GMCarrot";
            gameLink.CssClass     = "dropdown-btn";
            gmGames.Controls.Add(gameLink);

            Panel gamePanel = new Panel();
            gamePanel.ID       = Server.HtmlDecode(game.GameName + "GMPanel");
            gamePanel.CssClass = "innerDropdownContainer";
            {
                GamePageButton gameInfo = new GamePageButton(gameLink, "GM/GameInformationGM", game);
                gameInfo.Text   = "Game Information";
                gameInfo.Click += new EventHandler(gamePageButtonClicked);
                gamePanel.Controls.Add(gameInfo);

                GamePageButton charList = new GamePageButton(gameLink, "GM/GamePartyGM", game);
                charList.Text   = "Game Party";
                charList.Click += new EventHandler(gamePageButtonClicked);
                gamePanel.Controls.Add(charList);

                GamePageButton encounterPage = new GamePageButton(gameLink, "GM/EncounterTool", game);
                encounterPage.Text   = "Encounter Tool";
                encounterPage.Click += new EventHandler(gamePageButtonClicked);
                gamePanel.Controls.Add(encounterPage);

                GamePageButton npcTrackerPage = new GamePageButton(gameLink, "GM/NPCTracker", game);
                npcTrackerPage.Text   = "NPC Tracker";
                npcTrackerPage.Click += new EventHandler(gamePageButtonClicked);
                gamePanel.Controls.Add(npcTrackerPage);

                GamePageButton npcToolPage = new GamePageButton(gameLink, "GM/NPCTool", game);
                npcToolPage.Text   = "NPC Tool";
                npcToolPage.Click += new EventHandler(gamePageButtonClicked);
                gamePanel.Controls.Add(npcToolPage);

                GamePageButton magicShopToolPage = new GamePageButton(gameLink, "GM/MagicShopTool", game);
                magicShopToolPage.Text   = "Magic Shop Tool";
                magicShopToolPage.Click += new EventHandler(gamePageButtonClicked);
                gamePanel.Controls.Add(magicShopToolPage);

                GamePageButton publicPages = new GamePageButton(gameLink, "GM/CustomPageTool", game);
                publicPages.Text   = "Add/Edit/Remove Pages";
                publicPages.Click += new EventHandler(gamePageButtonClicked);
                gamePanel.Controls.Add(publicPages);
            }
            gmGames.Controls.Add(gamePanel);
        }

        //Give a nice label if user has no games, so they are not sad :(
        if (gmGamesList.Count == 0)
        {
            Label noGamesLabel = new Label();
            noGamesLabel.Text     = "You have no games.";
            noGamesLabel.CssClass = "innerDropdownNoGames";
            gmGames.Controls.Add(noGamesLabel);
            gmGamesDropdown.Controls.Add(noGamesLabel);
        }
        else
        {
            gmGamesDropdown.Controls.Add(gmGames);
        }
    }
Esempio n. 15
0
    //Loads all the NavBar content for each game the user is playing in.
    protected void loadPlayerGames()
    {
        Panel playerGames = new Panel();

        playerGames.ID       = "playerGames";
        playerGames.CssClass = "outerDropdownContainer";

        //Foreach Game database says User is playing in, create a corresponding Game Dropdown and associated panel.  These are both 'pretend' games
        //to display what it should look like if you actually are playing in two games.
        foreach (Game game in playerGamesList)
        {
            GameLink gameLink = new GameLink(playerGamesLink, playerCarrot);
            gameLink.ID           = Server.HtmlDecode(game.GameName + "PlayerLink");
            gameLink.Text         = game.GameName;
            gameLink.Text        += "<i class=\"fa fa-caret-down\"></i>";
            gameLink.GameCarrotID = game.GameName + "PlayerCarrot";
            gameLink.CssClass     = "dropdown-btn";
            playerGames.Controls.Add(gameLink);

            Panel gamePanel = new Panel();
            gamePanel.ID       = Server.HtmlDecode(game.GameName + "PlayerPanel");
            gamePanel.CssClass = "innerDropdownContainer";
            {
                GamePageButton gameInfo = new GamePageButton(gameLink, "Player/GameInformation", game);
                gameInfo.Text   = "Game Information";
                gameInfo.Click += new EventHandler(gamePageButtonClicked);
                gamePanel.Controls.Add(gameInfo);

                GamePageButton charList = new GamePageButton(gameLink, "Player/GameParty", game);
                charList.Text   = "Game Party";
                charList.Click += new EventHandler(gamePageButtonClicked);
                gamePanel.Controls.Add(charList);

                //Add Custom Pages
                PagesTable     pagesTable = new PagesTable(new DatabaseConnection());
                CustomPageList pages      = pagesTable.getGamePages(game.GameID);

                for (int i = 0; i < pages.Pages.Count; i++)
                {
                    CustomPage     page       = pages.Pages[i];
                    GamePageButton publicPage = new GamePageButton(gameLink, page.PageURL, game, true);
                    publicPage.Text   = page.PageName;
                    publicPage.Click += new EventHandler(gamePageButtonClicked);
                    gamePanel.Controls.Add(publicPage);
                }
            }
            playerGames.Controls.Add(gamePanel);
        }

        //Give a nice label if user has no games, so they are not sad :(
        if (playerGamesList.Count == 0)
        {
            Label noGamesLabel = new Label();
            noGamesLabel.Text     = "You have no games.";
            noGamesLabel.CssClass = "innerDropdownNoGames";
            playerGames.Controls.Add(noGamesLabel);
            playerGamesDropdown.Controls.Add(noGamesLabel);
        }

        else
        {
            playerGamesDropdown.Controls.Add(playerGames);
        }
    }