示例#1
0
 /// <summary>
 /// Gets the character info for a character given its actor ID and transform.
 /// </summary>
 /// <returns>
 /// The character info.
 /// </returns>
 /// <param name='id'>
 /// The character's actor ID in the dialogue database.
 /// </param>
 /// <param name='character'>
 /// The transform of the character's GameObject.
 /// </param>
 public CharacterInfo GetCharacterInfo(int id, Transform character)
 {
     if (!m_characterInfoCache.ContainsKey(id))
     {
         Actor actor         = null;
         var   dialogueActor = DialogueActor.GetDialogueActorComponent(character);
         if (dialogueActor != null)
         {
             actor = m_database.GetActor(dialogueActor.actor);
         }
         if (actor == null)
         {
             actor = m_database.GetActor(id);
         }
         string nameInDatabase = (actor != null) ? actor.Name : string.Empty;
         if (character == null && !string.IsNullOrEmpty(nameInDatabase))
         {
             character = CharacterInfo.GetRegisteredActorTransform(nameInDatabase);
         }
         var actorID = (actor != null) ? actor.id : id;
         //CharacterInfo characterInfo = new CharacterInfo(actorID, nameInDatabase, character, m_database.GetCharacterType(id), GetPortrait(character, actor));
         CharacterInfo characterInfo = new CharacterInfo(actorID, nameInDatabase, character, m_database.GetCharacterType(id), null);
         if (actor != null)
         {
             actor.AssignPortraitSprite((sprite) => { characterInfo.portrait = sprite; });
         }
         m_characterInfoCache.Add(id, characterInfo);
     }
     return(m_characterInfoCache[id]);
 }
 /// <summary>
 /// Gets the character info for a character given its actor ID and transform.
 /// </summary>
 /// <returns>
 /// The character info.
 /// </returns>
 /// <param name='id'>
 /// The character's actor ID in the dialogue database.
 /// </param>
 /// <param name='character'>
 /// The transform of the character's GameObject.
 /// </param>
 public CharacterInfo GetCharacterInfo(int id, Transform character)
 {
     if (!m_characterInfoCache.ContainsKey(id))
     {
         Actor actor         = null;
         var   dialogueActor = DialogueActor.GetDialogueActorComponent(character);
         if (dialogueActor != null)
         {
             actor = m_database.GetActor(dialogueActor.actor);
         }
         if (actor == null)
         {
             actor = m_database.GetActor(id);
         }
         string nameInDatabase = (actor != null) ? actor.Name : string.Empty;
         if (character == null && !string.IsNullOrEmpty(nameInDatabase))
         {
             character = CharacterInfo.GetRegisteredActorTransform(nameInDatabase);
         }
         var actorID  = (actor != null) ? actor.id : id;
         var portrait = (dialogueActor != null) ? dialogueActor.GetPortraitSprite() : null;
         if (portrait == null)
         {
             portrait = GetPortrait(character, actor);
         }
         CharacterInfo characterInfo = new CharacterInfo(actorID, nameInDatabase, character, m_database.GetCharacterType(id), portrait);
         if (characterInfo.portrait == null && actor != null)
         {
             actor.AssignPortraitSprite((sprite) => { characterInfo.portrait = sprite; });
         }
         // Don't cache null actor ID -1:
         if (id == -1)
         {
             return(characterInfo);
         }
         // Otherwise cache to speed up lookups:
         m_characterInfoCache.Add(id, characterInfo);
     }
     return(m_characterInfoCache[id]);
 }