diff --git a/src/core/Schemas.ts b/src/core/Schemas.ts index eda0705f4..e6a0d658e 100644 --- a/src/core/Schemas.ts +++ b/src/core/Schemas.ts @@ -4,13 +4,15 @@ import {PlayerType} from './game/Game'; export type GameID = string export type ClientID = string -export type Intent = SpawnIntent | AttackIntent | BoatAttackIntent | UpdateNameIntent | AllianceRequestIntent +export type Intent = SpawnIntent | AttackIntent | BoatAttackIntent | UpdateNameIntent | AllianceRequestIntent | AllianceRequestReplyIntent export type AttackIntent = z.infer export type SpawnIntent = z.infer export type BoatAttackIntent = z.infer export type UpdateNameIntent = z.infer export type AllianceRequestIntent = z.infer +export type AllianceRequestReplyIntent = z.infer + export type Turn = z.infer @@ -82,7 +84,21 @@ export const AllianceRequestIntentSchema = BaseIntentSchema.extend({ recipient: z.string(), }) -const IntentSchema = z.union([AttackIntentSchema, SpawnIntentSchema, BoatAttackIntentSchema, UpdateNameIntentSchema, AllianceRequestIntentSchema]); +export const AllianceRequestReplyIntentSchema = BaseIntentSchema.extend({ + type: z.literal('allianceRequestReply'), + requestor: z.string(), // The one who made the original alliance request + recipient: z.string(), + accept: z.boolean(), +}) + +const IntentSchema = z.union([ + AttackIntentSchema, + SpawnIntentSchema, + BoatAttackIntentSchema, + UpdateNameIntentSchema, + AllianceRequestIntentSchema, + AllianceRequestReplyIntentSchema +]); const TurnSchema = z.object({ turnNumber: z.number(),