SpaceNinjaServer/src/types/guildTypes.ts

63 lines
1.8 KiB
TypeScript
Raw Normal View History

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;
2025-01-03 09:06:50 +01:00
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;
DecoCapacity?: number;
}
export interface IDojoComponentDatabase
extends Omit<IDojoComponentClient, "id" | "pi" | "CompletionTime" | "DecoCapacity"> {
_id: Types.ObjectId;
pi?: Types.ObjectId;
CompletionTime?: Date;
}
2025-01-03 09:06:50 +01:00
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;
}