bourgade/src/types.ts

90 lines
1.5 KiB
TypeScript
Raw Normal View History

import type { Hex } from "./hexgrid";
export type GameTab = 'village' | 'resources' | 'world';
export interface CostType {
wood: number;
stone: number;
iron: number;
food: number;
}
export type ProductionType = CostType;
export interface ResourcesType extends CostType {
culture: number;
}
export interface BuildingSource {
name: string;
type: string;
autoBuilt?: boolean;
cost: (level: number) => CostType;
behavior: {
production?: Function;
storage?: Function;
units?: {
type: string;
recruitmentTime: Function;
};
};
}
export interface BuildingType extends BuildingSource {
id: number;
level: number;
tile: Hex;
state: {
upgrade: {
isUpgrading: boolean,
remainingTime: number;
}
recruitment?: {
count: number;
elapsedTime: number;
};
};
}
export interface UnitType {
type: string;
name: string;
cost: CostType;
behavior: {
foodIntakePerMinute: number;
culturePerMinute?: number;
}
}
interface BaseRegionType {
distance: number;
state: {
mission?: {
type: string;
};
};
}
export interface OasisType extends BaseRegionType {
type: 'oasis';
resource: keyof CostType;
}
export interface BourgadeType extends BaseRegionType {
type: 'bourgade';
distance: number;
}
export type RegionType = OasisType | BourgadeType;