unity-roject-test/Assets/Scripts/Rokojori/Dialog/Testing/HeadlessDialogDisplay.cs

32 lines
721 B
C#

using System;
using System.Collections.Generic;
using System.Threading.Tasks;
namespace Rokojori
{
// Drives a dialog without any UI - auto-answers PlayerChoice blocks and logs
// the path taken, so DialogProcessor can be exercised in isolation.
public class HeadlessDialogDisplay : IDialogDisplay
{
public List<DialogBlock> visitedBlocks = new List<DialogBlock>();
public Func<PlayerChoice, int> chooseOption = choice => 0;
public Task<DialogAnswer> Show( DialogBlock block )
{
visitedBlocks.Add( block );
var answer = new DialogAnswer();
if ( block is PlayerChoice choice )
{
answer.selectedOptionIndex = chooseOption( choice );
}
return Task.FromResult( answer );
}
}
}