public Attributes2014(string arrangementFileName, Arrangement arrangement, DLCPackageData info, Platform platform) : base(arrangementFileName, arrangement, info, platform) { #region VARIABLES var dlcName = info.Name.ToLower(); var xblockUrn = String.Format(URN_TEMPLATE_SHORT, TagValue.EmergentWorld.GetDescription(), dlcName); var showlightUrn = String.Format(URN_TEMPLATE, TagValue.Application.GetDescription(), TagValue.XML.GetDescription(), String.Format("{0}_showlights", dlcName)); var songXmlUrn = String.Format(URN_TEMPLATE, TagValue.Application.GetDescription(), TagValue.XML.GetDescription(), String.Format(AggregateGraph2014.AggregateGraph2014.NAME_ARRANGEMENT, dlcName, arrangementFileName)); var songSngUrn = String.Format(URN_TEMPLATE, TagValue.Application.GetDescription(), TagValue.MusicgameSong.GetDescription(), String.Format(AggregateGraph2014.AggregateGraph2014.NAME_ARRANGEMENT, dlcName, arrangementFileName)); var manifestFunctions = new ManifestFunctions(platform.version); #endregion #region FILL ATTRIBUTES ArrangementSort = arrangement.ArrangementSort; BlockAsset = xblockUrn; manifestFunctions.GenerateDynamicVisualDensity(this, song2014, arrangement, GameVersion.RS2014);//2.0 constant for vocs in RS2 FullName = String.Format(AggregateGraph2014.AggregateGraph2014.NAME_ARRANGEMENT, info.Name, arrangement.ArrangementName); MasterID_PS3 = (IsVocal) ? -1 : arrangement.MasterId; MasterID_XBox360 = (IsVocal) ? -1 : arrangement.MasterId; PreviewBankPath = String.Format("song_{0}_preview.bnk", info.Name.ToLower()); RelativeDifficulty = 0; //Always 0 in RS2014 ShowlightsXML = showlightUrn; SongAsset = songSngUrn; SongBank = String.Format("song_{0}.bnk", info.Name.ToLower()); SongEvent = String.Format("Play_{0}", info.Name); SongXml = songXmlUrn; SongVolume = info.Volume; PreviewVolume = info.PreviewVolume ?? SongVolume; // Only for Vocal if (IsVocal) { InputEvent = "Play_Tone_Standard_Mic"; return; } // Only for instruments ArrangementProperties = song2014.ArrangementProperties; ArrangementProperties.BassPick = (int)arrangement.PluckedType; ArrangementProperties.PathLead = Convert.ToInt32(arrangement.RouteMask == DLCPackage.RouteMask.Lead); ArrangementProperties.PathRhythm = Convert.ToInt32(arrangement.RouteMask == DLCPackage.RouteMask.Rhythm); ArrangementProperties.PathBass = Convert.ToInt32(arrangement.RouteMask == DLCPackage.RouteMask.Bass); ArrangementProperties.RouteMask = (int)arrangement.RouteMask; // Automatically set as two finger style if pick is not used ArrangementProperties.TwoFingerPicking = ArrangementProperties.PathBass == 1 && ArrangementProperties.BassPick == 0 ? 1 : 0; // TODO: monitor this change // EOF now properly sets the bonus/represent elements ArrangementProperties.Represent = Convert.ToInt32(arrangement.Represent); ArrangementProperties.BonusArr = Convert.ToInt32(arrangement.BonusArr); // Metronome ArrangementProperties.Metronome = (int)arrangement.Metronome; if (arrangement.ArrangementName == Sng.ArrangementName.Combo) { //Exclusive condition if (arrangement.RouteMask == DLCPackage.RouteMask.Lead) { ArrangementType = (int)Sng.ArrangementName.Lead; } else if (arrangement.RouteMask == DLCPackage.RouteMask.Rhythm) { ArrangementType = (int)Sng.ArrangementName.Rhythm; } else { ArrangementType = (int)arrangement.ArrangementName; } } else { ArrangementType = (int)arrangement.ArrangementName; } LastConversionDateTime = song2014.LastConversionDateTime; MaxPhraseDifficulty = manifestFunctions.GetMaxDifficulty(song2014); TargetScore = 100000; PhraseIterations = new List <PhraseIteration>(); manifestFunctions.GeneratePhraseIterationsData(this, song2014, platform.version); //Score_MaxNotes -- Generated on function above //Score_PNV -- Generated on function above Phrases = new List <Phrase>(); manifestFunctions.GeneratePhraseData(this, song2014); Sections = new List <Section>(); manifestFunctions.GenerateSectionData(this, song2014); SongAverageTempo = song2014.AverageTempo; SongOffset = -song2014.StartBeat; //arrangement.Sng2014.Metadata.StartTime * -1; //SongPartition -- Generated in DLCPackageCreator after this constructor ChordTemplates = new List <ChordTemplate>(); manifestFunctions.GenerateChordTemplateData(this, song2014); //Chords TODO: create me try { // Commented out to check if this is cause of repeating chord display in game manifestFunctions.GenerateChords(this, song2014); } catch (Exception ex) { Console.WriteLine("GenerateChords: " + ex.Message); } //Techniques TODO: improve me // not source of 100% bug try { manifestFunctions.GenerateTechniques(this, song2014); } catch (Exception ex) { Console.WriteLine("GenerateTechniques: " + ex.Message); } //Fix for Dead tones var it = info.TonesRS2014; Tones = new List <Tone2014>(); Tone_A = GetToneName(arrangement.ToneA, it); Tone_B = GetToneName(arrangement.ToneB, it); Tone_Base = GetToneName(arrangement.ToneBase, it); Tone_C = GetToneName(arrangement.ToneC, it); Tone_D = GetToneName(arrangement.ToneD, it); Tone_Multiplayer = GetToneName(arrangement.ToneMultiplayer, it); #endregion }
public Attributes2014(string arrangementFileName, Arrangement arrangement, DLCPackageData info, Platform platform) : base(arrangementFileName, arrangement, info, platform) { #region VARIABLES var dlcName = info.Name.ToLower(); var xblockUrn = String.Format(URN_TEMPLATE_SHORT, TagValue.EmergentWorld.GetDescription(), dlcName); var showlightUrn = String.Format(URN_TEMPLATE, TagValue.Application.GetDescription(), TagValue.XML.GetDescription(), String.Format("{0}_showlights", dlcName)); var songXmlUrn = String.Format(URN_TEMPLATE, TagValue.Application.GetDescription(), TagValue.XML.GetDescription(), String.Format(AggregateGraph2014.AggregateGraph2014.NAME_ARRANGEMENT, dlcName, arrangementFileName)); var songSngUrn = String.Format(URN_TEMPLATE, TagValue.Application.GetDescription(), TagValue.MusicgameSong.GetDescription(), String.Format(AggregateGraph2014.AggregateGraph2014.NAME_ARRANGEMENT, dlcName, arrangementFileName)); var manifestFunctions = new ManifestFunctions(platform.version); #endregion #region FILL ATTRIBUTES ArrangementSort = arrangement.ArrangementSort; BlockAsset = xblockUrn; manifestFunctions.GenerateDynamicVisualDensity(this, SongContent, arrangement, GameVersion.RS2014);//2.0 constant for vocs in RS2 FullName = String.Format(AggregateGraph2014.AggregateGraph2014.NAME_ARRANGEMENT, info.Name, arrangement.Name); MasterID_PS3 = (IsVocal) ? -1 : arrangement.MasterId; MasterID_XBox360 = (IsVocal) ? -1 : arrangement.MasterId; PreviewBankPath = String.Format("song_{0}_preview.bnk", info.Name.ToLower()); RelativeDifficulty = 0; //Always 0 in RS2014 ShowlightsXML = showlightUrn; SongAsset = songSngUrn; SongBank = String.Format("song_{0}.bnk", info.Name.ToLower()); SongEvent = String.Format("Play_{0}", info.Name); SongXml = songXmlUrn; SongVolume = info.Volume; PreviewVolume = info.PreviewVolume ?? SongVolume; // Only for Vocal if (IsVocal) { InputEvent = "Play_Tone_Standard_Mic"; } // Only for instruments if (!IsVocal) { ArrangementProperties = SongContent.ArrangementProperties; ArrangementProperties.BassPick = (int)arrangement.PluckedType; ArrangementProperties.PathLead = Convert.ToInt32(arrangement.RouteMask == DLCPackage.RouteMask.Lead); ArrangementProperties.PathRhythm = Convert.ToInt32(arrangement.RouteMask == DLCPackage.RouteMask.Rhythm); ArrangementProperties.PathBass = Convert.ToInt32(arrangement.RouteMask == DLCPackage.RouteMask.Bass); ArrangementProperties.RouteMask = (int)arrangement.RouteMask; // BONUS ARRANGEMENT ArrangementProperties.BonusArr = Convert.ToInt32(arrangement.BonusArr); // Metronome ArrangementProperties.Metronome = (int)arrangement.Metronome; if (arrangement.Name == Sng.ArrangementName.Combo) { //Exclusive condition if (arrangement.RouteMask == DLCPackage.RouteMask.Lead) { ArrangementType = (int)Sng.ArrangementName.Lead; } else if (arrangement.RouteMask == DLCPackage.RouteMask.Rhythm) { ArrangementType = (int)Sng.ArrangementName.Rhythm; } else { ArrangementType = (int)arrangement.Name; } } else { ArrangementType = (int)arrangement.Name; } //Chords -- //TODO: MISSING GENERATE ChordTemplates = new List <ChordTemplate>(); manifestFunctions.GenerateChordTemplateData(this, SongContent); LastConversionDateTime = SongContent.LastConversionDateTime; MaxPhraseDifficulty = manifestFunctions.GetMaxDifficulty(SongContent); TargetScore = 100000; PhraseIterations = new List <PhraseIteration>(); manifestFunctions.GeneratePhraseIterationsData(this, SongContent, platform.version); //Score_MaxNotes -- Generated on function above //Score_PNV -- Generated on function above Phrases = new List <Phrase>(); manifestFunctions.GeneratePhraseData(this, SongContent); Sections = new List <Section>(); manifestFunctions.GenerateSectionData(this, SongContent); SongAverageTempo = SongContent.AverageTempo; SongOffset = arrangement.Sng2014.Metadata.StartTime * -1; //SongPartition -- Generated in DLCPackageCreator after this constructor //Techniques TODO: improove me try { manifestFunctions.GenerateTechniques(this, SongContent); } catch { } //Fix for Dead tones var it = info.TonesRS2014; Tones = new List <Tone2014>(); Tone_A = GetToneName(arrangement.ToneA, it); Tone_B = GetToneName(arrangement.ToneB, it); Tone_Base = GetToneName(arrangement.ToneBase, it); Tone_C = GetToneName(arrangement.ToneC, it); Tone_D = GetToneName(arrangement.ToneD, it); Tone_Multiplayer = GetToneName(arrangement.ToneMultiplayer, it); } #endregion }