@zerospacegg/iolin
Version:
Pure TypeScript implementation of ZeroSpace game data processing (PKL-free)
132 lines • 4.57 kB
TypeScript
/**
* 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