Files
project_vollidioten_website/types.ts

92 lines
2.0 KiB
TypeScript

export interface Item {
id: string;
name: string;
count: number;
type: 'tool' | 'block' | 'consumable' | 'misc';
rarity?: 'common' | 'uncommon' | 'rare' | 'epic';
nbtSummary?: string;
}
export interface PlayerStats {
playtimeHours: number;
level: number;
role: string;
organizationId?: string;
}
export interface Player {
uuid: string;
username: string;
skinUrl?: string; // Placeholder in a real app
inventory: (Item | null)[];
stats: PlayerStats;
storyMarkdown: string;
tags: string[];
isOnline: boolean;
}
export interface CityStats {
taxRate: number;
biome: string;
defenseRating: number; // 0-10
government: string;
specialty: string;
}
export interface Organization {
id: string;
name: string;
type: 'City' | 'Guild' | 'Company';
description: string;
memberCount: number;
status: 'active' | 'archived';
bannerUrl?: string;
gallery?: string[];
establishedYear?: string;
mayor?: string;
cityStats?: CityStats;
}
export interface ShopItem {
id: string;
name: string;
description?: string;
price: number;
currency: 'Gold' | 'Credits' | 'Barter' | 'Diamonds';
stock: number;
type: 'item' | 'service' | 'blueprint';
imageUrl?: string;
materialsRequired?: string; // e.g. "Customer provides Stone"
}
export interface GalleryImage {
id: string;
url: string;
}
export interface Project {
id: string;
title: string;
description: string;
category: 'Enterprise' | 'Service' | 'Story Arc' | 'Faction' | 'Black Market';
status: 'active' | 'recruiting' | 'private' | 'completed';
progress: number; // For story arcs completion or company reputation
owner: string;
employees: string[];
hiring: boolean;
foundedDate?: string;
associatedOrgId?: string; // Links this project to a city or guild
shopCatalog?: ShopItem[];
gallery?: GalleryImage[];
bannerUrl?: string;
logoUrl?: string;
}
export interface DiscordUser {
id: string;
username: string;
discriminator: string;
avatarUrl: string;
linkedPlayerUuid?: string | null;
}