sc4
Version:
A command line utility for automating SimCity 4 modding tasks & modifying savegames
61 lines (60 loc) • 2.34 kB
TypeScript
import { Cohort, Exemplar, type Entry, type ExemplarPropertyKey as Key } from 'sc4/core';
import type { BasePluginIndex } from 'sc4/plugins';
type ExemplarEntry = Entry<Exemplar | Cohort>;
export default class LotIndex {
fileIndex: BasePluginIndex;
lots: LotIndexEntry[];
height: IndexedArray<LotIndexEntry>;
constructor(index: BasePluginIndex);
add(entry: ExemplarEntry): this;
getBuildings(IID: number): ExemplarEntry[];
getBuilding(IID: number): ExemplarEntry;
getPropertyValue<K extends Key>(file: Exemplar, key: K): import("../core/exemplar-properties-types.js").Value<K> | undefined;
}
declare class LotIndexEntry {
#private;
lot: ExemplarEntry;
building: ExemplarEntry;
constructor(fileIndex: BasePluginIndex, lot: ExemplarEntry, building: ExemplarEntry);
get size(): number[] & {
x: number;
z: number;
};
get buildingSize(): number[] & {
x: number;
y: number;
z: number;
};
get height(): number;
get growthStage(): number;
get zoneTypes(): number[];
get occupantGroups(): number[];
getLotPropertyValue<K extends Key = Key>(key: K): import("../core/exemplar-properties-types.js").Value<K> | undefined;
getBuildingPropertyValue<K extends Key = Key>(key: K): import("../core/exemplar-properties-types.js").Value<K> | undefined;
}
type IndexedArrayOptions<T> = {
compare(a: T, b: T): number;
entries: T[];
sorted?: boolean;
};
type ElementType<T> = T extends (infer U)[] ? U : never;
type RawElement<T> = T extends any[] ? ElementType<T> : T;
type MaybeArray<T> = T | T[];
type IndexedArrayQuery<T> = Partial<{
[K in keyof T]: MaybeArray<RawElement<T[K]>>;
}>;
declare class IndexedArray<T> {
entries: T[];
compare: (a: T, b: T) => number;
constructor(opts: IndexedArrayOptions<T>);
get length(): number;
at(index: number): T | undefined;
clone(entries: T[]): IndexedArray<T>;
getRangeIndices(min: Partial<T>, max: Partial<T>): any[];
range(min: Partial<T>, max: Partial<T>): IndexedArray<T>;
it(min: T, max: T): Generator<T, void, unknown>;
query(query: IndexedArrayQuery<T>): IndexedArray<T>;
filter(fn: (element: T, index: number, thisArg?: any) => boolean): IndexedArray<T>;
[Symbol.iterator](): Generator<T, void, unknown>;
}
export {};