import { Server, Socket } from 'socket.io' import { Character } from '#entities/character' import { MapEventTile } from '#entities/mapEventTile' import { MapEventTileTeleport } from '#entities/mapEventTileTeleport' export type UUID = `${string}-${string}-${string}-${string}-${string}` export type TSocket = Socket & { userId?: UUID characterId?: UUID handshake?: { query?: { token?: any } } request?: { headers?: { cookie?: any } } } export type ExtendedCharacter = Character & { isMoving?: boolean resetMovement?: boolean } export type MapEventTileWithTeleport = MapEventTile & { teleport: MapEventTileTeleport } export type AssetData = { key: string data: string group: 'tiles' | 'objects' | 'sprites' | 'sprite_animations' | 'sound' | 'music' | 'ui' | 'font' | 'other' updatedAt: Date originX?: number originY?: number isAnimated?: boolean frameRate?: number frameWidth?: number frameHeight?: number frameCount?: number } export type WorldSettings = { date: Date weatherState: WeatherState } export type WeatherState = { rainPercentage: number fogDensity: number } export interface Command { new (io: Server): { execute(args: string[]): Promise } } // export type TCharacter = Socket & { // user?: User // character?: Character // }