32 lines
721 B
C#
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 );
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
}
|