RocksmithToolkitLib.Song2014ToTab.Rs2014Converter.AddDifferences C# (CSharp) Method

AddDifferences() private method

private AddDifferences ( Song2014 rs2014Song, RocksmithToolkitLib.Xml.Song rs1Song ) : void
rs2014Song RocksmithToolkitLib.Xml.Song2014
rs1Song RocksmithToolkitLib.Xml.Song
return void
        private void AddDifferences(Song2014 rs2014Song, Song rs1Song)
        {
            // there are slight mapping differences to account for in some elements
            for (var i = 0; i < rs2014Song.PhraseProperties.Count(); i++)
            {
                // TODO: Verify this element accuracy
                if (rs2014Song.PhraseProperties[i].Redundant == 256)
                    // there may be a second phraseProperties[].redudant
                    rs1Song.PhraseProperties[i].Redundant = 0;
            }

            // add sufficient elements for phraseIterations
            var phrases = new List<SongPhraseIteration>();
            for (var i = 0; i < rs2014Song.PhraseIterations.Count(); i++)
            {
                phrases.Add(new SongPhraseIteration { PhraseId = i, Time = 0 });
            }

            if (rs2014Song.PhraseIterations.Count() > 0) // pop phraseIterations
            {
                rs1Song.PhraseIterations = phrases.ToArray();

                for (var i = 0; i < rs2014Song.PhraseIterations.Count(); i++)
                {
                    rs1Song.PhraseIterations[i].PhraseId = rs2014Song.PhraseIterations[i].PhraseId;
                    rs1Song.PhraseIterations[i].Time = rs2014Song.PhraseIterations[i].Time;
                }
            }

            // add sufficient elements for chordTemplates
            var chordTemplate = new List<SongChordTemplate>();
            for (var i = 0; i < rs2014Song.ChordTemplates.Count(); i++)
            {
                chordTemplate.Add(new SongChordTemplate
                    {
                        ChordName = "C",
                        Finger0 = 0,
                        Finger1 = 0,
                        Finger2 = 0,
                        Finger3 = 0,
                        Finger4 = 0,
                        Finger5 = 0,
                        Fret0 = 0,
                        Fret1 = 0,
                        Fret2 = 0,
                        Fret3 = 0,
                        Fret4 = 0,
                        Fret5 = 0
                    });
            }

            if (rs2014Song.ChordTemplates.Count() > 0) // pop chordTemplates
            {
                rs1Song.ChordTemplates = chordTemplate.ToArray();

                for (var i = 0; i < rs2014Song.ChordTemplates.Count(); i++)
                {
                    rs1Song.ChordTemplates[i].ChordName = rs2014Song.ChordTemplates[i].ChordName;
                    rs1Song.ChordTemplates[i].Finger0 = rs2014Song.ChordTemplates[i].Finger0;
                    rs1Song.ChordTemplates[i].Finger1 = rs2014Song.ChordTemplates[i].Finger1;
                    rs1Song.ChordTemplates[i].Finger2 = rs2014Song.ChordTemplates[i].Finger2;
                    rs1Song.ChordTemplates[i].Finger3 = rs2014Song.ChordTemplates[i].Finger3;
                    rs1Song.ChordTemplates[i].Finger4 = rs2014Song.ChordTemplates[i].Finger4;
                    rs1Song.ChordTemplates[i].Finger5 = rs2014Song.ChordTemplates[i].Finger5;
                    rs1Song.ChordTemplates[i].Fret0 = rs2014Song.ChordTemplates[i].Fret0;
                    rs1Song.ChordTemplates[i].Fret1 = rs2014Song.ChordTemplates[i].Fret1;
                    rs1Song.ChordTemplates[i].Fret2 = rs2014Song.ChordTemplates[i].Fret2;
                    rs1Song.ChordTemplates[i].Fret3 = rs2014Song.ChordTemplates[i].Fret3;
                    rs1Song.ChordTemplates[i].Fret4 = rs2014Song.ChordTemplates[i].Fret4;
                    rs1Song.ChordTemplates[i].Fret5 = rs2014Song.ChordTemplates[i].Fret5;
                }
            }

            // add sufficient elements for levels
            var levels = new List<SongLevel>();
            for (var i = 0; i < rs2014Song.Levels.Count(); i++)
            {
                levels.Add(new SongLevel
                    {
                        Anchors = new SongAnchor[rs2014Song.Levels[i].Anchors.Length],
                        Chords = new SongChord[rs2014Song.Levels[i].Chords.Length],
                        Difficulty = i,
                        HandShapes = new SongHandShape[rs2014Song.Levels[i].HandShapes.Length],
                        Notes = new SongNote[rs2014Song.Levels[i].Notes.Length]
                    });
            }

            if (rs2014Song.Levels.Count() > 0)
            {
                rs1Song.Levels = levels.ToArray();

                var anchors = new List<SongAnchor>();
                for (var i = 0; i < rs2014Song.Levels.Count(); i++)
                {
                    for (var j = 0; j < rs2014Song.Levels[i].Anchors.Count(); j++)
                    {
                        anchors.Add(new SongAnchor
                            {
                                Fret = 0,
                                Time = 0
                            });
                    }
                    rs1Song.Levels[i].Anchors = anchors.ToArray();
                    anchors.Clear();
                }
            }

            var chords = new List<SongChord>();
            for (var i = 0; i < rs2014Song.Levels.Count(); i++)
            {
                for (var j = 0; j < rs2014Song.Levels[i].Chords.Count(); j++)
                {
                    chords.Add(new SongChord
                        {
                            Time = 0,
                            HighDensity = 0x00,
                            Ignore = 0x00,
                            Strum = "down"
                        });
                }

                if (rs2014Song.Levels[i].Chords.Count() > 0)
                {
                    rs1Song.Levels[i].Chords = chords.ToArray();
                    chords.Clear();
                }
            }

            var handShape = new List<SongHandShape>();
            for (var i = 0; i < rs2014Song.Levels.Count(); i++)
            {
                for (var j = 0; j < rs2014Song.Levels[i].HandShapes.Count(); j++)
                {
                    handShape.Add(new SongHandShape
                        {
                            ChordId = 0,
                            StartTime = 0,
                            EndTime = 0
                        });
                }

                if (rs2014Song.Levels[i].HandShapes.Count() > 0)
                {
                    rs1Song.Levels[i].HandShapes = handShape.ToArray();
                    handShape.Clear();
                }
            }

            var notes = new List<SongNote>();
            for (var i = 0; i < rs2014Song.Levels.Count(); i++)
            {
                for (var j = 0; j < rs2014Song.Levels[i].Notes.Count(); j++)
                {
                    notes.Add(new SongNote
                        {
                            Time = 0,
                            Bend = 0,
                            Fret = 0,
                            HammerOn = 0x00,
                            Harmonic = 0x00,
                            Hopo = 0x00,
                            Ignore = 0x00,
                            PalmMute = 0x00,
                            Pluck = 0,
                            PullOff = 0x00,
                            Slap = 0x00,
                            SlideTo = 0,
                            String = 0,
                            Sustain = 0x00,
                            Tremolo = 0x00
                        });
                }

                if (rs2014Song.Levels[i].Notes.Count() > 0)
                {
                    rs1Song.Levels[i].Notes = notes.ToArray();
                    notes.Clear();
                }
            }

            // populate elements
            for (var i = 0; i < rs2014Song.Levels.Count(); i++)
            {
                rs1Song.Levels[i].Difficulty = rs2014Song.Levels[i].Difficulty;

                for (var j = 0; j < rs2014Song.Levels[i].Anchors.Count(); j++)
                {
                    rs1Song.Levels[i].Anchors[j].Time = rs2014Song.Levels[i].Anchors[j].Time;
                    rs1Song.Levels[i].Anchors[j].Fret = rs2014Song.Levels[i].Anchors[j].Fret;
                }

                for (var j = 0; j < rs2014Song.Levels[i].Chords.Count(); j++)
                {
                    rs1Song.Levels[i].Chords[j].Time = rs2014Song.Levels[i].Chords[j].Time;
                    rs1Song.Levels[i].Chords[j].ChordId = rs2014Song.Levels[i].Chords[j].ChordId;
                    rs1Song.Levels[i].Chords[j].HighDensity = rs2014Song.Levels[i].Chords[j].HighDensity;
                    rs1Song.Levels[i].Chords[j].Ignore = rs2014Song.Levels[i].Chords[j].Ignore;
                    rs1Song.Levels[i].Chords[j].Strum = rs2014Song.Levels[i].Chords[j].Strum;
                }

                for (var j = 0; j < rs2014Song.Levels[i].HandShapes.Count(); j++)
                {
                    rs1Song.Levels[i].HandShapes[j].ChordId = rs2014Song.Levels[i].HandShapes[j].ChordId;
                    rs1Song.Levels[i].HandShapes[j].StartTime = rs2014Song.Levels[i].HandShapes[j].StartTime;
                    rs1Song.Levels[i].HandShapes[j].EndTime = rs2014Song.Levels[i].HandShapes[j].EndTime;
                }

                for (var j = 0; j < rs2014Song.Levels[i].Notes.Count(); j++)
                {
                    rs1Song.Levels[i].Notes[j].Time = rs2014Song.Levels[i].Notes[j].Time;
                    rs1Song.Levels[i].Notes[j].Bend = (int)rs2014Song.Levels[i].Notes[j].Bend;
                    rs1Song.Levels[i].Notes[j].Fret = rs2014Song.Levels[i].Notes[j].Fret;
                    rs1Song.Levels[i].Notes[j].HammerOn = rs2014Song.Levels[i].Notes[j].HammerOn;
                    rs1Song.Levels[i].Notes[j].Harmonic = rs2014Song.Levels[i].Notes[j].Harmonic;
                    rs1Song.Levels[i].Notes[j].Hopo = rs2014Song.Levels[i].Notes[j].Hopo;
                    rs1Song.Levels[i].Notes[j].Ignore = rs2014Song.Levels[i].Notes[j].Ignore;
                    rs1Song.Levels[i].Notes[j].PalmMute = rs2014Song.Levels[i].Notes[j].PalmMute;
                    rs1Song.Levels[i].Notes[j].Pluck = rs2014Song.Levels[i].Notes[j].Pluck;
                    rs1Song.Levels[i].Notes[j].PullOff = rs2014Song.Levels[i].Notes[j].PullOff;
                    rs1Song.Levels[i].Notes[j].Slap = rs2014Song.Levels[i].Notes[j].Slap;
                    rs1Song.Levels[i].Notes[j].SlideTo = rs2014Song.Levels[i].Notes[j].SlideTo;
                    rs1Song.Levels[i].Notes[j].String = rs2014Song.Levels[i].Notes[j].String;
                    rs1Song.Levels[i].Notes[j].Sustain = rs2014Song.Levels[i].Notes[j].Sustain;
                    rs1Song.Levels[i].Notes[j].Tremolo = rs2014Song.Levels[i].Notes[j].Tremolo;
                }
            }
        }