/** * This code is part of the Fungus library (http://fungusgames.com) maintained by Chris Gregan (http://twitter.com/gofungus). * It is released for free under the MIT open source license (https://github.com/snozbot/fungus/blob/master/LICENSE) */ using UnityEngine; using UnityEngine.Serialization; using System.Collections; using System.Collections.Generic; using System; namespace Fungus { [ExecuteInEditMode] public class Character : MonoBehaviour, ILocalizable { public string nameText; // We need a separate name as the object name is used for character variations (e.g. "Smurf Happy", "Smurf Sad") public Color nameColor = Color.white; public AudioClip soundEffect; public Sprite profileSprite; public List portraits; public FacingDirection portraitsFace; public PortraitState state = new PortraitState(); [Tooltip("Sets the active Say dialog with a reference to a Say Dialog object in the scene. All story text will now display using this Say Dialog.")] public SayDialog setSayDialog; [FormerlySerializedAs("notes")] [TextArea(5,10)] public string description; static public List activeCharacters = new List(); protected virtual void OnEnable() { if (!activeCharacters.Contains(this)) { activeCharacters.Add(this); } } protected virtual void OnDisable() { activeCharacters.Remove(this); } // // ILocalizable implementation // public virtual string GetStandardText() { return nameText; } public virtual void SetStandardText(string standardText) { nameText = standardText; } public bool NameStartsWith(string matchString) { return name.StartsWith(matchString, true, System.Globalization.CultureInfo.CurrentCulture) || nameText.StartsWith(matchString, true, System.Globalization.CultureInfo.CurrentCulture); } /// /// Looks for a portrait by name on a character /// If none is found, give a warning and return a blank sprite /// /// /// Character portrait sprite public virtual Sprite GetPortrait(string portrait_string) { if (String.IsNullOrEmpty(portrait_string)) { return null; } for (int i = 0; i < portraits.Count; i++) { if ( String.Compare(portraits[i].name, portrait_string, true) == 0) { return portraits[i]; } } return null; } public virtual string GetDescription() { return description; } public virtual string GetStringId() { // String id for character names is CHARACTER. return "CHARACTER." + nameText; } } }