90 lines
2.5 KiB
TypeScript
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;
|
|
}
|