import {Observable} from 'rxjs'; export interface AppUser { _id?: string; username?: string; squad?: any; // Squad or id-string secret?: string; activated?: boolean; permission?: number; token?: string; } export interface User { _id?: string; boardUserId?: number; username?: string; squadId?: any; // Squad or id-string rankLvl?: number; rank?: Rank; awards?: Award[]; } export interface Player { _id?: string; num?: string; // ranking number for high score fraction?: string; name?: string; warId?: War; kill?: number; vehicleLight?: number; vehicleHeavy?: number; vehicleAir?: number; death?: number; friendlyFire?: number; revive?: number; respawn?: number; flagTouch?: number; performance?: string; travelDistance?: number; driverDistance?: number; } export interface CampaignPlayer { name?: string; campaign?: Campaign; players?: Player[]; } export interface Campaign { _id?: string; title?: string; wars$?: Observable; } export interface War { _id?: string; title?: string; date?: string; endDate?: string; ptBlufor?: number; ptOpfor?: number; playersBlufor?: number; playersOpfor?: number; budgetBlufor?: number; budgetOpfor?: number; endBudgetBlufor?: number; endBudgetOpfor?: number; players?: Player[]; campaign?: string; } export interface Squad { _id?: string; name?: string; fraction?: string; sortingNumber?: number; } export interface Rank { _id?: string; name?: string; fraction?: string; level?: number; } export interface Award { _id?: string; userId: string | User; decorationId?: any; // Decoration or string reason?: string; proposer?: AppUser; date?: number; // since Date.now() returns a number confirmed?: number; rejectReason?: string; } export interface Promotion { _id?: string; userId?: string; oldRankLvl: number; newRankLvl: number; rejectReason?: string; confirmed?: number; } export interface Decoration { _id?: string; name?: string; description?: string; fraction?: string; sortingNumber?: number; isMedal?: boolean; } export interface ArmySquad { _id?: string; name?: string; memberCount?: number; members?: { _id, username, rank }; } export interface Army { squads?: ArmySquad[]; memberCount?: number; }