From 853ffa9cbbdc2183781dd49065746e6c53704f76 Mon Sep 17 00:00:00 2001 From: Oliver-Akins Date: Fri, 24 Feb 2023 08:27:57 -0700 Subject: [PATCH] Move all of the penalty options into their own object --- src/schemas/config.ts | 30 +++++++++++++++++++++++++----- 1 file changed, 25 insertions(+), 5 deletions(-) diff --git a/src/schemas/config.ts b/src/schemas/config.ts index 6cffa2c..815d9fd 100644 --- a/src/schemas/config.ts +++ b/src/schemas/config.ts @@ -1,14 +1,34 @@ import Joi from "joi"; +const render = true; + +export const penaltyOptionsSchema = Joi.object({ + guess: Joi + .number() + .integer() + .min(0) + .max(Joi.ref(`...max_incorrect`, { render })) + .default(1), + solve: Joi + .number() + .integer() + .min(0) + .max(Joi.ref(`...max_incorrect`, { render })) + .default(1), + duplicate: Joi + .number() + .integer() + .min(0) + .max(Joi.ref(`...max_incorrect`, { render })) + .default(0), +}) +.meta({ className: `penaltyOptions` }) +.description(`The options for all of the penalties from actions`); export const gameOptionsSchema = Joi.object({ files: Joi.object().required().min(1).unknown(true), max_incorrect: Joi.number().min(1).default(6), - incorrect_solve_penalty: Joi - .number() - .min(0) - .max(Joi.ref(`max_incorrect`, { render: true })) - .default(1), + penalties: penaltyOptionsSchema.required(), }) .meta({ className: `gameOptions` }) .description(`The game-specific options`);