コード例 #1
0
        /// <summary>Populates bookData with the standard characters that should be allowed to be grouped together without causing proximity problems</summary>
        private void GetStandardCharactersToTreatAsOne(BookScript book, ProjectDramatizationPreferences dramatizationPreferences,
                                                       Dictionary <ExtraBiblicalMaterialSpeakerOption, HashSet <string> > bookData)
        {
            if (m_strictlyAdhereToNarratorPreferences)
            {
                AddOrNew(bookData, dramatizationPreferences.BookTitleAndChapterDramatization, CharacterVerseData.GetStandardCharacterId(book.BookId, CharacterVerseData.StandardCharacter.BookOrChapter));
                AddOrNew(bookData, dramatizationPreferences.SectionHeadDramatization, CharacterVerseData.GetStandardCharacterId(book.BookId, CharacterVerseData.StandardCharacter.ExtraBiblical));
                AddOrNew(bookData, dramatizationPreferences.BookIntroductionsDramatization, CharacterVerseData.GetStandardCharacterId(book.BookId, CharacterVerseData.StandardCharacter.Intro));
                bookData.Remove(ExtraBiblicalMaterialSpeakerOption.Omitted);

                // add the narrator to its group if there are others there already
                if (bookData.ContainsKey(ExtraBiblicalMaterialSpeakerOption.Narrator))
                {
                    bookData[ExtraBiblicalMaterialSpeakerOption.Narrator].Add(book.NarratorCharacterId);
                }
            }
            else
            {
                AddOrNew(bookData, ExtraBiblicalMaterialSpeakerOption.Narrator, book.NarratorCharacterId);
                if (dramatizationPreferences.BookTitleAndChapterDramatization != ExtraBiblicalMaterialSpeakerOption.Omitted)
                {
                    bookData[ExtraBiblicalMaterialSpeakerOption.Narrator].Add(CharacterVerseData.GetStandardCharacterId(book.BookId, CharacterVerseData.StandardCharacter.BookOrChapter));
                }
                if (dramatizationPreferences.SectionHeadDramatization != ExtraBiblicalMaterialSpeakerOption.Omitted)
                {
                    bookData[ExtraBiblicalMaterialSpeakerOption.Narrator].Add(CharacterVerseData.GetStandardCharacterId(book.BookId, CharacterVerseData.StandardCharacter.ExtraBiblical));
                }
                if (dramatizationPreferences.BookIntroductionsDramatization != ExtraBiblicalMaterialSpeakerOption.Omitted)
                {
                    bookData[ExtraBiblicalMaterialSpeakerOption.Narrator].Add(CharacterVerseData.GetStandardCharacterId(book.BookId, CharacterVerseData.StandardCharacter.Intro));
                }
            }
        }
コード例 #2
0
        public Proximity(IReadOnlyList <BookScript> booksToConsider, ProjectDramatizationPreferences dramatizationPreferences)
        {
            m_booksToConsider = booksToConsider;
            //m_dramatizationPreferences = dramatizationPreferences;
            m_considerSameExtrabiblicalCharacter = new Dictionary <BookScript, Dictionary <CharacterVerseData.StandardCharacter, HashSet <string> > >();

            // get the standard character mapping for each books
            foreach (var book in m_booksToConsider)
            {
                // initialize the standard character data
                var bookData = new Dictionary <CharacterVerseData.StandardCharacter, HashSet <string> >();
                bookData[CharacterVerseData.StandardCharacter.Narrator]      = null;
                bookData[CharacterVerseData.StandardCharacter.BookOrChapter] = null;
                bookData[CharacterVerseData.StandardCharacter.ExtraBiblical] = null;
                bookData[CharacterVerseData.StandardCharacter.Intro]         = null;

                GetNarratorCharactersToTreatAsOne(book, dramatizationPreferences, bookData);
                GetOtherCharactersToTreatAsOne(book, dramatizationPreferences, bookData);
                m_considerSameExtrabiblicalCharacter[book] = bookData;
            }
        }
コード例 #3
0
        /// <summary>Gets extra-biblical characters that are voiced by the same actor who is not the narrator</summary>
        /// <param name="book"></param>
        /// <param name="dramatizationPreferences"></param>
        /// <param name="bookData"></param>
        private static void GetOtherCharactersToTreatAsOne(BookScript book, ProjectDramatizationPreferences dramatizationPreferences,
                                                           Dictionary <CharacterVerseData.StandardCharacter, HashSet <string> > bookData)
        {
            var bookTitleChapterId = CharacterVerseData.GetStandardCharacterId(book.BookId, CharacterVerseData.StandardCharacter.BookOrChapter);
            var sectionHeadId      = CharacterVerseData.GetStandardCharacterId(book.BookId, CharacterVerseData.StandardCharacter.ExtraBiblical);
            var bookIntroductionId = CharacterVerseData.GetStandardCharacterId(book.BookId, CharacterVerseData.StandardCharacter.Intro);

            if ((dramatizationPreferences.BookTitleAndChapterDramatization & ExtraBiblicalMaterialSpeakerOption.NotNarratorOrOmitted) != 0)
            {
                if (dramatizationPreferences.BookTitleAndChapterDramatization == dramatizationPreferences.SectionHeadDramatization)
                {
                    AddOrNew(bookData, CharacterVerseData.StandardCharacter.BookOrChapter, bookTitleChapterId);
                    AddOrNew(bookData, CharacterVerseData.StandardCharacter.BookOrChapter, sectionHeadId);

                    AddOrNew(bookData, CharacterVerseData.StandardCharacter.ExtraBiblical, bookTitleChapterId);
                    AddOrNew(bookData, CharacterVerseData.StandardCharacter.ExtraBiblical, sectionHeadId);
                }

                if (dramatizationPreferences.BookTitleAndChapterDramatization == dramatizationPreferences.BookIntroductionsDramatization)
                {
                    AddOrNew(bookData, CharacterVerseData.StandardCharacter.BookOrChapter, bookTitleChapterId);
                    AddOrNew(bookData, CharacterVerseData.StandardCharacter.BookOrChapter, bookIntroductionId);

                    AddOrNew(bookData, CharacterVerseData.StandardCharacter.Intro, bookTitleChapterId);
                    AddOrNew(bookData, CharacterVerseData.StandardCharacter.Intro, bookIntroductionId);
                }
            }

            if ((dramatizationPreferences.SectionHeadDramatization & ExtraBiblicalMaterialSpeakerOption.NotNarratorOrOmitted) != 0)
            {
                if (dramatizationPreferences.SectionHeadDramatization == dramatizationPreferences.BookIntroductionsDramatization)
                {
                    AddOrNew(bookData, CharacterVerseData.StandardCharacter.ExtraBiblical, sectionHeadId);
                    AddOrNew(bookData, CharacterVerseData.StandardCharacter.ExtraBiblical, bookIntroductionId);

                    AddOrNew(bookData, CharacterVerseData.StandardCharacter.Intro, sectionHeadId);
                    AddOrNew(bookData, CharacterVerseData.StandardCharacter.Intro, bookIntroductionId);
                }
            }
        }
