ResourceController 란 것이 있을 것

This commit is contained in:
2023-09-24 04:06:59 +00:00
parent 4bc5407bf2
commit 905b401aab
5 changed files with 82 additions and 2 deletions
+8
View File
@@ -0,0 +1,8 @@
import type { CityID } from "./defs.js";
export class City{
constructor(
public readonly id: CityID
){
}
}
+8 -1
View File
@@ -1,3 +1,10 @@
export class General { import type { GeneralID, GeneralName } from "./defs.js";
export class General {
constructor(
public readonly id: GeneralID,
public name: GeneralName,
){
}
} }
+9
View File
@@ -0,0 +1,9 @@
import type { NationID, NationName, NationType } from "./defs.js";
export class Nation {
constructor(
public readonly id: NationID,
public readonly name: NationName,
public readonly type: NationType,
) { }
}
@@ -0,0 +1,45 @@
import type { General } from "./General.js";
import type { City } from "./City.js";
import type { Nation } from "./Nation.js";
import type { CityID, GeneralID, NationID } from "./defs.js";
import type { GameEnv } from "./GameEnv.js";
export interface IResourceController{
addCity(city: City): Promise<boolean>;
addNation(nation: Nation): Promise<boolean>;
addGeneral(general: General): Promise<boolean>;
getCity(id: CityID, allowFromDB?: boolean): Promise<City | undefined>;
getNation(id: NationID, allowFromDB?: boolean): Promise<Nation | undefined>;
getGeneral(id: GeneralID, allowFromDB?: boolean): Promise<General | undefined>;
getGameEnv(): Promise<GameEnv>;
findAllNations(): Promise<Map<NationID, Nation>>;
findAllCities(): Promise<Map<CityID, City>>;
findAllGenerals(): Promise<Map<GeneralID, General>>;
findCityByNation(id: NationID): Promise<Map<CityID, City>>;
findGeneralByNation(id: NationID): Promise<Map<GeneralID, General>>;
findGeneralByCity(id: CityID, nationID?: NationID): Promise<Map<GeneralID, General>>;
findGeneralByQuery(query: unknown): Promise<Map<GeneralID, General>>;
findCityByQuery(query: unknown): Promise<Map<CityID, City>>;
findNationByQuery(query: unknown): Promise<Map<NationID, Nation>>;
reset(): void;
save(): Promise<void>;
}
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;
}
+12 -1
View File
@@ -1,4 +1,15 @@
//Type 정의 //Type 정의
export type GeneralName = string & { zz_t?: "GeneralName" }; import { type } from "os";
export type GeneralID = number & { zz_t?: "GeneralID" }; export type GeneralID = number & { zz_t?: "GeneralID" };
export type GeneralName = string & { zz_t?: "GeneralName" };
export type CityID = number & { zz_t?: "CityID" };
export type CityName = string & { zz_t?: "CityName" };
export type NationID = number & { zz_t?: "NationID" };
export type NationName = string & { zz_t?: "NationName" };
//TODO: 무언가의 keyof 로 바꿔야함
export type NationType = string & { zz_t?: "NationType" };