2025-03-05 23:54:47 -08:00

90 lines
2.5 KiB
TypeScript

import { Types } from "mongoose";
import { IOid, IMongoDate } from "@/src/types/commonTypes";
import { IMiscItem } from "@/src/types/inventoryTypes/inventoryTypes";
export interface IGuild {
Name: string;
}
export interface IGuildDatabase extends IGuild {
_id: Types.ObjectId;
DojoComponents: IDojoComponentDatabase[];
DojoCapacity: number;
DojoEnergy: number;
TechProjects?: ITechProjectDatabase[];
}
export interface IDojoClient {
_id: IOid; // ID of the guild
Name: string;
Tier: number;
FixedContributions: boolean;
DojoRevision: number;
RevisionTime: number;
Energy: number;
Capacity: number;
DojoRequestStatus: number;
DojoComponents: IDojoComponentClient[];
}
export interface IDojoComponentClient {
id: IOid;
pf: string; // Prefab (.level)
ppf: string;
pi?: IOid; // Parent ID. N/A to root.
op?: string; // Name of the door within this room that leads to its parent. N/A to root.
pp?: string; // Name of the door within the parent that leads to this room. N/A to root.
Name?: string;
Message?: string;
RegularCredits?: number; // "Collecting Materials" state: Number of credits that were donated.
MiscItems?: IMiscItem[]; // "Collecting Materials" state: Resources that were donated.
CompletionTime?: IMongoDate;
RushPlatinum?: number;
DestructionTime?: IMongoDate;
Decos?: IDojoDecoClient[];
DecoCapacity?: number;
}
export interface IDojoComponentDatabase
extends Omit<IDojoComponentClient, "id" | "pi" | "CompletionTime" | "RushPlatinum" | "DestructionTime" | "Decos"> {
_id: Types.ObjectId;
pi?: Types.ObjectId;
CompletionTime?: Date;
DestructionTime?: Date;
Decos?: IDojoDecoDatabase[];
}
export interface IDojoDecoClient {
id: IOid;
Type: string;
Pos: number[];
Rot: number[];
Name?: string; // for teleporters
RegularCredits?: number;
MiscItems?: IMiscItem[];
CompletionTime?: IMongoDate;
}
export interface IDojoDecoDatabase extends Omit<IDojoDecoClient, "id" | "CompletionTime"> {
_id: Types.ObjectId;
CompletionTime?: Date;
}
export interface ITechProjectClient {
ItemType: string;
ReqCredits: number;
ReqItems: IMiscItem[];
State: number; // 0 = pending, 1 = complete
CompletionDate?: IMongoDate;
}
export interface ITechProjectDatabase extends Omit<ITechProjectClient, "CompletionDate"> {
CompletionDate?: Date;
}
export interface IDojoContributable {
RegularCredits?: number;
MiscItems?: IMiscItem[];
CompletionTime?: Date;
}