Beispiel #1
0
        public SkinDesignerViewModel Build(SkinDefinitionContext skinDefinitionContext)
        {
            _buildErrors = new List <ErrorMessageViewModel>();

            LoadAvailableGames(skinDefinitionContext.DestinationSkin.BrandId,
                               skinDefinitionContext.SkinDefinition.SkinContent,
                               skinDefinitionContext.AvailableGames);

            LoadAvailableFilters(skinDefinitionContext.AvailableFilters);
            LoadSkinDefinition(skinDefinitionContext.SkinDefinition);
            LoadExplorerBarItems();

            return(new SkinDesignerViewModel(_serviceLocator,
                                             new AvailableGameViewModelCollection(_existingClientGames,
                                                                                  nameof(AvailableGameViewModel.GameType),
                                                                                  nameof(AvailableGameViewModel.Name),
                                                                                  nameof(AvailableGameViewModel.VendorName)),
                                             new AvailableGameViewModelCollection(_allOtherGames,
                                                                                  nameof(AvailableGameViewModel.GameType),
                                                                                  nameof(AvailableGameViewModel.Name),
                                                                                  nameof(AvailableGameViewModel.VendorName)),
                                             new FilterableCollectionViewModel <ArenaFilterViewModel>(_availableFilters, nameof(ArenaFilterViewModel.Name)),

                                             _skinDefinition,
                                             _explorerBar,
                                             _buildErrors,
                                             skinDefinitionContext.SourceSkin,
                                             skinDefinitionContext.DestinationSkin));
        }
Beispiel #2
0
        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);
            }
        }
Beispiel #3
0
        private SkinContent ReadSkinContent(SkinDefinitionContext skinDefinitionContext)
        {
            SkinContent layout = new SkinContent();

            FillSkinContent(layout, skinDefinitionContext);

            return(layout);
        }
Beispiel #4
0
        private void FillSkinContent(SkinContent skinContent, SkinDefinitionContext skinDefinitionContext)
        {
            FillArenasCollection(skinContent.Arenas, skinDefinitionContext);
            FillLobbyCollection(skinContent.Lobbies, skinDefinitionContext);
            FillGamesGroupCollection(skinContent.TopGames, skinDefinitionContext, XmlNames.topGames, XmlNames.topGame);
            FillGamesGroupCollection(skinContent.VipTopGames, skinDefinitionContext, XmlNames.vipGames, XmlNames.vipGame);

            FillMyAccountCollection(skinContent.MyAccountLobby, XmlValues.lobby);
            FillMyAccountCollection(skinContent.MyAccountHistory, XmlValues.history);

            FillTriggers(skinContent.Triggers);
        }
Beispiel #5
0
        private void FillSkinContent(SkinContent skinContent, SkinDefinitionContext skinDefinitionContext)
        {
            FillArenasCollection(skinContent.Arenas, skinDefinitionContext);
            FillLobbyCollection(skinContent.Lobbies, skinDefinitionContext);
            FillGamesGroupCollection(skinContent.TopGames, skinDefinitionContext, _navigationPlanJson.navigationPlan.topGames);
            FillGamesGroupCollection(skinContent.VipTopGames, skinDefinitionContext, _navigationPlanJson.navigationPlan.vipGames);

            FillMyAccountCollection(skinContent.MyAccountLobby, _navigationPlanJson.navigationPlan.menus.lobby);
            FillMyAccountCollection(skinContent.MyAccountHistory, _navigationPlanJson.navigationPlan.menus.history);

            FillTriggers(skinContent.Triggers);
        }
Beispiel #6
0
        public string Serialize(SkinDefinitionContext skinDefintionContext)
        {
            var xmlSerializer = CreateXmlSerializer();
            var stringBuilder = new StringBuilder();

            using (var stringWriter = new Utf8StringWriter(stringBuilder))
                using (var xmlWriter = CreateXmlWriter(stringWriter))
                {
                    xmlSerializer.Serialize(xmlWriter, skinDefintionContext);
                }

            return(stringBuilder.ToString());
        }
Beispiel #7
0
        private SkinContent ReadSkinContent(SkinDefinitionContext skinDefinitionContext)
        {
            if (_navigationPlanXml == null)
            {
                return(null);
            }

            SkinContent layout = new SkinContent();

            FillSkinContent(layout, skinDefinitionContext);

            return(layout);
        }
Beispiel #8
0
        public SkinDefinitionContext Parse()
        {
            var skinDefinitionContext = new SkinDefinitionContext();

            skinDefinitionContext.AvailableArenaTypes = ReadAvailableArenaTypes();
            skinDefinitionContext.AvailableGames      = ReadAvailableGames();
            skinDefinitionContext.AvailableFilters    = ReadAvailableFilters();

            skinDefinitionContext.SkinDefinition = new SkinDefinition();

            skinDefinitionContext.SkinDefinition.SkinContent = ReadSkinContent(skinDefinitionContext);


            return(skinDefinitionContext);
        }
