UNPKG

@zerospacegg/iolin

Version:

Pure TypeScript implementation of ZeroSpace game data processing (PKL-free)

132 lines 4.57 kB
/** * Building - Base building class with type hierarchy and constructing-form support * Extended from Entity with building-specific properties and construction mechanics */ import type { ArmorType } from "./core.js"; import { Entity } from "./entity.js"; /** * Building type system */ export type BuildingType = "base" | "extractor" | "supply" | "production" | "tech" | "special" | "constructing-unit" | "merc-outpost" | "ultimate"; /** * Base Building class for all structures * Usage: new Building("Name", (building) => { building.buildingType = "production"; }, import.meta.filename) */ export declare abstract class Building extends Entity { get type(): string; abstract get buildingType(): BuildingType; buildTime: number; get hpInitial(): number | undefined; providesBiomass?: number; gathersFlux?: number; gathersRichFlux?: number; creates?: string[]; unlocks?: string[]; produces?: string[]; get subtype(): string; armorType: ArmorType; speed: number; vision: number; armor: number; toJSON(): Record<string, any>; } /** * Base Building - Main faction base/headquarters * Usage: new BaseBuilding("Root Colony", (base) => { base.tier = "T1"; }) */ export declare abstract class BaseBuilding extends Building { constructor(); get buildingType(): BuildingType; get subtype(): string; } /** * Extractor Building - Resource gathering structures * Universal base class for all faction extractors with common defaults */ export declare abstract class ExtractorBuilding extends Building { tier: string; buildTime: number; buildCount: number; gathersHexite: number; gathersEmptyHexite: number; constructor(); get buildingType(): BuildingType; get subtype(): string; } /** * Supply Building - Provides supply/housing * Usage: new SupplyBuilding("Cultivator", (supply) => { supply.providesSupply = 10; }) */ export declare abstract class SupplyBuilding extends Building { providesSupply?: number; constructor(); get buildingType(): BuildingType; get subtype(): string; toJSON(): Record<string, any>; } /** * Production Building - Creates units * Usage: new ProductionBuilding("Incubator", (prod) => { prod.tier = "T1"; }) */ export declare abstract class ProductionBuilding extends Building { constructor(); get buildingType(): BuildingType; get subtype(): string; } /** * Tech Building - Research and upgrades * Usage: new TechBuilding("Augmentation Pool", (tech) => { tech.tier = "T2"; }) */ export declare abstract class TechBuilding extends Building { researches?: string[]; constructor(); get buildingType(): BuildingType; get subtype(): string; toJSON(): Record<string, any>; } /** * Special Building - Unique faction abilities * Usage: new SpecialBuilding("Skrelling Nest", (special) => { special.tier = "T2"; }) */ export declare abstract class SpecialBuilding extends Building { constructor(); get buildingType(): BuildingType; get subtype(): string; } /** * Constructing-Form Building - Buildings that transform into units * Used for Terror Tank, Dreadnought, and similar units that have building phases * Usage: new ConstructingFormBuilding("Terror Tank (Constructing)", (form) => { form.transformsInto = "terror-tank"; }) */ export declare abstract class ConstructingFormBuilding extends Building { transformsInto?: string; constructionTime?: number; constructor(); get buildingType(): BuildingType; get subtype(): string; toJSON(): Record<string, any>; } /** * Mercenary Outpost Building - Neutral mercenary structures * Usage: new MercenaryOutpostBuilding("Mercenary Outpost", (merc) => { merc.tier = "T1"; }) */ export declare abstract class MercenaryOutpostBuilding extends Building { constructor(); get buildingType(): BuildingType; get subtype(): string; } /** * Ultimate Building - End-game superstructures * Usage: new UltimateBuilding("Supreme Command", (ultimate) => { ultimate.tier = "T4"; }) */ export declare abstract class UltimateBuilding extends Building { constructor(); get buildingType(): BuildingType; get subtype(): string; } /** * AnyBuilding Union Type - All concrete building implementations * Use this instead of any for type safety */ export type AnyBuilding = BaseBuilding | ExtractorBuilding | SupplyBuilding | ProductionBuilding | TechBuilding | SpecialBuilding | ConstructingFormBuilding | MercenaryOutpostBuilding | UltimateBuilding; //# sourceMappingURL=building.d.ts.map