65 lines
1.8 KiB
TypeScript
65 lines
1.8 KiB
TypeScript
import type { PartyRole } from "../game/partyRoles";
|
|
import type { CharacterAppearance } from "./characterCatalog";
|
|
|
|
export interface OnlineGroupCharacter {
|
|
readonly id: string;
|
|
readonly name: string;
|
|
readonly classId: string;
|
|
readonly specializationId?: string | null;
|
|
readonly categoryId: string;
|
|
readonly raceId: string;
|
|
readonly gender: "female" | "male";
|
|
readonly level: number;
|
|
readonly appearance?: CharacterAppearance;
|
|
}
|
|
|
|
export interface OnlineGroupMember {
|
|
readonly accountId: string;
|
|
readonly username: string;
|
|
readonly character: OnlineGroupCharacter | null;
|
|
readonly role: PartyRole | null;
|
|
readonly joinedAt: number;
|
|
}
|
|
|
|
export interface OnlineGroupActivity {
|
|
readonly id: string;
|
|
readonly type: "dungeon" | "manastorm";
|
|
readonly contentId: string;
|
|
readonly fillWithAi: boolean;
|
|
readonly partySize: number;
|
|
readonly startingLevel: number | null;
|
|
readonly startedAt: number;
|
|
}
|
|
|
|
export interface OnlineGroup {
|
|
readonly id: string;
|
|
readonly leaderAccountId: string;
|
|
readonly members: readonly OnlineGroupMember[];
|
|
readonly activity: OnlineGroupActivity | null;
|
|
readonly activityRevision: number;
|
|
readonly createdAt: number;
|
|
readonly updatedAt: number;
|
|
}
|
|
|
|
export interface OnlineGroupInvitation {
|
|
readonly id: string;
|
|
readonly groupId: string;
|
|
readonly inviterAccountId: string;
|
|
readonly inviterUsername: string;
|
|
readonly createdAt: number;
|
|
readonly expiresAt: number;
|
|
}
|
|
|
|
export interface OnlineGroupSnapshot {
|
|
readonly group: OnlineGroup | null;
|
|
readonly invitations: readonly OnlineGroupInvitation[];
|
|
}
|
|
|
|
export interface StartOnlineGroupActivityInput {
|
|
readonly type: OnlineGroupActivity["type"];
|
|
readonly contentId: string;
|
|
readonly fillWithAi: boolean;
|
|
readonly partySize: number;
|
|
readonly startingLevel?: number;
|
|
}
|