diff --git a/packages/asset-manager/test/asset-manager.library.spec.ts b/packages/asset-manager/test/asset-manager.library.spec.ts index 8d00c257..fb7c566b 100644 --- a/packages/asset-manager/test/asset-manager.library.spec.ts +++ b/packages/asset-manager/test/asset-manager.library.spec.ts @@ -1,16 +1,13 @@ -import { - ApplicationContext, - type IConfigRegistry, - InitContext, - LibraryManager, -} from "@nanoforge/common"; +import { type IConfigRegistry, InitContext } from "@nanoforge/common"; +import { EditableApplicationContext } from "@nanoforge/core/src/common/context/contexts/application.editable-context"; +import { EditableLibraryManager } from "@nanoforge/core/src/common/library/manager/library.manager"; import { AssetManagerLibrary } from "../src"; describe("Asset Manager Library", () => { const library = new AssetManagerLibrary(); - const appContext = new ApplicationContext(); - const libraryManager = new LibraryManager(); + const libraryManager = new EditableLibraryManager(); + const appContext = new EditableApplicationContext(libraryManager); const configRegistry = {} as IConfigRegistry; const context = new InitContext(appContext, libraryManager, configRegistry, { // @ts-ignore diff --git a/packages/asset-manager/test/tsconfig.json b/packages/asset-manager/test/tsconfig.json index 50d59661..36a47190 100644 --- a/packages/asset-manager/test/tsconfig.json +++ b/packages/asset-manager/test/tsconfig.json @@ -1,3 +1,10 @@ { - "extends": "../../../tsconfig.spec.json" + "extends": "../../../tsconfig.spec.json", + "compilerOptions": { + "paths": { + "@nanoforge/common": ["./packages/common"], + "@nanoforge/core": ["./packages/core"], + "@nanoforge/core/*": ["./packages/core/*"] + } + } } diff --git a/packages/common/src/context/contexts/application.context.ts b/packages/common/src/context/contexts/application.context.ts index a1955f34..8bdd2f81 100644 --- a/packages/common/src/context/contexts/application.context.ts +++ b/packages/common/src/context/contexts/application.context.ts @@ -1,4 +1,4 @@ -export class ApplicationContext { +export abstract class ApplicationContext { private _isRunning: boolean = false; get isRunning(): boolean { @@ -8,4 +8,6 @@ export class ApplicationContext { setIsRunning(value: boolean): void { this._isRunning = value; } + + abstract muteSoundLibraries(): void; } diff --git a/packages/core/src/application/application-config.ts b/packages/core/src/application/application-config.ts index 8419e60b..57f2f5c6 100644 --- a/packages/core/src/application/application-config.ts +++ b/packages/core/src/application/application-config.ts @@ -86,8 +86,4 @@ export class ApplicationConfig { public useMusicLibrary(library: IMusicLibrary) { this._libraryManager.setMusic(library); } - - public getMutableLibraries() { - return this._libraryManager.getMutableLibraries(); - } } diff --git a/packages/core/src/application/nanoforge-application.ts b/packages/core/src/application/nanoforge-application.ts index bc8e5888..4891178a 100644 --- a/packages/core/src/application/nanoforge-application.ts +++ b/packages/core/src/application/nanoforge-application.ts @@ -1,5 +1,4 @@ import { - ApplicationContext, type IAssetManagerLibrary, type IComponentSystemLibrary, type ILibrary, @@ -7,6 +6,7 @@ import { type IRunOptions, } from "@nanoforge/common"; +import { EditableApplicationContext } from "../common/context/contexts/application.editable-context"; import { Core } from "../core/core"; import { ApplicationConfig } from "./application-config"; import type { IApplicationOptions } from "./application-options.type"; @@ -43,7 +43,10 @@ export abstract class NanoforgeApplication { } public init(options: IRunOptions): Promise { - this._core = new Core(this.applicationConfig, new ApplicationContext()); + this._core = new Core( + this.applicationConfig, + new EditableApplicationContext(this.applicationConfig.libraryManager), + ); return this._core.init(options, this._options); } diff --git a/packages/core/src/common/context/contexts/application.editable-context.ts b/packages/core/src/common/context/contexts/application.editable-context.ts index 6288f1a1..91087bcd 100644 --- a/packages/core/src/common/context/contexts/application.editable-context.ts +++ b/packages/core/src/common/context/contexts/application.editable-context.ts @@ -1,3 +1,16 @@ import { ApplicationContext } from "@nanoforge/common"; -export class EditableApplicationContext extends ApplicationContext {} +import { type EditableLibraryManager } from "../../library/manager/library.manager"; + +export class EditableApplicationContext extends ApplicationContext { + private _libraryManager: EditableLibraryManager; + + constructor(libraryManager: EditableLibraryManager) { + super(); + this._libraryManager = libraryManager; + } + + muteSoundLibraries(): void { + this._libraryManager.getMutableLibraries().forEach((lib) => lib.library.mute()); + } +} diff --git a/packages/core/src/core/core.ts b/packages/core/src/core/core.ts index b487ed59..d8fbb1b0 100644 --- a/packages/core/src/core/core.ts +++ b/packages/core/src/core/core.ts @@ -57,13 +57,6 @@ export class Core { const intervalHandle = setInterval(render, 1000 / this.options.tickRate); } - /** - * mutes / unmutes mutable libraries all at once. - */ - public mute(): void { - this.config.getMutableLibraries().map((x) => x.library.mute()); - } - private getInitContext(options: IRunOptions): InitContext { return new InitContext(this.context, this.config.libraryManager, this._configRegistry, options); } diff --git a/packages/ecs/test/ecs-library.spec.ts b/packages/ecs/test/ecs-library.spec.ts index 58b6b088..4b7714b6 100644 --- a/packages/ecs/test/ecs-library.spec.ts +++ b/packages/ecs/test/ecs-library.spec.ts @@ -1,10 +1,6 @@ import { AssetManagerLibrary } from "@nanoforge/asset-manager"; -import { - ApplicationContext, - ClearContext, - type IConfigRegistry, - InitContext, -} from "@nanoforge/common"; +import { ClearContext, type IConfigRegistry, InitContext } from "@nanoforge/common"; +import { EditableApplicationContext } from "@nanoforge/core/src/common/context/contexts/application.editable-context"; import { EditableLibraryManager } from "@nanoforge/core/src/common/library/manager/library.manager"; import { type ECSRegistry } from "@nanoforge/ecs"; import { ECSLibrary } from "@nanoforge/ecs/src/ecs-library"; @@ -24,8 +20,8 @@ describe("ECSLibrary", () => { let ecs: ECSLibrary; let registry: ECSRegistry; const assetManager = new AssetManagerLibrary(); - const appContext = new ApplicationContext(); const libraryManager = new EditableLibraryManager(); + const appContext = new EditableApplicationContext(libraryManager); const configRegistry = {} as IConfigRegistry; const initContext = new InitContext(appContext, libraryManager, configRegistry, { // @ts-ignore diff --git a/packages/graphics-2d/test/graphics-2d.library.spec.ts b/packages/graphics-2d/test/graphics-2d.library.spec.ts index 0846aa83..ed17cb93 100644 --- a/packages/graphics-2d/test/graphics-2d.library.spec.ts +++ b/packages/graphics-2d/test/graphics-2d.library.spec.ts @@ -1,16 +1,13 @@ -import { - ApplicationContext, - type IConfigRegistry, - InitContext, - LibraryManager, -} from "@nanoforge/common"; +import { type IConfigRegistry, InitContext } from "@nanoforge/common"; +import { EditableApplicationContext } from "@nanoforge/core/src/common/context/contexts/application.editable-context"; +import { EditableLibraryManager } from "@nanoforge/core/src/common/library/manager/library.manager"; import { Graphics2DLibrary } from "../src/graphics-2d.library"; describe("Graphics 2D Library", () => { const library = new Graphics2DLibrary(); - const appContext = new ApplicationContext(); - const libraryManager = new LibraryManager(); + const libraryManager = new EditableLibraryManager(); + const appContext = new EditableApplicationContext(libraryManager); const configRegistry = {} as IConfigRegistry; const context = new InitContext(appContext, libraryManager, configRegistry, { // @ts-ignore diff --git a/packages/graphics-2d/test/tsconfig.json b/packages/graphics-2d/test/tsconfig.json index e756f496..0a8e84d4 100644 --- a/packages/graphics-2d/test/tsconfig.json +++ b/packages/graphics-2d/test/tsconfig.json @@ -1,6 +1,11 @@ { "extends": "../../../tsconfig.spec.json", "compilerOptions": { - "types": ["jest", "node", "@webgpu/types"] + "types": ["jest", "node", "@webgpu/types"], + "paths": { + "@nanoforge/common": ["./packages/common"], + "@nanoforge/core": ["./packages/core"], + "@nanoforge/core/*": ["./packages/core/*"] + } } }