Skip to content

Commit d917e64

Browse files
committed
refactor: split math module into smaller modules and fixed all import paths
1 parent 2f6b852 commit d917e64

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

78 files changed

+1597
-286
lines changed

src/asset.manifest.ts

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1,9 @@
1-
import { AssetManifest } from "core/assets/AssetManifest";const assetManifest: AssetManifest = { bundles: { StartScreen: [] }};export { assetManifest };
1+
import { AssetManifest } from "@/core/assets/AssetManifest";
2+
3+
const assetManifest: AssetManifest = {
4+
bundles: {
5+
StartScreen: []
6+
}
7+
};
8+
9+
export { assetManifest };

src/core/Game.ts

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,19 @@
1-
import { EventSystem, EventSystemConfig } from "./events/EventSystem";
2-
import { LocalDatabase, DatabaseConfiguration } from "./database/LocalDatabase";
3-
import { AssetStorage } from "./assets/AssetStorage";
4-
import { AssetLoader, LoaderConfiguration } from "./assets/AssetLoader";
5-
import { GameStateManager } from "./GameStateManager";
6-
import { Display, DisplayConfiguration } from "./graphics/Display";
7-
import { InputDevice, InputDeviceConfig } from "./input/InputDevice";
8-
import { AudioDevice, AudioConfiguration } from "./audio/AudioDevice";
9-
import { World } from "./ecs/World";
10-
import { ComponentConstructor } from "./ecs/Component";
11-
import { JsonSchema } from "./ecs/JsonSchema";
12-
import { Entity, EntityType } from "./ecs/Entity";
13-
import { SystemConstructor } from "./ecs/System";
14-
import { GameStateConstructor } from "./GameState";
15-
import { GameCommandConstructor } from "./input/GameCommand";
16-
import { Savegame } from "./model/Savegame";
1+
import { EventSystem, EventSystemConfig } from "@/core/events/EventSystem";
2+
import { LocalDatabase, DatabaseConfiguration } from "@/core/database/LocalDatabase";
3+
import { AssetStorage } from "@/core/assets/AssetStorage";
4+
import { AssetLoader, LoaderConfiguration } from "@/core/assets/AssetLoader";
5+
import { GameStateManager } from "@/core/GameStateManager";
6+
import { Display, DisplayConfiguration } from "@/core/graphics/Display";
7+
import { InputDevice, InputDeviceConfig } from "@/core/input/InputDevice";
8+
import { AudioDevice, AudioConfiguration } from "@/core/audio/AudioDevice";
9+
import { World } from "@/core/ecs/World";
10+
import { ComponentConstructor } from "@/core/ecs/Component";
11+
import { JsonSchema } from "@/core/ecs/JsonSchema";
12+
import { Entity, EntityType } from "@/core/ecs/Entity";
13+
import { SystemConstructor } from "@/core/ecs/System";
14+
import { GameStateConstructor } from "@/core/GameState";
15+
import { GameCommandConstructor } from "@/core/input/GameCommand";
16+
import { Savegame } from "@/core/model/Savegame";
1717

