You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
87 lines
1.4 KiB
87 lines
1.4 KiB
using UnityEngine; |
|
using UnityEngine.UI; |
|
using System; |
|
using System.Collections; |
|
using System.Collections.Generic; |
|
|
|
namespace Fungus |
|
{ |
|
|
|
[ExecuteInEditMode] |
|
public class SayDialog : Dialog |
|
{ |
|
public Image continueImage; |
|
|
|
static public List<SayDialog> activeDialogs = new List<SayDialog>(); |
|
|
|
protected virtual void OnEnable() |
|
{ |
|
if (!activeDialogs.Contains(this)) |
|
{ |
|
activeDialogs.Add(this); |
|
} |
|
} |
|
|
|
protected virtual void OnDisable() |
|
{ |
|
activeDialogs.Remove(this); |
|
} |
|
|
|
public virtual void Say(string text, bool waitForInput, Action onComplete) |
|
{ |
|
Clear(); |
|
|
|
Action onWritingComplete = delegate { |
|
if (waitForInput) |
|
{ |
|
ShowContinueImage(true); |
|
StartCoroutine(WaitForInput(delegate { |
|
Clear(); |
|
StopVoiceOver(); |
|
if (onComplete != null) |
|
{ |
|
onComplete(); |
|
} |
|
})); |
|
} |
|
else |
|
{ |
|
if (onComplete != null) |
|
{ |
|
onComplete(); |
|
} |
|
} |
|
}; |
|
|
|
Action onExitTag = delegate { |
|
Clear(); |
|
if (onComplete != null) |
|
{ |
|
onComplete(); |
|
} |
|
}; |
|
|
|
StartCoroutine(WriteText(text, onWritingComplete, onExitTag)); |
|
} |
|
|
|
public override void Clear() |
|
{ |
|
base.Clear(); |
|
ShowContinueImage(false); |
|
} |
|
|
|
protected override void OnWaitForInputTag(bool waiting) |
|
{ |
|
ShowContinueImage(waiting); |
|
} |
|
|
|
protected virtual void ShowContinueImage(bool visible) |
|
{ |
|
if (continueImage != null) |
|
{ |
|
continueImage.enabled = visible; |
|
} |
|
} |
|
} |
|
|
|
}
|
|
|