Saltar al contenido principal

Referencia de Tipos

La plantilla incluye definiciones completas de tipos TypeScript para la API de Modding de Subway Builder v1.0.0. Así es como están organizadas.

Estructura de Archivos

Los tipos están divididos en múltiples archivos .d.ts en src/types/, agrupados por espacio de nombres de la API:

ArchivoQué cubre
api.d.tsLa interfaz principal ModdingAPI — conecta todo
index.d.tsReexporta todos los tipos + declara window.SubwayBuilderAPI
core.d.tsPrimitivos: Coordinate, BoundingBox, GameSpeed, BuildType, ElevationType
game-state.d.tsTipos de entidad: Station, Track, Train, Route, DemandData, tipos de pasajeros
game-constants.d.tsGameConstants, ConstructionCosts, HighSlopeSpeedMultiplier
game-actions.d.tsBond, BondType, BondResult
build.d.tsAutomatización de construcción: BlueprintTrackInput, PlaceBlueprintResult, CreateRouteOptions, etc.
ui.d.tsSistema de UI: UIPlacement, tipos de opciones de botón/interruptor/slider/panel
cities.d.tsCity, CityConfig, CityTab, CityDataFiles, ViewState
trains.d.tsTrainTypeConfig, TrainTypeStats
stations.d.tsStationTypeConfig
map.d.tsTipos de mapa: MapSource, MapLayer, TileURLOverride, RoutingServiceOverride
career.d.tsMissionConfig, StarConfig, CareerMetrics, CareerOperators
content-templates.d.tsNewspaperTemplate, TweetTemplate
pop-timing.d.tsCommuteTimeRange
storage.d.tsAlmacenamiento del mod: métodos set, get, delete y keys para datos persistentes
i18n.d.tsI18nAPI
utils.d.tsRechartsComponents
schemas.d.tsGameSchemas (esquemas de validación Zod)
electron.d.tsElectronAPI, ElectronAPIExtended
manifest.d.tsModManifest
aviso

Los tipos de la API de build/storage están listados en la documentación oficial de la API, pero actualmente no son utilizables en tiempo de ejecución.

Cómo Funciona

index.d.ts reexporta todo y declara la interfaz global Window:

declare global {
interface Window {
SubwayBuilderAPI: ModdingAPI;
electron?: ElectronAPI;
electronAPI?: ElectronAPIExtended;
}
}

Esto te proporciona autocompletado completo cuando escribes window.SubwayBuilderAPI. en tu editor.

Tipos Clave de un Vistazo

Entidades del Juego

interface Station {
id: string;
name: string;
coords: [number, number]; // [longitud, latitud]
trackIds: string[];
routeIds: string[];
nearbyStations: NearbyStation[];
buildType: string;
createdAt: number;
// ...
}

interface Track {
id: string;
coords: [number, number][]; // Puntos de inicio y fin
trackType: string; // 'heavy-metro', 'light-metro', etc.
startElevation: number;
endElevation: number;
length: number;
// ...
}

interface Route {
id: string;
bullet: string; // Etiqueta visible ('A', '1', etc.)
color: string; // Color hexadecimal
stations: RouteStation[];
trainIds: string[];
// ...
}

interface Train {
id: string;
routeId: string;
position: Coordinate;
speed: number;
// ...
}

Primitivos Clave

type Coordinate = [number, number]; // [longitud, latitud]
type BoundingBox = [number, number, number, number]; // [minLng, minLat, maxLng, maxLat]
type GameSpeed = 'slow' | 'normal' | 'fast' | 'ultrafast';
type BuildType = 'blueprint' | 'built';

Tipos de UI

type UIPlacement =
| 'settings-menu'
| 'escape-menu'
| 'escape-menu-buttons'
| 'main-menu'
| 'bottom-bar'
| 'top-bar'
| 'debug-panel'
| 'menu-items'
| 'pause-menu'
| 'debug';

type NotificationType = 'success' | 'error' | 'info' | 'warning';

Extender Tipos

Si necesitas extender los tipos de la API (por ejemplo, agregando campos que hayas descubierto en tiempo de ejecución), puedes usar la combinación de declaraciones de TypeScript en tu propio archivo .d.ts:

// src/types/my-extensions.d.ts
declare module './game-state' {
interface Station {
myCustomField?: string;
}
}

Documentación Oficial

Para la referencia más actualizada de la API, consulta la documentación oficial de modding de Subway Builder.