Skip to content
Snippets Groups Projects
game.dto.ts 1.83 KiB
Newer Older
import {
  IsNotEmpty,
Samuli Virtapohja's avatar
Samuli Virtapohja committed
  IsString,
Samuli Virtapohja's avatar
Samuli Virtapohja committed
  IsDateString,
L4168's avatar
L4168 committed
  IsNumber,
Samuli Virtapohja's avatar
Samuli Virtapohja committed
  Validate,
  ValidateNested,
  Allow,
} from 'class-validator';
L4168's avatar
L4168 committed

Samuli Virtapohja's avatar
Samuli Virtapohja committed
import { ObjectivePointEntity } from './game.entity';
import { CenterJSON } from '../shared/custom-validation';
import { FactionDTO } from '../faction/faction.dto';
import { CenterDTO } from './game.json.dto';
import { Type } from 'class-transformer';

export class GameDTO {
  @IsString()
  @IsNotEmpty()
Samuli Virtapohja's avatar
Samuli Virtapohja committed
  @Length(3, 30)
  name: string;
  @IsNotEmpty()
  @Length(1, 255)
  desc: string;
L4168's avatar
L4168 committed
  @IsNotEmpty()
  @ValidateNested()
  @Type(() => CenterDTO)
  center: CenterDTO;
  @Allow()
  map?: JSON;
  @Allow()
L4168's avatar
L4168 committed
  nodesettings?: JSON;
  @IsDateString()
  @IsNotEmpty()
  startdate: string;
  @IsDateString()
  @IsNotEmpty()
  enddate: string;
  @Allow()
Samuli Virtapohja's avatar
Samuli Virtapohja committed
  factions?: FactionDTO[];
  @Allow()
L4168's avatar
L4168 committed
  objective_points?: FlagboxDTO[];
L4168's avatar
L4168 committed
export class newGameDTO {
  @IsString()
  @IsNotEmpty()
  @Length(3, 30)
  name: string;
  @IsString()
  @IsNotEmpty()
  @Length(1, 255)
  desc: string;
  @IsNotEmpty()
L4168's avatar
L4168 committed
  @Validate(CenterJSON)
L4168's avatar
L4168 committed
  center: JSON;
  @IsDateString()
  @IsNotEmpty()
  startdate: string;
  @IsDateString()
  @IsNotEmpty()
  enddate: string;
}

L4168's avatar
L4168 committed
export class FlagboxDTO {
  @IsString()
  @IsNotEmpty()
  @Length(7)
  objectivePointDescription: string;
  @IsNumber()
  objectivePointMultiplier: number;
}

export class FlagboxEventDTO {
  @IsString()
  @IsNotEmpty()
  @Length(7)
L4168's avatar
L4168 committed
  node_id: string;
  @IsNumber()
  @Min(0)
  @Max(3)
  owner: number; // owner = 0, => first entry in faction db, owner = 1, => second entry etc
  @IsNumber()
  @Min(0)
  @Max(3)
  action: number; // 0=no capture ongoing, 1=captured, 2=capture ongoing
  @IsNumber()
  @Min(0)
  @Max(3)
  capture: number; // which faction is capturing, same logic as in owner with numbers
L4168's avatar
L4168 committed
  oP_HistoryTimestamp?: string;
  objective_point?: ObjectivePointEntity;
L4168's avatar
L4168 committed
}