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;