1818
export interface GameConfiguration {
1919
id: string;

src/core/GameStateManager.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
import { GameError } from "./GameError";
2-
import { GameState, GameStateConstructor } from "./GameState";
3-
import { GameCoreService } from "./service/GameCoreService";
1+
import { GameError } from "@/core/GameError";
2+
import { GameState, GameStateConstructor } from "@/core/GameState";
3+
import { GameCoreService } from "@/core/service/GameCoreService";
44

55
@GameCoreService()
66
export class GameStateManager {

src/core/assets/AssetLoader.ts

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
1-
import { GameError } from "core/GameError";
2-
import { AssetManifest } from "./AssetManifest";
3-
import { AssetType, AudioAsset, StylesheetAsset, FontAsset, HtmlAsset, ImageAsset, JavaScriptAsset, JsonAsset, VideoAsset, XmlAsset } from "./Asset";
4-
import { Sprite } from "core/graphics/Sprite";
5-
import { GameCoreService } from "../service/GameCoreService";
6-
import { EventSystem } from "../events/EventSystem";
7-
import { AssetStorage } from "./AssetStorage";
1+
import { GameError } from "@/core/GameError";
2+
import { AssetManifest } from "@/core/assets/AssetManifest";
3+
import { AssetType, AudioAsset, StylesheetAsset, FontAsset, HtmlAsset, ImageAsset, JavaScriptAsset, JsonAsset, VideoAsset, XmlAsset } from "@/core/assets/Asset";
4+
import { Sprite } from "@/core/graphics/Sprite";
5+
import { GameCoreService } from "@/core/service/GameCoreService";
6+
import { EventSystem } from "@/core/events/EventSystem";
7+
import { AssetStorage } from "@/core/assets/AssetStorage";
88

99
type LoaderMap = Record<AssetType['type'], (asset: any) => Promise<void>>
1010
type UnloaderMap = Record<AssetType['type'], (id: string) => void>

src/core/assets/AssetManifest.ts

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1,8 @@
1-
import { AssetType } from "./Asset";export interface AssetManifest { assetRoot?: string; bundles: { [bundleName: string]: AssetType[]; };}
1+
import { AssetType } from "@/core/assets/Asset";
2+
3+
export interface AssetManifest {
4+
assetRoot?: string;
5+
bundles: {
6+
[bundleName: string]: AssetType[];
7+
};
8+
}

src/core/assets/AssetStorage.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
import { AudioTrack } from "core/audio/AudioTrack";
2-
import { Sprite } from "core/graphics/Sprite";
3-
import { GameError } from "core/GameError";
4-
import { GameCoreService } from "../service/GameCoreService";
1+
import { AudioTrack } from "@/core/audio/AudioTrack";
2+
import { Sprite } from "@/core/graphics/Sprite";
3+
import { GameError } from "@/core/GameError";
4+
import { GameCoreService } from "@/core/service/GameCoreService";
55

66
@GameCoreService()
77
export class AssetStorage {

src/core/assets/BundleEvents.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { GameEvent } from "core/events/GameEvent";
1+
import { GameEvent } from "@/core/events/GameEvent";
22

33
interface BundleEvent extends GameEvent {
44
bundle: string;

src/core/assets/LoadableAssets.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
import { AudioTrack } from "../audio/AudioTrack";
2-
import { Sprite } from "../graphics/Sprite";
1+
import { AudioTrack } from "@/core/audio/AudioTrack";
2+
import { Sprite } from "@/core/graphics/Sprite";
33

44
export interface LoadableAssets {
55
"image": Sprite;

src/core/audio/AudioChannel.ts

Lines changed: 60 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1,60 @@
1-
import { AudioTrack } from "./AudioTrack";export class AudioChannel { private context: AudioContext; private volume: GainNode; constructor(context: AudioContext) { this.context = context; this.volume = this.context.createGain(); } public play(track: AudioTrack): AudioTrack { const source = this.context.createBufferSource(); source.buffer = track.buffer; source.connect(this.volume); track.startedAt = this.context.currentTime; if (track.offset) { source.start(0, track.offset % track.buffer.duration); } else { source.start(); } track.source = source; return track; } public loop(track: AudioTrack): AudioTrack { const source = this.context.createBufferSource(); source.buffer = track.buffer; source.loop = true; source.connect(this.volume); track.startedAt = this.context.currentTime; if (track.offset) { source.start(0, track.offset % track.buffer.duration); } else { source.start(); } track.source = source; return track; } public setVolume(volume: number) { if (volume < 0 || volume > 100) { throw new RangeError("volume must be percentage"); } const value = this.volume.gain.minValue + (volume / 100) * (this.volume.gain.maxValue - this.volume.gain.minValue); this.volume.gain.value = value; } public connect(node: AudioNode) { this.volume.connect(node); }}
1+
import { AudioTrack } from "@/core/audio/AudioTrack";
2+
3+
export class AudioChannel {
4+
private context: AudioContext;
5+
private volume: GainNode;
6+
7+
constructor(context: AudioContext) {
8+
this.context = context;
9+
this.volume = this.context.createGain();
10+
}
11+
12+
public play(track: AudioTrack): AudioTrack {
13+
const source = this.context.createBufferSource();
14+
source.buffer = track.buffer;
15+
source.connect(this.volume);
16+
17+
track.startedAt = this.context.currentTime;
18+
19+
if (track.offset) {
20+
source.start(0, track.offset % track.buffer.duration);
21+
} else {
22+
source.start();
23+
}
24+
25+
track.source = source;
26+
return track;
27+
}
28+
29+
public loop(track: AudioTrack): AudioTrack {
30+
const source = this.context.createBufferSource();
31+
source.buffer = track.buffer;
32+
source.loop = true;
33+
source.connect(this.volume);
34+
35+
track.startedAt = this.context.currentTime;
36+
37+
if (track.offset) {
38+
source.start(0, track.offset % track.buffer.duration);
39+
} else {
40+
source.start();
41+
}
42+
43+
track.source = source;
44+
return track;
45+
}
46+
47+
public setVolume(volume: number) {
48+
if (volume < 0 || volume > 100) {
49+
throw new RangeError("volume must be percentage");
50+
}
51+
52+
const value = this.volume.gain.minValue + (volume / 100) * (this.volume.gain.maxValue - this.volume.gain.minValue);
53+
54+
this.volume.gain.value = value;
55+
}
56+
57+
public connect(node: AudioNode) {
58+
this.volume.connect(node);
59+
}
60+
}

src/core/audio/AudioDevice.ts

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
1-
import { GameError } from "core/GameError";
2-
import { UserGestures } from "core/UserGestures";
3-
import { AudioChannel } from "./AudioChannel";
4-
import { GameCoreService } from "../service/GameCoreService";
5-
import { AssetStorage } from "../assets/AssetStorage";
1+
import { GameError } from "@/core/GameError";
2+
import { UserGestures } from "@/core/UserGestures";
3+
import { AudioChannel } from "@/core/audio/AudioChannel";
4+
import { GameCoreService } from "@/core/service/GameCoreService";
5+
import { AssetStorage } from "@/core/assets/AssetStorage";
66

77
export interface AudioConfiguration {
88
channels: string[];

0 commit comments

Comments
 (0)