コード例 #4
0
        /// <summary>Gets extra-biblical characters that should be considered same as the narrator</summary>
        /// <param name="book"></param>
        /// <param name="dramatizationPreferences"></param>
        /// <param name="bookData"></param>
        private static void GetNarratorCharactersToTreatAsOne(BookScript book, ProjectDramatizationPreferences dramatizationPreferences,
                                                              Dictionary <CharacterVerseData.StandardCharacter, HashSet <string> > bookData)
        {
            var    narratorCharacterId = CharacterVerseData.GetStandardCharacterId(book.BookId, CharacterVerseData.StandardCharacter.Narrator);
            string bookTitleChapterId  = null;
            string sectionHeadId       = null;
            string bookIntroductionId  = null;

            // is the book title and chapter character also the narrator?
            if (dramatizationPreferences.BookTitleAndChapterDramatization == ExtraBiblicalMaterialSpeakerOption.Narrator)
            {
                bookTitleChapterId = CharacterVerseData.GetStandardCharacterId(book.BookId, CharacterVerseData.StandardCharacter.BookOrChapter);
                AddOrNew(bookData, CharacterVerseData.StandardCharacter.Narrator, bookTitleChapterId);
                AddOrNew(bookData, CharacterVerseData.StandardCharacter.BookOrChapter, bookTitleChapterId);
                AddOrNew(bookData, CharacterVerseData.StandardCharacter.BookOrChapter, narratorCharacterId);
            }

            // is the section head character also the narrator?
            if (dramatizationPreferences.SectionHeadDramatization == ExtraBiblicalMaterialSpeakerOption.Narrator)
            {
                sectionHeadId = CharacterVerseData.GetStandardCharacterId(book.BookId, CharacterVerseData.StandardCharacter.ExtraBiblical);
                AddOrNew(bookData, CharacterVerseData.StandardCharacter.Narrator, sectionHeadId);
                AddOrNew(bookData, CharacterVerseData.StandardCharacter.ExtraBiblical, sectionHeadId);
                AddOrNew(bookData, CharacterVerseData.StandardCharacter.ExtraBiblical, narratorCharacterId);
            }

            // is the book introduction character also the narrator?
            if (dramatizationPreferences.BookIntroductionsDramatization == ExtraBiblicalMaterialSpeakerOption.Narrator)
            {
                bookIntroductionId = CharacterVerseData.GetStandardCharacterId(book.BookId, CharacterVerseData.StandardCharacter.Intro);
                AddOrNew(bookData, CharacterVerseData.StandardCharacter.Narrator, bookIntroductionId);
                AddOrNew(bookData, CharacterVerseData.StandardCharacter.Intro, bookIntroductionId);
                AddOrNew(bookData, CharacterVerseData.StandardCharacter.Intro, narratorCharacterId);
            }

            // link all the narrator character IDs together
            if (bookTitleChapterId != null)
            {
                if (sectionHeadId != null)
                {
                    AddOrNew(bookData, CharacterVerseData.StandardCharacter.BookOrChapter, sectionHeadId);
                    AddOrNew(bookData, CharacterVerseData.StandardCharacter.ExtraBiblical, bookTitleChapterId);
                }

                if (bookIntroductionId != null)
                {
                    AddOrNew(bookData, CharacterVerseData.StandardCharacter.BookOrChapter, bookIntroductionId);
                    AddOrNew(bookData, CharacterVerseData.StandardCharacter.Intro, bookTitleChapterId);
                }
            }

            if ((sectionHeadId != null) && (bookIntroductionId != null))
            {
                AddOrNew(bookData, CharacterVerseData.StandardCharacter.ExtraBiblical, bookIntroductionId);
                AddOrNew(bookData, CharacterVerseData.StandardCharacter.Intro, sectionHeadId);
            }

            // add the narrator to its group if there are others there already
            if (bookData[CharacterVerseData.StandardCharacter.Narrator] != null)
            {
                AddOrNew(bookData, CharacterVerseData.StandardCharacter.Narrator, narratorCharacterId);
            }
        }