private void FillArenaLayoutFilters(ArenaLayout arenaLayout, dynamic arenaLayoutElement, SkinDefinitionContext skinDefinitionContext) { var filteringInfoElement = arenaLayoutElement.filteringInfo; if (filteringInfoElement == null) { return; } foreach (var filterElement in filteringInfoElement) { var label = ConvertDynamicValue <string>(filterElement.label); var filter = skinDefinitionContext.GetFilter(label); if (filter == null) { filter = new Filter(label, GetArenaFilterName(filterElement), ((JObject)filterElement).Properties().Select(p => new AttributeValue(p.Name, p.Value.ToString()))); skinDefinitionContext.AvailableFilters.Add(filter); } arenaLayout.FilteringInfo.Add(filter); } }
private void FillArenaLayoutFilters(ArenaLayout arenaLayout, XElement arenaXmlElement, SkinDefinitionContext skinDefinitionContext) { var filteringInfoXmlElement = arenaXmlElement.Element(XmlNames.filteringInfo); if (filteringInfoXmlElement == null) { return; } foreach (var filterXmlElement in filteringInfoXmlElement.Elements(XmlNames.filter)) { var label = filterXmlElement.GetAttributeValue(XmlNames.label); var filter = skinDefinitionContext.GetFilter(label); if (filter == null) { filter = new Filter(label, GetArenaFilterName(filterXmlElement), filterXmlElement.Attributes().Select(a => new AttributeValue(a.Name.LocalName, a.Value))); skinDefinitionContext.AvailableFilters.Add(filter); } arenaLayout.FilteringInfo.Add(filter); } }
private void FillArenaLayout(ArenaLayout arenaLayout, XElement arenaXmlElement, SkinDefinitionContext skinDefinitionContext) { FillArenaLayoutGames(arenaLayout, arenaXmlElement, skinDefinitionContext); FillArenaLayoutGridInfo(arenaLayout, arenaXmlElement); FillArenaLayoutFilters(arenaLayout, arenaXmlElement, skinDefinitionContext); FillArenaLayoutAlsoPlayingGames(arenaLayout, arenaXmlElement, skinDefinitionContext); }
private Arena BuildArena(ArenaViewModel arenaViewModel) { var arena = new Arena(arenaViewModel.Type, arenaViewModel.Name, arenaViewModel.IsNewGamesArena); foreach (var layoutViewModel in arenaViewModel.Layouts) { var layout = new ArenaLayout(layoutViewModel.PlayerStatus.Id, layoutViewModel.Attributes); layout.DataGridInfo = layoutViewModel.DataGridInfo; foreach (var filterViewModel in layoutViewModel.Filters) { layout.FilteringInfo.Add(new Filter(filterViewModel.Label, filterViewModel.Name, filterViewModel.Attributes)); } foreach (var alsoPlayGameViewModel in layoutViewModel.AlsoPlayingGames) { layout.AlsoPlayingGames.Add(new Game(alsoPlayGameViewModel.GameType, alsoPlayGameViewModel.Name)); } foreach (var gameViewModel in layoutViewModel.Games.Select(g => g.ConvertToAvailableGame())) { layout.Games.Add(gameViewModel.BuildArenaGame()); } arena.Layouts.Add(layout); } return(arena); }
private void FillArenasCollection(ArenaCollection arenasCollection, SkinDefinitionContext skinDefinitionContext) { var arenasElementsByType = GetArenasGroupedByType(); foreach (var arenaGroup in arenasElementsByType) { var arenaType = skinDefinitionContext.GetArenaType(arenaGroup.Key); var arena = new Arena(arenaType.Id, arenaType.Name, arenaGroup.Value.Any(element => ConvertDynamicValue <bool>(element.newGame) == true)); foreach (var arenaLayoutElement in arenaGroup.Value) { //make sure the JPVisible attribute is always there var attributes = JsonUtils.ExtractAllAttributes((JObject)arenaLayoutElement); if (!attributes.Any(a => a.Name == JsonNames.jpVisible)) { attributes.Add(new AttributeValue(JsonNames.jpVisible, "false")); } var arenaLayout = new ArenaLayout(ExtractPlayerStatus(arenaLayoutElement.playerStatus), attributes); FillArenaLayout(arenaLayout, arenaLayoutElement, skinDefinitionContext); arena.Layouts.Add(arenaLayout); } arenasCollection.Add(arena); } }
private void FillArenaLayoutAlsoPlayingGames(ArenaLayout arenaLayout, XElement arenaXmlElement, SkinDefinitionContext skinDefinitionContext) { var alsoPlayingGamesXmlElement = arenaXmlElement.Element(XmlNames.alsoPlayingGames); if (alsoPlayingGamesXmlElement == null) { return; } foreach (var alsoPlayingGameXmlElement in alsoPlayingGamesXmlElement.Elements(XmlNames.alsoPlayingGame)) { arenaLayout.AlsoPlayingGames.Add(skinDefinitionContext.GetGame(alsoPlayingGameXmlElement.GetAttributeValue <int>(XmlNames.gameType))); } }
private void FillArenaLayoutGridInfo(ArenaLayout arenaLayout, XElement arenaXmlElement) { var gridInfoXmlElement = arenaXmlElement.Element(XmlNames.dataGridInfo); if (gridInfoXmlElement == null) { return; } foreach (var gridColumnElement in gridInfoXmlElement.Elements(XmlNames.column)) { arenaLayout.DataGridInfo.Add(new ArenaGridColumn(gridColumnElement.ExtractAllAttributes())); } }
private void FillArenaLayoutAlsoPlayingGames(ArenaLayout arenaLayout, dynamic arenaLayoutElement, SkinDefinitionContext skinDefinitionContext) { var alsoPlayingGamesElement = arenaLayoutElement.alsoPlayingGames; if (alsoPlayingGamesElement == null) { return; } foreach (var alsoPlayingGameElement in alsoPlayingGamesElement) { arenaLayout.AlsoPlayingGames.Add(skinDefinitionContext.GetGame(ConvertDynamicValue <int>(alsoPlayingGameElement))); } }
private void FillArenaLayoutGridInfo(ArenaLayout arenaLayout, dynamic arenaLayoutElement) { var dataGridArenaInfoElement = arenaLayoutElement.dataGridArenaInfo; if (dataGridArenaInfoElement == null) { return; } foreach (dynamic columnElement in dataGridArenaInfoElement) { arenaLayout.DataGridInfo.Add(new ArenaGridColumn(JsonUtils.ExtractAllAttributes(columnElement))); } }
private void FillArenaLayoutGames(ArenaLayout arenaLayout, XElement arenaXmlElement, SkinDefinitionContext skinDefinitionContext) { foreach (var gameXmlElement in arenaXmlElement.Elements(XmlNames.game)) { var gameType = gameXmlElement.GetAttributeValue <int>(XmlNames.gameType); var game = skinDefinitionContext.GetGame(gameType); ArenaGame arenaGame = new ArenaGame(game.Id, game.Name, gameXmlElement.GetAttributeValue <bool>(XmlNames.newGame, false), gameXmlElement.GetAttributeValue(XmlNames.userMode, UserModes.Both)); arenaLayout.Games.Add(arenaGame); } }
private void FillArenaLayoutGames(ArenaLayout arenaLayout, dynamic arenaLayoutElement, SkinDefinitionContext skinDefinitionContext) { foreach (var gameElement in arenaLayoutElement.games) { var gameType = ConvertDynamicValue <int>(gameElement.gametype); var game = skinDefinitionContext.GetGame(gameType); ArenaGame arenaGame = new ArenaGame(game.Id, game.Name, ConvertDynamicValue <bool>(gameElement.newGame, false), ConvertDynamicValue <int>(gameElement.userMode, UserModes.Both)); arenaLayout.Games.Add(arenaGame); } }
private void FillArenasCollection(ArenaCollection arenasCollection, SkinDefinitionContext skinDefinitionContext) { var arenasElementsByType = ReadArenasXmlElements().Where(element => XmlValues.lobby != element.GetAttributeValue(XmlNames.type)) .GroupBy(element => element.GetAttributeValue <int>(XmlNames.type)) .ToDictionary(g => g.Key, g => g.ToList()); foreach (var arenaGroup in arenasElementsByType) { var arenaType = skinDefinitionContext.GetArenaType(arenaGroup.Key); var arena = new Arena(arenaType.Id, arenaType.Name, arenaGroup.Value.Any(element => element.GetAttributeValue(XmlNames.newGame, false) == true)); foreach (var arenaXmlElement in arenaGroup.Value) { //make sure the JPVisible attribute is always there var attributes = arenaXmlElement.ExtractAllAttributes(); if (!attributes.Any(a => a.Name == XmlNames.JPVisible)) { attributes.Add(new AttributeValue(XmlNames.JPVisible, "false")); } var arenaLayout = new ArenaLayout(arenaXmlElement.GetAttributeValue(XmlNames.playerStatus), attributes); FillArenaLayout(arenaLayout, arenaXmlElement, skinDefinitionContext); arena.Layouts.Add(arenaLayout); } arenasCollection.Add(arena); } }
private dynamic CreateArenaElement(dynamic[] existingArenasElements, Arena arena, ArenaLayout arenaLayout) { JObject existingArenaElement = null; if (string.IsNullOrEmpty(arenaLayout.PlayerStatus)) { existingArenaElement = existingArenasElements.FirstOrDefault(element => ConvertDynamicValue <string>(element.type) == arena.Type.ToString()) as JObject; } else { existingArenaElement = existingArenasElements.FirstOrDefault(element => ConvertDynamicValue <string>(element.type) == arena.Type.ToString() && ExtractPlayerStatus(element.playerStatus) == arenaLayout.PlayerStatus) as JObject; } dynamic newArenaElement = null; if (existingArenaElement != null) { newArenaElement = existingArenaElement; } else { //get de default arena element existingArenaElement = existingArenasElements.FirstOrDefault(element => ConvertDynamicValue <string>(element.type) == arena.Type.ToString()); if (existingArenaElement != null) { newArenaElement = existingArenaElement.DeepClone(); } else { newArenaElement = new JObject(); } } newArenaElement.type = arena.Type; newArenaElement.playerStatus = BuildPlayerStatusArray(arenaLayout.PlayerStatus); //newArenaElement.favoritesSize = arenaLayout.FavoritesSize; newArenaElement.jpVisible = arenaLayout.JackpotVisible; newArenaElement.newGame = arena.IsNewGameArena; UpdateFilteringInfo(arenaLayout.FilteringInfo, newArenaElement); UpdateAlsoPlayingGames(newArenaElement, arenaLayout.AlsoPlayingGames); UpdateArenaGames(arenaLayout.Games, newArenaElement); return(newArenaElement); }
private XElement CreateArenaXmlElement(XElement[] existingArenasXmlElements, Arena arena, ArenaLayout arenaLayout) { XElement existingArenaXmlElement = null; if (string.IsNullOrEmpty(arenaLayout.PlayerStatus)) { existingArenaXmlElement = existingArenasXmlElements.FirstOrDefault(element => element.GetAttributeValue(XmlNames.type) == arena.Type.ToString()); } else { existingArenaXmlElement = existingArenasXmlElements.FirstOrDefault(element => element.GetAttributeValue(XmlNames.type) == arena.Type.ToString() && element.GetAttributeValue(XmlNames.playerStatus) == arenaLayout.PlayerStatus); } var newArenaXmlElement = new XElement(XmlNames.arena); if (existingArenaXmlElement != null) { existingArenaXmlElement.CopyAttributesTo(newArenaXmlElement); existingArenaXmlElement.CopyAllElementsExcept(newArenaXmlElement, XmlNames.filteringInfo, XmlNames.game, XmlNames.alsoPlayingGames); } else { //get de default arena element existingArenaXmlElement = existingArenasXmlElements.FirstOrDefault(element => element.GetAttributeValue(XmlNames.type) == arena.Type.ToString()); if (existingArenaXmlElement != null) { existingArenaXmlElement.CopyAllElementsExcept(newArenaXmlElement, XmlNames.filteringInfo, XmlNames.game, XmlNames.alsoPlayingGames); } newArenaXmlElement.AddOrUpdateAttributeValue(XmlNames.type, arena.Type); if (!string.IsNullOrEmpty(arenaLayout.PlayerStatus)) { newArenaXmlElement.AddOrUpdateAttributeValue(XmlNames.playerStatus, arenaLayout.PlayerStatus); } } newArenaXmlElement.AddOrUpdateAttributeValue(XmlNames.JPVisible, arenaLayout.JackpotVisible); if (arena.IsNewGameArena) { newArenaXmlElement.AddOrUpdateAttributeValue(XmlNames.newGame, "true"); } UpdateFilteringInfo(newArenaXmlElement, arenaLayout.FilteringInfo); UpdateAlsoPlayingGames(newArenaXmlElement, arenaLayout.AlsoPlayingGames); UpdateArenaGames(existingArenaXmlElement, newArenaXmlElement, arenaLayout.Games); return(newArenaXmlElement); }
private void UpdateOrAddArenaLayout(Arena arena, ArenaLayout arenaLayout, XDocument xmlDocument) { var arenas = xmlDocument.Root.Element(XmlNames.lobby_data_ndl).Element(XmlNames.arenas).Elements(XmlNames.arena).ToArray(); }