bourgade/src/types.ts

113 lines
1.9 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;
2024-11-07 15:51:26 +01:00
maxLevel: number;
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: {
2024-11-07 15:14:24 +01:00
caryingCapacity: number;
foodIntakePerMinute: number;
culturePerMinute?: number;
}
}
2024-11-07 14:20:34 +01:00
export interface MissionType {
type: string;
unitType: string;
unitCount: number;
remainingTime: number;
}
interface BaseRegionType {
distance: number;
state: {
2024-11-07 14:20:34 +01:00
index: number;
mission?: MissionType;
};
}
export interface OasisType extends BaseRegionType {
type: 'oasis';
resource: keyof CostType;
}
export interface BourgadeType extends BaseRegionType {
type: 'bourgade';
distance: number;
}
export type RegionType = OasisType | BourgadeType;
export interface HeroType {
id: number;
}
export interface QuestType {
id: number;
duration: number;
reward: ResourcesType;
level: number;
started: boolean;
remainingTime?: number;
}