@civ-clone/core-city-build
Version:
The repo contains the `CityBuild` and associated objects that deal with building items in `City`s.
23 lines (17 loc) • 642 B
text/typescript
import { Criterion, ICriterion } from '@civ-clone/core-rule/Criterion';
import City from '@civ-clone/core-city/City';
import { IBuildable as Buildable } from '../Buildable';
import Rule from '@civ-clone/core-rule/Rule';
export interface IBuildCriterion extends ICriterion {
validate(): boolean;
}
export class Build extends Rule<[City, Buildable], IBuildCriterion> {
process(city: City, BuildItem: Buildable): IBuildCriterion {
const criterion = super.process(city, BuildItem);
if (!(criterion instanceof Criterion)) {
throw new TypeError('Invalid build rule.');
}
return criterion;
}
}
export default Build;