Example #1
0
        private void SongAggregateGraph(DLCPackageData info, DLCPackageType dlcType)
        {
            var dlcName       = info.Name.ToLower();
            var songPartition = new SongPartition();

            // Xblock
            GameXblock = new List <GraphItem>();
            var xbl = new GraphItem();

            xbl.Name             = dlcName;
            xbl.Canonical        = String.Format(CANONICAL_XBLOCK[dlcType], dlcName);
            xbl.RelPathDirectory = xbl.Canonical;
            xbl.Tag = new List <string>();
            xbl.Tag.Add(TagValue.EmergentWorld.GetDescription());
            xbl.Tag.Add(TagValue.XWorld.GetDescription());
            xbl.UUID        = IdGenerator.Guid();
            xbl.RelPathFile = String.Format("{0}.xblock", xbl.Name);
            GameXblock.Add(xbl);

            JsonDB = new List <GraphItem>();
            if (currentPlatform.IsConsole)
            {
                HsonDB = new List <GraphItem>();
            }

            SongXml       = new List <GraphItemLLID>();
            MusicgameSong = new List <GraphItemLLID>();
            foreach (var arrangement in info.Arrangements)
            {
                if (arrangement.ArrangementType == Sng.ArrangementType.ShowLight)
                {
                    continue;
                }

                var name = String.Format(NAME_ARRANGEMENT, dlcName, songPartition.GetArrangementFileName(arrangement.ArrangementName, arrangement.ArrangementType).ToLower());

                // JsonDB
                var json = new GraphItem();
                json.Name             = name;
                json.Canonical        = currentPlatform.IsConsole ? CANONICAL_MANIFEST_CONSOLE : String.Format(CANONICAL_MANIFEST_PC, dlcName);
                json.RelPathDirectory = json.Canonical;
                json.Tag = new List <string>();
                json.Tag.Add(TagValue.Database.GetDescription());
                json.Tag.Add(TagValue.JsonDB.GetDescription());
                json.UUID        = IdGenerator.Guid();
                json.RelPathFile = String.Format("{0}.json", json.Name);
                JsonDB.Add(json);

                //One file for each arrangement (Xbox360 / PS3 only)
                if (currentPlatform.IsConsole)
                {
                    // HsonDB
                    var hson = new GraphItem();
                    hson.Name             = name;
                    hson.Canonical        = CANONICAL_MANIFEST_CONSOLE;
                    hson.RelPathDirectory = hson.Canonical;
                    hson.Tag = new List <string>();
                    hson.Tag.Add(TagValue.Database.GetDescription());
                    hson.Tag.Add(TagValue.HsonDB.GetDescription());
                    hson.UUID        = IdGenerator.Guid();
                    hson.RelPathFile = String.Format("{0}.hson", json.Name);
                    HsonDB.Add(hson);
                }

                // XmlSong
                var xml = new GraphItemLLID();
                xml.Name             = name;
                xml.Canonical        = String.Format(CANONICAL_XMLSONG, dlcName);
                xml.RelPathDirectory = xml.Canonical;
                xml.LogPathDirectory = xml.Canonical;
                xml.Tag = new List <string>();
                xml.Tag.Add(TagValue.Application.GetDescription());
                xml.Tag.Add(TagValue.XML.GetDescription());
                xml.UUID        = arrangement.SongXml.UUID;
                xml.LLID        = IdGenerator.LLIDGuid();
                xml.RelPathFile = String.Format("{0}.xml", xml.Name);
                xml.LogPathFile = xml.RelPathFile;
                SongXml.Add(xml);

                // Musicgame
                var sng = new GraphItemLLID();
                sng.Name             = name;
                sng.Canonical        = String.Format(CANONICAL_GAMESONG, currentPlatform.GetPathName()[1].ToLower());
                sng.RelPathDirectory = sng.Canonical;
                sng.LogPathDirectory = sng.Canonical;
                sng.Tag = new List <string>();
                sng.Tag.Add(TagValue.Application.GetDescription());
                sng.Tag.Add(TagValue.MusicgameSong.GetDescription());
                if (currentPlatform.IsConsole)
                {
                    sng.Tag.Add(GraphItem.GetPlatformTagDescription(currentPlatform.platform));
                }
                sng.UUID        = arrangement.SongFile.UUID;
                sng.LLID        = IdGenerator.LLIDGuid();
                sng.RelPathFile = String.Format("{0}.sng", sng.Name);
                sng.LogPathFile = sng.RelPathFile;
                MusicgameSong.Add(sng);
            }

            if (currentPlatform.version == GameVersion.RS2014)
            {
                //One file for all arrangement (PC / Mac only)
                if (!currentPlatform.IsConsole)
                {
                    // HsanDB
                    var hsan = new GraphItem();
                    hsan.Name             = String.Format("songs_dlc_{0}", dlcName);
                    hsan.Canonical        = String.Format(CANONICAL_MANIFEST_PC, dlcName);
                    hsan.RelPathDirectory = hsan.Canonical;
                    hsan.Tag = new List <string>();
                    hsan.Tag.Add(TagValue.Database.GetDescription());
                    hsan.Tag.Add(TagValue.HsanDB.GetDescription());
                    hsan.UUID        = IdGenerator.Guid();
                    hsan.RelPathFile = String.Format("{0}.hsan", hsan.Name);
                    HsanDB           = hsan;
                }

                // Showlight (Xml)
                var ShowlightXml = new List <GraphItemLLID>();
                var xml          = new GraphItemLLID();
                xml.Name             = String.Format(NAME_SHOWLIGHT, dlcName);
                xml.Canonical        = String.Format(CANONICAL_XMLSONG, dlcName);
                xml.RelPathDirectory = xml.Canonical;
                xml.LogPathDirectory = xml.Canonical;
                xml.Tag = new List <string>();
                xml.Tag.Add(TagValue.Application.GetDescription());
                xml.Tag.Add(TagValue.XML.GetDescription());
                xml.UUID        = IdGenerator.Guid();
                xml.LLID        = IdGenerator.LLIDGuid();
                xml.RelPathFile = String.Format("{0}.xml", xml.Name);
                xml.LogPathFile = xml.RelPathFile;
                SongXml.Add(xml); // TODO: check this
                ShowlightXml.Add(xml);
            }

            // Image Art (DDS)
            var aArtArray = new string[] { info.AlbumArtPath };

            if (currentPlatform.version == GameVersion.RS2014)
            {
                aArtArray = new string[] {
                    String.Format("album_{0}_256.dds", dlcName),
                    String.Format("album_{0}_128.dds", dlcName),
                    String.Format("album_{0}_64.dds", dlcName)
                }
            }
            ;
            ImageArt = new List <GraphItemLLID>();
            foreach (var album in aArtArray)
            {
                var dds = new GraphItemLLID();
                dds.Canonical        = CANONICAL_IMAGEART[dlcType];
                dds.RelPathDirectory = dds.Canonical;
                dds.LogPathDirectory = dds.Canonical;
                dds.Tag = new List <string>();
                dds.Tag.Add(TagValue.DDS.GetDescription());
                dds.Tag.Add(TagValue.Image.GetDescription());
                dds.UUID        = IdGenerator.Guid();
                dds.LLID        = IdGenerator.LLIDGuid();
                dds.Name        = Path.GetFileNameWithoutExtension(album);
                dds.RelPathFile = Path.GetFileName(album);
                dds.LogPathFile = dds.RelPathFile;
                ImageArt.Add(dds);
            }

            // Lyrics Font Texture
            if (!String.IsNullOrEmpty(info.LyricArtPath))
            {
                var dds = new GraphItemLLID();
                dds.Canonical        = String.Format(CANONICAL_LYRIC, dlcName);
                dds.RelPathDirectory = dds.Canonical;
                dds.LogPathDirectory = dds.Canonical;
                dds.Tag = new List <string>();
                dds.Tag.Add(TagValue.DDS.GetDescription());
                dds.Tag.Add(TagValue.Image.GetDescription());
                dds.UUID        = IdGenerator.Guid();
                dds.LLID        = IdGenerator.LLIDGuid();
                dds.Name        = String.Format("lyrics_{0}", dlcName);
                dds.RelPathFile = String.Format("{0}.dds", dds.Name); //keep extension
                dds.LogPathFile = dds.RelPathFile;
                ImageArt.Add(dds);
            }

            // Soundbank
            Soundbank = new List <GraphItemLLID>();
            var bnk = new GraphItemLLID();

            bnk.Canonical        = String.Format(CANONICAL_SOUNDBANK, currentPlatform.GetPathName()[0].ToLower());
            bnk.RelPathDirectory = bnk.Canonical;
            bnk.LogPathDirectory = LOGPATH_SOUNDBANK;
            bnk.Tag = new List <string>();
            bnk.Tag.Add(TagValue.Audio.GetDescription());
            bnk.Tag.Add(TagValue.WwiseSoundBank.GetDescription());
            bnk.Tag.Add(GraphItem.GetPlatformTagDescription(currentPlatform.platform));
            bnk.UUID        = IdGenerator.Guid();
            bnk.LLID        = IdGenerator.LLIDGuid();
            bnk.Name        = String.Format("song_{0}", dlcName);
            bnk.RelPathFile = String.Format("{0}.bnk", bnk.Name);
            bnk.LogPathFile = bnk.RelPathFile;
            Soundbank.Add(bnk);

            if (currentPlatform.version == GameVersion.RS2014)
            {
                // Soundbank Preview
                var bnkPreview = new GraphItemLLID();
                bnkPreview.Canonical        = String.Format(CANONICAL_SOUNDBANK, currentPlatform.GetPathName()[0].ToLower());
                bnkPreview.RelPathDirectory = bnkPreview.Canonical;
                bnkPreview.LogPathDirectory = LOGPATH_SOUNDBANK;
                bnkPreview.Tag = new List <string>();
                bnkPreview.Tag.Add(TagValue.Audio.GetDescription());
                bnkPreview.Tag.Add(TagValue.WwiseSoundBank.GetDescription());
                bnkPreview.Tag.Add(GraphItem.GetPlatformTagDescription(currentPlatform.platform));
                bnkPreview.UUID        = IdGenerator.Guid();
                bnkPreview.LLID        = IdGenerator.LLIDGuid();
                bnkPreview.Name        = String.Format("song_{0}_preview", dlcName);
                bnkPreview.RelPathFile = String.Format("{0}.bnk", bnkPreview.Name);
                bnkPreview.LogPathFile = bnkPreview.RelPathFile;
                Soundbank.Add(bnkPreview);
            }
        }
        private void SongAggregateGraph(DLCPackageData info, DLCPackageType dlcType)
        {
            var dlcName = info.Name.ToLower();
            var songPartition = new SongPartition();

            // Xblock
            var xbl = new GraphItem();
            xbl.Name = dlcName;
            xbl.Canonical = String.Format(CANONICAL_XBLOCK[dlcType], dlcName);
            xbl.RelPathDirectory = xbl.Canonical;
            xbl.Tag = new List<string>();
            xbl.Tag.Add(TagValue.EmergentWorld.GetDescription());
            xbl.Tag.Add(TagValue.XWorld.GetDescription());
            xbl.UUID = IdGenerator.Guid();
            xbl.RelPathFile = String.Format("{0}.xblock", xbl.Name);
            GameXblock = xbl;

            JsonDB = new List<GraphItem>();
            if (currentPlatform.IsConsole)
                HsonDB = new List<GraphItem>();

            SongXml = new List<GraphItemLLID>();
            MusicgameSong = new List<GraphItemLLID>();
            foreach (var arrangement in info.Arrangements) {
                var name = String.Format(NAME_ARRANGEMENT, dlcName, songPartition.GetArrangementFileName(arrangement.Name, arrangement.ArrangementType).ToLower());

                // JsonDB
                var json = new GraphItem();
                json.Name = name;
                json.Canonical = currentPlatform.IsConsole ? CANONICAL_MANIFEST_CONSOLE : String.Format(CANONICAL_MANIFEST_PC, dlcName);
                json.RelPathDirectory = json.Canonical;
                json.Tag = new List<string>();
                json.Tag.Add(TagValue.Database.GetDescription());
                json.Tag.Add(TagValue.JsonDB.GetDescription());
                json.UUID = IdGenerator.Guid();
                json.RelPathFile = String.Format("{0}.json", json.Name);
                JsonDB.Add(json);

                //One file for each arrangement (Xbox360 / PS3 only)
                if (currentPlatform.IsConsole) {
                    // HsonDB
                    var hson = new GraphItem();
                    hson.Name = name;
                    hson.Canonical = CANONICAL_MANIFEST_CONSOLE;
                    hson.RelPathDirectory = hson.Canonical;
                    hson.Tag = new List<string>();
                    hson.Tag.Add(TagValue.Database.GetDescription());
                    hson.Tag.Add(TagValue.HsonDB.GetDescription());
                    hson.UUID = IdGenerator.Guid();
                    hson.RelPathFile = String.Format("{0}.hson", json.Name);
                    HsonDB.Add(hson);
                }

                // XmlSong
                var xml = new GraphItemLLID();
                xml.Name = name;
                xml.Canonical = String.Format(CANONICAL_XMLSONG, dlcName);
                xml.RelPathDirectory = xml.Canonical;
                xml.LogPathDirectory = xml.Canonical;
                xml.Tag = new List<string>();
                xml.Tag.Add(TagValue.Application.GetDescription());
                xml.Tag.Add(TagValue.XML.GetDescription());
                xml.UUID = arrangement.SongXml.UUID;
                xml.LLID = Guid.Parse(arrangement.SongXml.LLID);
                xml.RelPathFile = String.Format("{0}.xml", xml.Name);
                xml.LogPathFile = xml.RelPathFile;
                SongXml.Add(xml);

                // Musicgame
                var sng = new GraphItemLLID();
                sng.Name = name;
                sng.Canonical = String.Format(CANONICAL_GAMESONG, currentPlatform.GetPathName()[1].ToLower());
                sng.RelPathDirectory = sng.Canonical;
                sng.LogPathDirectory = sng.Canonical;
                sng.Tag = new List<string>();
                sng.Tag.Add(TagValue.Application.GetDescription());
                sng.Tag.Add(TagValue.MusicgameSong.GetDescription());
                if (currentPlatform.IsConsole)
                    sng.Tag.Add(GraphItem.GetPlatformTagDescription(currentPlatform.platform));
                sng.UUID = arrangement.SongFile.UUID;
                sng.LLID = Guid.Parse(arrangement.SongFile.LLID);
                sng.RelPathFile = String.Format("{0}.sng", sng.Name);
                sng.LogPathFile = sng.RelPathFile;
                MusicgameSong.Add(sng);
            }

            if (currentPlatform.version == GameVersion.RS2014) {
                //One file for all arrangement (PC / Mac only)
                if (!currentPlatform.IsConsole) {
                    // HsanDB
                    var hsan = new GraphItem();
                    hsan.Name = String.Format("songs_dlc_{0}", dlcName);
                    hsan.Canonical = String.Format(CANONICAL_MANIFEST_PC, dlcName);
                    hsan.RelPathDirectory = hsan.Canonical;
                    hsan.Tag = new List<string>();
                    hsan.Tag.Add(TagValue.Database.GetDescription());
                    hsan.Tag.Add(TagValue.HsanDB.GetDescription());
                    hsan.UUID = IdGenerator.Guid();
                    hsan.RelPathFile = String.Format("{0}.hsan", hsan.Name);
                    HsanDB = hsan;
                }

                // Showlight (Xml)
                var xml = new GraphItemLLID();
                xml.Name = String.Format(NAME_SHOWLIGHT, dlcName);
                xml.Canonical = String.Format(CANONICAL_XMLSONG, dlcName);
                xml.RelPathDirectory = xml.Canonical;
                xml.LogPathDirectory = xml.Canonical;
                xml.Tag = new List<string>();
                xml.Tag.Add(TagValue.Application.GetDescription());
                xml.Tag.Add(TagValue.XML.GetDescription());
                xml.UUID = IdGenerator.Guid();
                xml.LLID = Guid.Parse(IdGenerator.LLID());
                xml.RelPathFile = String.Format("{0}.xml", xml.Name);
                xml.LogPathFile = xml.RelPathFile;
                SongXml.Add(xml);
                ShowlightXml = xml;
            }

            // Image Art (DDS)
            var aArtArray = new string[] { info.AlbumArtPath };
            if (currentPlatform.version == GameVersion.RS2014)
                aArtArray = new string[] {
                    String.Format("album_{0}_256.dds", dlcName),
                    String.Format("album_{0}_128.dds", dlcName),
                    String.Format("album_{0}_64.dds", dlcName) };
            ImageArt = new List<GraphItemLLID>();
            foreach (var album in aArtArray) {
                var dds = new GraphItemLLID();
                dds.Canonical = CANONICAL_IMAGEART[dlcType];
                dds.RelPathDirectory = dds.Canonical;
                dds.LogPathDirectory = dds.Canonical;
                dds.Tag = new List<string>();
                dds.Tag.Add(TagValue.DDS.GetDescription());
                dds.Tag.Add(TagValue.Image.GetDescription());
                dds.UUID = IdGenerator.Guid();
                dds.LLID = Guid.Parse(IdGenerator.LLID());
                dds.Name = Path.GetFileNameWithoutExtension(album);
                dds.RelPathFile = Path.GetFileName(album);
                dds.LogPathFile = dds.RelPathFile;
                ImageArt.Add(dds);
            }

            // Lyrics Font Texture
            if (!String.IsNullOrEmpty(info.LyricsTex)) {
                LyricsTex = new GraphItemLLID();
                var tex = new GraphItemLLID();
                tex.Canonical = String.Format(CANONICAL_MANIFEST_PC, dlcName);
                tex.RelPathDirectory = tex.Canonical;
                tex.LogPathDirectory = tex.Canonical;
                tex.Tag = new List<string>();
                tex.Tag.Add(TagValue.DDS.GetDescription());
                tex.Tag.Add(TagValue.Image.GetDescription());
                tex.UUID = IdGenerator.Guid();
                tex.LLID = Guid.Parse(IdGenerator.LLID());
                tex.Name = String.Format("lyrics_{0}", dlcName);
                tex.RelPathFile = tex.Name;
                tex.LogPathFile = tex.RelPathFile;
                LyricsTex = tex;
            }

            // Soundbank
            Soundbank = new List<GraphItemLLID>();
            var bnk = new GraphItemLLID();
            bnk.Canonical = String.Format(CANONICAL_SOUNDBANK, currentPlatform.GetPathName()[0].ToLower());
            bnk.RelPathDirectory = bnk.Canonical;
            bnk.LogPathDirectory = LOGPATH_SOUNDBANK;
            bnk.Tag = new List<string>();
            bnk.Tag.Add(TagValue.Audio.GetDescription());
            bnk.Tag.Add(TagValue.WwiseSoundBank.GetDescription());
            bnk.Tag.Add(GraphItem.GetPlatformTagDescription(currentPlatform.platform));
            bnk.UUID = IdGenerator.Guid();
            bnk.LLID = Guid.Parse(IdGenerator.LLID());
            bnk.Name = String.Format("song_{0}", dlcName);
            bnk.RelPathFile = String.Format("{0}.bnk", bnk.Name);
            bnk.LogPathFile = bnk.RelPathFile;
            Soundbank.Add(bnk);

            if (currentPlatform.version == GameVersion.RS2014) {
                // Soundbank Preview
                var bnkPreview = new GraphItemLLID();
                bnkPreview.Canonical = String.Format(CANONICAL_SOUNDBANK, currentPlatform.GetPathName()[0].ToLower());
                bnkPreview.RelPathDirectory = bnkPreview.Canonical;
                bnkPreview.LogPathDirectory = LOGPATH_SOUNDBANK;
                bnkPreview.Tag = new List<string>();
                bnkPreview.Tag.Add(TagValue.Audio.GetDescription());
                bnkPreview.Tag.Add(TagValue.WwiseSoundBank.GetDescription());
                bnkPreview.Tag.Add(GraphItem.GetPlatformTagDescription(currentPlatform.platform));
                bnkPreview.UUID = IdGenerator.Guid();
                bnkPreview.LLID = Guid.Parse(IdGenerator.LLID());
                bnkPreview.Name = String.Format("song_{0}_preview", dlcName);
                bnkPreview.RelPathFile = String.Format("{0}.bnk", bnkPreview.Name);
                bnkPreview.LogPathFile = bnkPreview.RelPathFile;
                Soundbank.Add(bnkPreview);
            }
        }
        public static GameXblock <Entity2014> Generate2014(DLCPackageData info, Platform platform, DLCPackageType dlcType = DLCPackageType.Song)
        {
            var game = new GameXblock <Entity2014>();

            game.EntitySet = new List <Entity2014>();

            var dlcName       = info.Name.ToLower();
            var songPartition = new SongPartition();

            switch (dlcType)
            {
            case DLCPackageType.Song:
                foreach (var arrangement in info.Arrangements)
                {
                    if (arrangement.ArrangementType == ArrangementType.ShowLight)
                    {
                        continue;
                    }

                    var entity = new Entity2014();
                    var arrangementFileName = songPartition.GetArrangementFileName(arrangement.Name, arrangement.ArrangementType);

                    entity.Id         = arrangement.Id.ToLowerId();
                    entity.ModelName  = "RSEnumerable_Song";
                    entity.Name       = String.Format("{0}_{1}", info.Name, arrangementFileName);
                    entity.Iterations = 0;

                    entity.Properties = new List <Property2014>();
                    if (platform.IsConsole)
                    {
                        entity.Properties.Add(new Property2014()
                        {
                            Name = "Header", Set = new Set()
                            {
                                Value = String.Format(URN_TEMPLATE, TagValue.Database.GetDescription(), TagValue.HsonDB.GetDescription(), String.Format(AggregateGraph2014.AggregateGraph2014.NAME_ARRANGEMENT, dlcName, arrangementFileName.ToLower()))
                            }
                        });
                    }
                    else
                    {
                        entity.Properties.Add(new Property2014()
                        {
                            Name = "Header", Set = new Set()
                            {
                                Value = String.Format(URN_TEMPLATE, TagValue.Database.GetDescription(), TagValue.HsanDB.GetDescription(), String.Format("songs_dlc_{0}", dlcName))
                            }
                        });
                    }
                    entity.Properties.Add(new Property2014()
                    {
                        Name = "Manifest", Set = new Set()
                        {
                            Value = String.Format(URN_TEMPLATE, TagValue.Database.GetDescription(), TagValue.JsonDB.GetDescription(), String.Format(AggregateGraph2014.AggregateGraph2014.NAME_ARRANGEMENT, dlcName, arrangementFileName.ToLower()))
                        }
                    });
                    entity.Properties.Add(new Property2014()
                    {
                        Name = "SngAsset", Set = new Set()
                        {
                            Value = String.Format(URN_TEMPLATE, TagValue.Application.GetDescription(), TagValue.MusicgameSong.GetDescription(), String.Format(AggregateGraph2014.AggregateGraph2014.NAME_ARRANGEMENT, dlcName, arrangementFileName.ToLower()))
                        }
                    });
                    entity.Properties.Add(new Property2014()
                    {
                        Name = "AlbumArtSmall", Set = new Set()
                        {
                            Value = String.Format(URN_TEMPLATE, TagValue.Image.GetDescription(), TagValue.DDS.GetDescription(), String.Format("album_{0}_64", dlcName))
                        }
                    });
                    entity.Properties.Add(new Property2014()
                    {
                        Name = "AlbumArtMedium", Set = new Set()
                        {
                            Value = String.Format(URN_TEMPLATE, TagValue.Image.GetDescription(), TagValue.DDS.GetDescription(), String.Format("album_{0}_128", dlcName))
                        }
                    });
                    entity.Properties.Add(new Property2014()
                    {
                        Name = "AlbumArtLarge", Set = new Set()
                        {
                            Value = String.Format(URN_TEMPLATE, TagValue.Image.GetDescription(), TagValue.DDS.GetDescription(), String.Format("album_{0}_256", dlcName))
                        }
                    });
                    if (arrangement.ArrangementType == ArrangementType.Vocal && arrangement.CustomFont)     // One per song
                    {
                        entity.Properties.Add(new Property2014()
                        {
                            Name = "LyricArt", Set = new Set()
                            {
                                Value = String.Format(URN_TEMPLATE, TagValue.Image.GetDescription(), TagValue.DDS.GetDescription(), String.Format("lyrics_{0}", dlcName))
                            }
                        });
                    }
                    else
                    {
                        entity.Properties.Add(new Property2014()
                        {
                            Name = "LyricArt", Set = new Set()
                            {
                                Value = ""
                            }
                        });
                    }
                    entity.Properties.Add(new Property2014()
                    {
                        Name = "ShowLightsXMLAsset", Set = new Set()
                        {
                            Value = String.Format(URN_TEMPLATE, TagValue.Application.GetDescription(), TagValue.XML.GetDescription(), String.Format(AggregateGraph2014.AggregateGraph2014.NAME_SHOWLIGHT, dlcName))
                        }
                    });
                    entity.Properties.Add(new Property2014()
                    {
                        Name = "SoundBank", Set = new Set()
                        {
                            Value = String.Format(URN_TEMPLATE, TagValue.Audio.GetDescription(), TagValue.WwiseSoundBank.GetDescription(), String.Format("song_{0}", dlcName))
                        }
                    });
                    entity.Properties.Add(new Property2014()
                    {
                        Name = "PreviewSoundBank", Set = new Set()
                        {
                            Value = String.Format(URN_TEMPLATE, TagValue.Audio.GetDescription(), TagValue.WwiseSoundBank.GetDescription(), String.Format("song_{0}_preview", dlcName))
                        }
                    });

                    game.EntitySet.Add(entity);
                }
                break;

            case DLCPackageType.Lesson:
                throw new NotImplementedException("Lesson package type not implemented yet :(");

            case DLCPackageType.Inlay:
                dlcName = info.Inlay.DLCSixName;
                var inlayEntity = new Entity2014();

                inlayEntity.Id         = info.Inlay.Id.ToLowerId();
                inlayEntity.ModelName  = "RSEnumerable_Guitars";
                inlayEntity.Name       = info.Name;
                inlayEntity.Iterations = 0;

                inlayEntity.Properties = new List <Property2014>();
                if (platform.IsConsole)
                {
                    inlayEntity.Properties.Add(new Property2014()
                    {
                        Name = "Header", Set = new Set()
                        {
                            Value = String.Format(URN_TEMPLATE, TagValue.Database.GetDescription(), TagValue.HsonDB.GetDescription(), String.Format("dlc_{0}", dlcName))
                        }
                    });
                }
                else
                {
                    inlayEntity.Properties.Add(new Property2014()
                    {
                        Name = "Header", Set = new Set()
                        {
                            Value = String.Format(URN_TEMPLATE, TagValue.Database.GetDescription(), TagValue.HsanDB.GetDescription(), String.Format("dlc_{0}", dlcName))
                        }
                    });
                }
                inlayEntity.Properties.Add(new Property2014()
                {
                    Name = "Manifest", Set = new Set()
                    {
                        Value = String.Format(URN_TEMPLATE, TagValue.Database.GetDescription(), TagValue.JsonDB.GetDescription(), String.Format("dlc_guitar_{0}", dlcName))
                    }
                });
                inlayEntity.Properties.Add(new Property2014()
                {
                    Name = "PreviewArt", Set = new Set()
                    {
                        Value = String.Format(URN_TEMPLATE, TagValue.Image.GetDescription(), TagValue.DDS.GetDescription(), String.Format("reward_inlay_{0}", dlcName))
                    }
                });
                //
                inlayEntity.Properties.Add(new Property2014()
                {
                    Name = "DecorativeInlays", Set = new Set()
                    {
                        Value = String.Format(URN_TEMPLATE, TagValue.Application.GetDescription(), TagValue.GamebryoSceneGraph.GetDescription(), dlcName)
                    }
                });
                game.EntitySet.Add(inlayEntity);
                break;
            }

            return(game);
        }