//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"); } }
public GamePageButton(GameLink gameLink, String url, Game game, bool isCustomPage = false) { this.gameLink = gameLink; this.url = url; this.game = game; this.isCustomPage = isCustomPage; }
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"); }
//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"); } }
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 }); }
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); }
public void The_link_provides_identity() { using var sut = GameLink.Open(); var snapshot = sut.GetSnapshot(); Assert.True(snapshot.TryGetIdentity(out var actual, MissingMemberBehavior.Error)); }
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 }); }
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 });
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); }
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."; } }
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" }; }); }
//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); } }
//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); } }