Files
project_vollidioten_website/types.ts
Lars Behrends d3d7ec46e6 feat: Add DatabaseManager and LinkPlayer components, implement authentication and linking logic
- Created DatabaseManager component for managing database access via phpMyAdmin.
- Developed LinkPlayer component to link Discord accounts with game characters, including user authentication and error handling.
- Added mock data files for players, organizations, and projects to handle backend unavailability.
- Implemented AuthService for managing user authentication and session checks.
- Created DatabaseService to fetch and manage player, organization, and project data with fallback to mock data.
- Added HTML page for handling authentication unavailability.
- Developed a test script for validating Docker setup and required files.
2025-12-28 16:46:04 +01:00

85 lines
1.9 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 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?: string[];
bannerUrl?: string;
}
export interface DiscordUser {
id: string;
username: string;
discriminator: string;
avatarUrl: string;
linkedPlayerUuid?: string | null;
}