using UnityEngine ;
using System.Collections ;
using System.Collections.Generic ;
namespace Fungus.Script
{
[CommandName("Add Option")]
[HelpText("Adds an option button to be displayed by the next Say command. The target sequence is run when the player selects the option. A condition can be specified for when the option should be shown.")]
public class AddOption : FungusCommand
{
public enum ShowCondition
{
Always ,
NotVisited ,
BooleanIsTrue ,
BooleanIsFalse
}
public string optionText ;
public Sequence targetSequence ;
public ShowCondition showCondition ;
public BooleanVariable booleanVariable ;
public override void OnEnter ( )
{
Dialog dialog = Game . GetInstance ( ) . dialog ;
bool showOption = ( dialog ! = null & & targetSequence ! = null ) ;
if ( showCondition = = ShowCondition . Always )
{
// Always show option
}
else if ( showCondition = = ShowCondition . NotVisited )
{
if ( targetSequence = = null | |
targetSequence . GetExecutionCount ( ) > 0 )
{
showOption = false ;
}
}
else
{
if ( booleanVariable = = null )
{
showOption = false ;
}
else
{
if ( showCondition = = ShowCondition . BooleanIsTrue & &
booleanVariable . Value ! = true )
{
showOption = false ;
}
else if ( showCondition = = ShowCondition . BooleanIsFalse & &
booleanVariable . Value ! = false )
{
showOption = false ;
}
}
}
if ( showOption )
{
dialog . AddOption ( optionText , ( ) = > {
Stop ( ) ;
parentFungusScript . ExecuteSequence ( targetSequence ) ;
} ) ;
}
Continue ( ) ;
}
public override void GetConnectedSequences ( ref List < Sequence > connectedSequences )
{
if ( targetSequence ! = null )
{
connectedSequences . Add ( targetSequence ) ;
}
}
public override string GetSummary ( )
{
string description = "\"" + optionText + "\"" ;
if ( targetSequence = = null )
{
description + = " <Continue>" ;
}
else
{
description + = " (" + targetSequence . name + ")" ;
}
return description ;
}
}
}