Skip to content
Snippets Groups Projects
game.dto.ts 2.13 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,
} from 'class-validator';
import { GameEntity, ObjectivePointEntity } from './game.entity';
import { CenterJSON, RoleValidation } from '../shared/custom-validation';

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()
L4168's avatar
L4168 committed
  @Validate(CenterJSON)
  center: JSON;
  map?: JSON;
L4168's avatar
L4168 committed
  nodesettings?: JSON;
  @IsDateString()
  @IsNotEmpty()
  startdate: string;
  @IsDateString()
  @IsNotEmpty()
  enddate: string;
Samuli Virtapohja's avatar
Samuli Virtapohja committed
  factions?: FactionDTO[];
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;
}

export class FactionDTO {
  @IsString()
  @IsNotEmpty()
  @Length(2, 15)
Samuli Virtapohja's avatar
Samuli Virtapohja committed
  factionName: string;
  factionPassword: string;
L4168's avatar
L4168 committed
  multiplier?: number;
  game: GameDTO;
}
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
}

export class GameGroupDTO {
  @IsString()
  @Length(3, 31)
  name: string;
L4168's avatar
L4168 committed
}
Samuli Virtapohja's avatar
Samuli Virtapohja committed

export class JoinFactionDTO {
  @IsUUID('4')
  factionId: string;
  @Length(3, 31)
  factionPassword: string;
  @IsUUID('4')
  game: GameEntity;
}

export class PromotePlayerDTO {
  @IsUUID('4')
  player: string;
  @Validate(RoleValidation)
  role: string;
}