Beispiel #9
0
 public void PublishForQA(SkinDefinitionContext skinDefinitionContext, string environment)
 {
     using (var service = _wcfServiceFactory.CreateLayoutPublisherService())
     {
         service.PublishSkinForQA(new LayoutToolPublisherService.PublishSkinToQARequest()
         {
             Environment   = environment,
             BrandId       = skinDefinitionContext.DestinationSkin.BrandId,
             SkinId        = skinDefinitionContext.DestinationSkin.SkinId,
             ClientVersion = skinDefinitionContext.DestinationSkin.ClientVersion,
             HasWarnings   = skinDefinitionContext.Errors.Any(err => err.Severity == ErrorServerity.Warning),
             SkinContent   = _serializer.Serialize(skinDefinitionContext)
         });
     }
 }
Beispiel #10
0
 public void PublishForProduction(SkinDefinitionContext skinDefinitionContext)
 {
     using (var service = _wcfServiceFactory.CreateLayoutPublisherService())
     {
         service.PublishSkinForProduction(new LayoutToolPublisherService.PublishSkinToProductionRequest()
         {
             BrandId               = skinDefinitionContext.DestinationSkin.BrandId,
             SkinId                = skinDefinitionContext.DestinationSkin.SkinId,
             ClientVersion         = skinDefinitionContext.DestinationSkin.ClientVersion,
             HasWarnings           = skinDefinitionContext.Errors.Any(err => err.Severity == ErrorServerity.Warning),
             SkinContent           = _serializer.Serialize(skinDefinitionContext),
             NavigationPlanContent = ConvertNavigationPlanForProduction(skinDefinitionContext, service)
         });
     }
 }
Beispiel #11
0
        public SkinDefinitionContext BuildSkinDefinitionContext()
        {
            var skinDefintionContext = new SkinDefinitionContext();

            skinDefintionContext.Publisher           = $"{Environment.UserDomainName}\\{Environment.UserName}";
            skinDefintionContext.AvailableArenaTypes = new ArenaTypeCollection(this.AvailableArenas.Select(a => new ArenaType(a.Type, a.Name)));
            skinDefintionContext.AvailableFilters    = new FilterCollection(this.AvailableFilters.GetOriginalItems().Select(f => new Filter(f.Label, f.Name, f.Attributes)));
            skinDefintionContext.AvailableGames      = new GameCollection(this.AvailableGames.GetOriginalItems().Select(g => new Game(g.GameType, g.Name)));
            skinDefintionContext.SourceSkin          = this.SourceSkin;
            skinDefintionContext.DestinationSkin     = this.DestinationSkin;
            skinDefintionContext.SkinDefinition      = BuildSkinDefinition();
            skinDefintionContext.Errors = GetErrors();



            return(skinDefintionContext);
        }
Beispiel #12
0
        private void FillLobbyCollection(LobbyCollection lobbyCollection, SkinDefinitionContext skinDefinitionContext)
        {
            var lobbyXmlElements = ReadArenasXmlElements().Where(element => XmlValues.lobby == element.GetAttributeValue(XmlNames.type));

            foreach (var lobbyXmlElement in lobbyXmlElements)
            {
                var lobby = new Lobby(lobbyXmlElement.GetAttributeValue <int>(XmlNames.favoritesSize),
                                      lobbyXmlElement.GetAttributeValue(XmlNames.playerStatus));

                foreach (var lobbyItemXmlElement in lobbyXmlElement.Elements(XmlNames.game))
                {
                    lobby.Items.Add(new LobbyItem(lobbyItemXmlElement.GetAttributeValue <int>(XmlNames.gameType),
                                                  XmlValues.mcDynamicTextedButtonPersonalize == lobbyItemXmlElement.GetAttributeValue(XmlNames.templateId, "")));
                }

                lobbyCollection.Add(lobby);
            }
        }
Beispiel #13
0
        private void FillLobbyCollection(LobbyCollection lobbyCollection, SkinDefinitionContext skinDefinitionContext)
        {
            foreach (var lobbyElement in _navigationPlanJson.navigationPlan.arenas)
            {
                if (JsonValues.lobby != ConvertDynamicValue <string>(lobbyElement.type))
                {
                    continue;
                }

                var lobby = new Lobby(ConvertDynamicValue <int>(lobbyElement.favoritesSize),
                                      ExtractPlayerStatus(lobbyElement.playerStatus));

                foreach (var lobbyItemElement in lobbyElement.games)
                {
                    lobby.Items.Add(new LobbyItem(ConvertDynamicValue <int>(lobbyItemElement.gametype),
                                                  ConvertDynamicValue <string>(lobbyItemElement.templateId) == JsonValues.mcDynamicTextedButtonPersonalize));
                }

                lobbyCollection.Add(lobby);
            }
        }
