88 lines
2.2 KiB
TypeScript
88 lines
2.2 KiB
TypeScript
import { HttpException, HttpStatus } from '@nestjs/common';
|
|
|
|
export type CombatErrorCode =
|
|
| 'HUNT_ENCOUNTER_NOT_FOUND'
|
|
| 'HUNT_ENCOUNTER_ALREADY_CONSUMED'
|
|
| 'INVALID_HUNT_ENCOUNTER'
|
|
| 'CHARACTER_TRAVELLING'
|
|
| 'COMBAT_ALREADY_ACTIVE'
|
|
| 'COMBAT_NOT_FOUND'
|
|
| 'COMBAT_ALREADY_FINISHED'
|
|
| 'COMBAT_STATE_INVALID';
|
|
|
|
export class CombatDomainError extends HttpException {
|
|
constructor(
|
|
public readonly code: CombatErrorCode,
|
|
status: HttpStatus,
|
|
message: string,
|
|
) {
|
|
super({ statusCode: status, code, message }, status);
|
|
}
|
|
}
|
|
|
|
export function huntEncounterNotFound(): CombatDomainError {
|
|
return new CombatDomainError(
|
|
'HUNT_ENCOUNTER_NOT_FOUND',
|
|
HttpStatus.NOT_FOUND,
|
|
'This encounter could not be found.',
|
|
);
|
|
}
|
|
|
|
export function huntEncounterAlreadyConsumed(): CombatDomainError {
|
|
return new CombatDomainError(
|
|
'HUNT_ENCOUNTER_ALREADY_CONSUMED',
|
|
HttpStatus.CONFLICT,
|
|
'This encounter has already been used to start a combat.',
|
|
);
|
|
}
|
|
|
|
export function invalidHuntEncounter(): CombatDomainError {
|
|
return new CombatDomainError(
|
|
'INVALID_HUNT_ENCOUNTER',
|
|
HttpStatus.BAD_REQUEST,
|
|
'This encounter is not valid for the current character.',
|
|
);
|
|
}
|
|
|
|
export function characterTravelling(): CombatDomainError {
|
|
return new CombatDomainError(
|
|
'CHARACTER_TRAVELLING',
|
|
HttpStatus.CONFLICT,
|
|
'The character cannot fight while travelling.',
|
|
);
|
|
}
|
|
|
|
export function combatAlreadyActive(): CombatDomainError {
|
|
return new CombatDomainError(
|
|
'COMBAT_ALREADY_ACTIVE',
|
|
HttpStatus.CONFLICT,
|
|
'The character already has an active combat.',
|
|
);
|
|
}
|
|
|
|
export function combatNotFound(): CombatDomainError {
|
|
return new CombatDomainError(
|
|
'COMBAT_NOT_FOUND',
|
|
HttpStatus.NOT_FOUND,
|
|
'This combat could not be found.',
|
|
);
|
|
}
|
|
|
|
export function combatAlreadyFinished(): CombatDomainError {
|
|
return new CombatDomainError(
|
|
'COMBAT_ALREADY_FINISHED',
|
|
HttpStatus.CONFLICT,
|
|
'This combat has already finished.',
|
|
);
|
|
}
|
|
|
|
export function combatStateInvalid(): CombatDomainError {
|
|
return new CombatDomainError(
|
|
'COMBAT_STATE_INVALID',
|
|
HttpStatus.INTERNAL_SERVER_ERROR,
|
|
'The persisted combat references unavailable data.',
|
|
);
|
|
}
|
|
|
|
export { characterNotFound } from '../travel/travel.errors';
|