import type { General } from "./General.js"; import type { City } from "./City.js"; import type { Nation } from "./Nation.js"; import type { CityID, GeneralID, NationID, TroopID } from "./defs.js"; import type { GameEnv } from "./GameEnv.js"; import type { IGeneralEntity } from "./GeneralEntity.js"; import type { Troop } from "./Troop.js"; import type { ITroopEntity } from "./TroopEntity.js"; export interface IResourceController{ addCity(city: City): boolean; addNation(nation: Nation): boolean; addGeneral(general: General): boolean; getCity(id: CityID): City | undefined; getNation(id: NationID): Nation | undefined; getGeneral(id: GeneralID): General | undefined; getGameEnv(): Promise; findAllNations(): Map; findAllCities(): Map; findAllGenerals(): Map; findGeneralByTroop(id: TroopID): Map; findCityByNation(id: NationID): Map; findGeneralByNation(id: NationID): Map; findGeneralByCity(id: CityID, nationID?: NationID): Map; getTroop(id: TroopID, nation: NationID): Troop | undefined; _getAllChanges(): Map; setDirtyGeneral(rawGeneral: IGeneralEntity): void; setDirtyCity(city: City): void; setDirtyTroop(troop: Troop | TroopID): void; setDirtyNation(nation: Nation): void; createGeneral(raw: IGeneralEntity): General; createTroop(raw: ITroopEntity): Troop; //createNation reserveDeleteTroop(id: TroopID): void; reserveDeleteGeneral(id: GeneralID): void; reserveDeleteNation(id: NationID): void; resetAndFill(): Promise; saveAll(): Promise; } let _resourceController: IResourceController | undefined = undefined; export const setResourceController = (resourceController: IResourceController) => { _resourceController = resourceController; } export const getResourceController = () => { if (_resourceController === undefined) { throw new Error("ResourceController not set"); } return _resourceController; }