Beispiel #14
0
        private string ConvertNavigationPlanForProduction(SkinDefinitionContext skinDefinitionContext,
                                                          IDisposableLayoutToolPublisherService service)
        {
            var navigationPlanContentResponse = service.GetCurrentProductionNavigationPlan(new LayoutToolPublisherService.GetCurrentProductionNavigationPlanRequest()
            {
                BrandId                = skinDefinitionContext.DestinationSkin.BrandId,
                SkinId                 = skinDefinitionContext.DestinationSkin.SkinId,
                ClientVersion          = Builders.NdlVersionParser.ExtractMajorVersion(skinDefinitionContext.DestinationSkin.ClientVersion),
                ClientVersionJobNumber = Builders.NdlVersionParser.ExtractJobNumber(skinDefinitionContext.DestinationSkin.ClientVersion)
            });

            if (string.IsNullOrEmpty(navigationPlanContentResponse.NavigationPlanContent))
            {
                return(string.Empty);
            }

            var converter = new Builders.Xml.XmlSkinDefinitionConverter();

            converter.NavigationPlan = new InputNavigationPlan(navigationPlanContentResponse.NavigationPlanContent);
            var converstionResult = converter.Convert(skinDefinitionContext.SkinDefinition);

            return(converstionResult.Files.First().NewContent);
        }
Beispiel #15
0
        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);
            }
        }
Beispiel #16
0
        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);
            }
        }
Beispiel #17
0
 public override void Publish(SkinDefinitionContext skinDefinitionContext)
 {
     ServiceLocator.GetInstance <ISkinPublisher>().PublishForQA(skinDefinitionContext, this.SelectedEnvironment.Id);
 }
Beispiel #18
0
 public abstract void Publish(SkinDefinitionContext skinDefinitionContext);
Beispiel #19
0
        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);
            }
        }
Beispiel #20
0
        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);
            }
        }
Beispiel #21
0
        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)));
            }
        }
Beispiel #22
0
 private void FillArenaLayout(ArenaLayout arenaLayout, XElement arenaXmlElement, SkinDefinitionContext skinDefinitionContext)
 {
     FillArenaLayoutGames(arenaLayout, arenaXmlElement, skinDefinitionContext);
     FillArenaLayoutGridInfo(arenaLayout, arenaXmlElement);
     FillArenaLayoutFilters(arenaLayout, arenaXmlElement, skinDefinitionContext);
     FillArenaLayoutAlsoPlayingGames(arenaLayout, arenaXmlElement, skinDefinitionContext);
 }
Beispiel #23
0
        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)));
            }
        }
Beispiel #24
0
        private void FillGamesGroupCollection(GameGroupLayoutCollection gameGroupLayoutCollection, SkinDefinitionContext skinDefinitionContext, string xmlCollectionElementName, string xmlItemElementName)
        {
            var gamesGroupsElements = _navigationPlanXml.Root.Element(XmlNames.lobby_data_ndl)
                                      ?.Elements(xmlCollectionElementName)
                                      .ToArray();



            foreach (var gameGroupXmlElement in gamesGroupsElements)
            {
                var gameGroupLayout = new GameGroupLayout(gameGroupXmlElement.GetAttributeValue(XmlNames.playerStatus));


                foreach (var itemXmlElement in gameGroupXmlElement.Elements(xmlItemElementName))
                {
                    gameGroupLayout.Games.Add(skinDefinitionContext.GetGame(itemXmlElement.GetAttributeValue <int>(XmlNames.gameType)));
                }

                gameGroupLayoutCollection.Add(gameGroupLayout);
            }
        }
Beispiel #25
0
        private void FillGamesGroupCollection(GameGroupLayoutCollection gamesGroupsLayoutCollection, SkinDefinitionContext skinDefinitionContext, dynamic gamesGroup)
        {
            if (gamesGroup == null)
            {
                return;
            }

            var gameGroupLayout = new GameGroupLayout();

            foreach (var gameType in gamesGroup)
            {
                gameGroupLayout.Games.Add(skinDefinitionContext.GetGame(ConvertDynamicValue <int>(gameType)));
            }

            gamesGroupsLayoutCollection.Add(gameGroupLayout);
        }
Beispiel #26
0
 public override void Publish(SkinDefinitionContext skinDefinitionContext)
 {
     ServiceLocator.GetInstance <ISkinPublisher>().PublishForProduction(skinDefinitionContext);
 }
Beispiel #27
0
        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);
            }
        }
Beispiel #28
0
 public override void Publish(SkinDefinitionContext skinDefinitionContext)
 {
     throw new NotSupportedException();
 }
Beispiel #29
0
 public ReadInputFilesResult(string skinDefinitionFile, SkinDefinitionContext skinDefinitionContext, InputFile navigationPlan)
 {
     this.SkinDefinitionFile = skinDefinitionFile;
     SkinDefinitionContext   = skinDefinitionContext;
     NavigationPlan          = navigationPlan;
 }
Beispiel #30
0
 void ISkinDefinitionBuilderViewModel.Publish(SkinDefinitionContext skinDefinitionContext)
 {
     throw new NotSupportedException();
 }