tengri/Content/UE/DataTable.ts

42 lines
870 B
TypeScript

// UE/DataTable.ts
import { Name } from '#root/UE/Name.ts';
import type { UEArray } from '#root/UE/UEArray.ts';
import { UEObject } from '#root/UE/UEObject.ts';
export class DataTable<T> extends UEObject {
private rows: Map<Name, T> = new Map();
constructor(
outer: UEObject | null = null,
name: Name = Name.NONE,
initialData: UEArray<T & { Name: Name }> = [] as unknown as UEArray<
T & { Name: Name }
>
) {
super(outer, name);
initialData.forEach(row => {
this.rows.set(row.Name, row);
});
}
public GetDataTableRow(
rowName: Name,
rowFound?: (row: T) => void,
rowNotFound?: () => void
): void | T | undefined {
const row = this.rows.get(rowName);
if (!rowFound && !rowNotFound) {
return row;
}
if (row) {
rowFound?.(row);
} else {
rowNotFound?.();
}
}
}