import { DependencyContainer, Lifecycle } from "tsyringe"; import type { IMod } from "@spt-aki/models/external/mod"; import type { ILogger } from "@spt-aki/models/spt/utils/ILogger"; import { InitialModLoader } from "@spt-aki/loaders/InitialModLoader"; import { Generator } from "./generator"; import { Ragfair } from "./ragfair"; import { Weather } from "./weather"; import { Bots } from "./bots"; import { Raids } from "./raids"; import { Server } from "./server"; import { Traders } from "./traders"; import { Quests } from "./quests"; import { Notifications } from "./notifications"; import { AkiConfigHandler } from "./AkiConfigHandler"; class AkiConfig implements IMod { private logger: ILogger; private pkg; public load(container: DependencyContainer): void { container.register("AkiConfigHandler", AkiConfigHandler, {lifecycle:Lifecycle.Singleton}); container.register("Generator", Generator); container.register("Ragfair", Ragfair); container.register("Weather", Weather); container.register("Bots", Bots); container.register("Raids", Raids); container.register("Server", Server); container.register("Traders", Traders); container.register("Quests", Quests); container.register("Notifications", Notifications); this.logger = container.resolve("WinstonLogger"); this.pkg = require("../package.json"); this.logger.info(`Loading: ${this.pkg.name} ${this.pkg.version}`); } public delayedLoad(container: DependencyContainer): void { const initialModLoader = container.resolve("InitialModLoader"); const modPath = `./${initialModLoader.getModPath(this.pkg.name)}`; container.resolve("Generator").checkConfigExisting(modPath); container.resolve("Ragfair").applyChanges(); container.resolve("Weather").applyChanges(); container.resolve("Bots").applyChanges(); container.resolve("Raids").applyChanges(); container.resolve("Server").applyChanges(); container.resolve("Traders").applyChanges(); container.resolve("Quests").applyChanges(); if (container.resolve("AkiConfigHandler").getConfig().other.showModLogs) { container.resolve("Notifications").sendNotifications() } } } module.exports = { mod: new AkiConfig() };