Files
DiceCloud/app/imports/api/engine/action/functions/userInput/getReplayChoicesInputProvider.ts
2024-06-12 15:43:56 +02:00

34 lines
1.1 KiB
TypeScript

import InputProvider from '/imports/api/engine/action/functions/userInput/InputProvider';
import getDeterministicDiceRoller from '/imports/api/engine/action/functions/userInput/getDeterministicDiceRoller';
// This assumes the user's choices are in exactly the order they will be requested
// Dice rolls are done fresh, no cheating
export default function getReplayChoicesInputProvider(actionId: string, decisions: any[]):
InputProvider {
const decisionStack = [...decisions].reverse();
const dRoller = getDeterministicDiceRoller(actionId);
const replaySavedInput: InputProvider = {
targetIds() {
return Promise.resolve(decisionStack.pop());
},
nextStep() {
return Promise.resolve();
},
// To roll dice, ignore the user and use the deterministic dice roller again
rollDice(dice) {
decisionStack.pop();
return dRoller(dice);
},
choose() {
return Promise.resolve(decisionStack.pop());
},
advantage() {
return Promise.resolve(decisionStack.pop());
},
check() {
return Promise.resolve(decisionStack.pop());
},
}
return replaySavedInput;
}