@nice2dev/game-engine 1.3.12 → 1.3.14
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +8 -0
- package/package.json +2 -2
- package/dist/types/accessibility/index.d.ts +0 -1
- package/dist/types/ai/index.d.ts +0 -1
- package/dist/types/animation/index.d.ts +0 -1
- package/dist/types/audio/HRTFAudio.d.ts +0 -180
- package/dist/types/audio/index.d.ts +0 -2
- package/dist/types/community/Community.d.ts +0 -112
- package/dist/types/community/index.d.ts +0 -1
- package/dist/types/core/TypeSafety.d.ts +0 -190
- package/dist/types/core/index.d.ts +0 -7
- package/dist/types/devtools/AssetStore.d.ts +0 -133
- package/dist/types/devtools/index.d.ts +0 -3
- package/dist/types/dialogue/index.d.ts +0 -2
- package/dist/types/docs/APIPlayground.d.ts +0 -26
- package/dist/types/docs/Cookbook.d.ts +0 -18
- package/dist/types/docs/Guides.d.ts +0 -18
- package/dist/types/docs/index.d.ts +0 -4
- package/dist/types/ecs/ECSOptimized.d.ts +0 -131
- package/dist/types/ecs/index.d.ts +0 -2
- package/dist/types/editor/NiceAnimationTimeline.d.ts +0 -114
- package/dist/types/editor/NiceLevelEditor.d.ts +0 -232
- package/dist/types/editor/NiceMaterialEditor.d.ts +0 -105
- package/dist/types/editor/NiceNodeGraph.d.ts +0 -87
- package/dist/types/editor/NiceParticleEditor.d.ts +0 -127
- package/dist/types/editor/behavior-tree/BTDebugPanel.d.ts +0 -102
- package/dist/types/editor/behavior-tree/BTEditorCanvas.d.ts +0 -79
- package/dist/types/editor/behavior-tree/BTEditorNode.d.ts +0 -58
- package/dist/types/editor/behavior-tree/BTEditorToolbar.d.ts +0 -75
- package/dist/types/editor/behavior-tree/BTNodePalette.d.ts +0 -72
- package/dist/types/editor/behavior-tree/BTPropertyPanel.d.ts +0 -66
- package/dist/types/editor/behavior-tree/BehaviorTreeEditor.d.ts +0 -186
- package/dist/types/editor/behavior-tree/index.d.ts +0 -14
- package/dist/types/editor/behavior-tree/serialization.d.ts +0 -30
- package/dist/types/editor/behavior-tree/types.d.ts +0 -299
- package/dist/types/editor/index.d.ts +0 -20
- package/dist/types/editor/state-machine/SMEditorCanvas.d.ts +0 -61
- package/dist/types/editor/state-machine/StateMachineEditor.d.ts +0 -139
- package/dist/types/editor/state-machine/index.d.ts +0 -11
- package/dist/types/editor/state-machine/serialization.d.ts +0 -23
- package/dist/types/editor/state-machine/types.d.ts +0 -241
- package/dist/types/engine/index.d.ts +0 -2
- package/dist/types/enterprise/index.d.ts +0 -1
- package/dist/types/epic/index.d.ts +0 -10
- package/dist/types/i18n/index.d.ts +0 -2
- package/dist/types/input/index.d.ts +0 -3
- package/dist/types/kids/index.d.ts +0 -2
- package/dist/types/legendary/index.d.ts +0 -57
- package/dist/types/monetization/index.d.ts +0 -1
- package/dist/types/multiplayer/NiceNetcode.d.ts +0 -434
- package/dist/types/multiplayer/index.d.ts +0 -5
- package/dist/types/network/index.d.ts +0 -2
- package/dist/types/pathfinding/index.d.ts +0 -1
- package/dist/types/performance/AssetCompression.d.ts +0 -137
- package/dist/types/performance/WASMModules.d.ts +0 -65
- package/dist/types/performance/WebGPUCompute.d.ts +0 -71
- package/dist/types/performance/index.d.ts +0 -1
- package/dist/types/physics/RapierIntegration.d.ts +0 -404
- package/dist/types/physics/index.d.ts +0 -2
- package/dist/types/plugins/index.d.ts +0 -2
- package/dist/types/procedural/index.d.ts +0 -2
- package/dist/types/release/index.d.ts +0 -1
- package/dist/types/rendering/WebGPUv2.d.ts +0 -173
- package/dist/types/rendering/index.d.ts +0 -3
- package/dist/types/runtime3d/index.d.ts +0 -2
- package/dist/types/scene/index.d.ts +0 -2
- package/dist/types/scripting/WasmCompiler.d.ts +0 -182
- package/dist/types/scripting/index.d.ts +0 -19
- package/dist/types/social/index.d.ts +0 -1
- package/dist/types/systems/NiceAI.d.ts +0 -637
- package/dist/types/systems/NiceAbility.d.ts +0 -225
- package/dist/types/systems/NiceAccessibility.d.ts +0 -230
- package/dist/types/systems/NiceAchievement.d.ts +0 -153
- package/dist/types/systems/NiceAchievementUI.d.ts +0 -196
- package/dist/types/systems/NiceAchievements.d.ts +0 -230
- package/dist/types/systems/NiceAction.d.ts +0 -81
- package/dist/types/systems/NiceAlchemy.d.ts +0 -195
- package/dist/types/systems/NiceAnalytics.d.ts +0 -493
- package/dist/types/systems/NiceAnimation.d.ts +0 -350
- package/dist/types/systems/NiceArena.d.ts +0 -215
- package/dist/types/systems/NiceAssetLoader.d.ts +0 -136
- package/dist/types/systems/NiceAuction.d.ts +0 -157
- package/dist/types/systems/NiceAudio.d.ts +0 -224
- package/dist/types/systems/NiceAugment.d.ts +0 -187
- package/dist/types/systems/NiceAura.d.ts +0 -193
- package/dist/types/systems/NiceBank.d.ts +0 -158
- package/dist/types/systems/NiceBattlePass.d.ts +0 -150
- package/dist/types/systems/NiceBehavior.d.ts +0 -160
- package/dist/types/systems/NiceBinding.d.ts +0 -96
- package/dist/types/systems/NiceBlacksmith.d.ts +0 -221
- package/dist/types/systems/NiceBuff.d.ts +0 -177
- package/dist/types/systems/NiceBuilding.d.ts +0 -207
- package/dist/types/systems/NiceBullet.d.ts +0 -167
- package/dist/types/systems/NiceCamera.d.ts +0 -252
- package/dist/types/systems/NiceCard.d.ts +0 -171
- package/dist/types/systems/NiceChat.d.ts +0 -148
- package/dist/types/systems/NiceCheat.d.ts +0 -375
- package/dist/types/systems/NiceClimbing.d.ts +0 -186
- package/dist/types/systems/NiceCloud.d.ts +0 -422
- package/dist/types/systems/NiceCollision.d.ts +0 -238
- package/dist/types/systems/NiceCombo.d.ts +0 -131
- package/dist/types/systems/NiceCommand.d.ts +0 -112
- package/dist/types/systems/NiceCompanion.d.ts +0 -182
- package/dist/types/systems/NiceController.d.ts +0 -144
- package/dist/types/systems/NiceCooking.d.ts +0 -193
- package/dist/types/systems/NiceCoroutine.d.ts +0 -101
- package/dist/types/systems/NiceCrafting.d.ts +0 -228
- package/dist/types/systems/NiceCutscene.d.ts +0 -437
- package/dist/types/systems/NiceDaily.d.ts +0 -133
- package/dist/types/systems/NiceDamage.d.ts +0 -271
- package/dist/types/systems/NiceDayNight.d.ts +0 -126
- package/dist/types/systems/NiceDebug.d.ts +0 -255
- package/dist/types/systems/NiceDestructible.d.ts +0 -150
- package/dist/types/systems/NiceDialogue.d.ts +0 -629
- package/dist/types/systems/NiceDungeon.d.ts +0 -202
- package/dist/types/systems/NiceECS.d.ts +0 -151
- package/dist/types/systems/NiceEnchant.d.ts +0 -148
- package/dist/types/systems/NiceEntityPool.d.ts +0 -127
- package/dist/types/systems/NiceEquipment.d.ts +0 -137
- package/dist/types/systems/NiceEvent.d.ts +0 -202
- package/dist/types/systems/NiceEventBus.d.ts +0 -164
- package/dist/types/systems/NiceFaction.d.ts +0 -173
- package/dist/types/systems/NiceFarming.d.ts +0 -163
- package/dist/types/systems/NiceFishing.d.ts +0 -196
- package/dist/types/systems/NiceFlocking.d.ts +0 -156
- package/dist/types/systems/NiceFog.d.ts +0 -137
- package/dist/types/systems/NiceFormation.d.ts +0 -140
- package/dist/types/systems/NiceGacha.d.ts +0 -134
- package/dist/types/systems/NiceGambling.d.ts +0 -175
- package/dist/types/systems/NiceGem.d.ts +0 -165
- package/dist/types/systems/NiceGesture.d.ts +0 -502
- package/dist/types/systems/NiceGrappling.d.ts +0 -154
- package/dist/types/systems/NiceGrid.d.ts +0 -142
- package/dist/types/systems/NiceGuild.d.ts +0 -162
- package/dist/types/systems/NiceHaptics.d.ts +0 -112
- package/dist/types/systems/NiceHousing.d.ts +0 -197
- package/dist/types/systems/NiceInput.d.ts +0 -280
- package/dist/types/systems/NiceInventory.d.ts +0 -534
- package/dist/types/systems/NiceLOD.d.ts +0 -144
- package/dist/types/systems/NiceLeaderboard.d.ts +0 -191
- package/dist/types/systems/NiceLevel.d.ts +0 -304
- package/dist/types/systems/NiceLighting.d.ts +0 -214
- package/dist/types/systems/NiceLocalization.d.ts +0 -148
- package/dist/types/systems/NiceLocomotion.d.ts +0 -398
- package/dist/types/systems/NiceLogger.d.ts +0 -117
- package/dist/types/systems/NiceLoot.d.ts +0 -176
- package/dist/types/systems/NiceMail.d.ts +0 -164
- package/dist/types/systems/NiceMap.d.ts +0 -234
- package/dist/types/systems/NiceMarriage.d.ts +0 -150
- package/dist/types/systems/NiceMastery.d.ts +0 -171
- package/dist/types/systems/NiceMatch.d.ts +0 -196
- package/dist/types/systems/NiceMatch3.d.ts +0 -118
- package/dist/types/systems/NiceMessageBus.d.ts +0 -115
- package/dist/types/systems/NiceMinimap.d.ts +0 -258
- package/dist/types/systems/NiceMining.d.ts +0 -175
- package/dist/types/systems/NiceModding.d.ts +0 -452
- package/dist/types/systems/NiceMount.d.ts +0 -152
- package/dist/types/systems/NiceNavigation.d.ts +0 -307
- package/dist/types/systems/NiceNetwork.d.ts +0 -568
- package/dist/types/systems/NiceNotification.d.ts +0 -438
- package/dist/types/systems/NiceObjective.d.ts +0 -395
- package/dist/types/systems/NiceParticle.d.ts +0 -639
- package/dist/types/systems/NiceParty.d.ts +0 -168
- package/dist/types/systems/NicePerformance.d.ts +0 -144
- package/dist/types/systems/NicePet.d.ts +0 -167
- package/dist/types/systems/NicePhotoMode.d.ts +0 -270
- package/dist/types/systems/NicePhysics.d.ts +0 -326
- package/dist/types/systems/NicePlatformer.d.ts +0 -158
- package/dist/types/systems/NicePool.d.ts +0 -128
- package/dist/types/systems/NicePortal.d.ts +0 -178
- package/dist/types/systems/NicePostProcess.d.ts +0 -254
- package/dist/types/systems/NiceProcedural.d.ts +0 -202
- package/dist/types/systems/NiceProfile.d.ts +0 -223
- package/dist/types/systems/NiceProjectile.d.ts +0 -157
- package/dist/types/systems/NicePvP.d.ts +0 -199
- package/dist/types/systems/NiceQTE.d.ts +0 -160
- package/dist/types/systems/NiceQuest.d.ts +0 -620
- package/dist/types/systems/NiceRaid.d.ts +0 -215
- package/dist/types/systems/NiceRanking.d.ts +0 -399
- package/dist/types/systems/NiceReplay.d.ts +0 -180
- package/dist/types/systems/NiceReputation.d.ts +0 -151
- package/dist/types/systems/NiceResource.d.ts +0 -200
- package/dist/types/systems/NiceRhythm.d.ts +0 -148
- package/dist/types/systems/NiceRoguelike.d.ts +0 -276
- package/dist/types/systems/NiceRune.d.ts +0 -202
- package/dist/types/systems/NiceSaveSystem.d.ts +0 -194
- package/dist/types/systems/NiceSceneManager.d.ts +0 -112
- package/dist/types/systems/NiceScore.d.ts +0 -186
- package/dist/types/systems/NiceScreenFX.d.ts +0 -235
- package/dist/types/systems/NiceScreenshot.d.ts +0 -443
- package/dist/types/systems/NiceScribe.d.ts +0 -239
- package/dist/types/systems/NiceSeason.d.ts +0 -176
- package/dist/types/systems/NiceSerialization.d.ts +0 -89
- package/dist/types/systems/NiceServiceLocator.d.ts +0 -94
- package/dist/types/systems/NiceShop.d.ts +0 -528
- package/dist/types/systems/NiceSignal.d.ts +0 -112
- package/dist/types/systems/NiceSkillTree.d.ts +0 -237
- package/dist/types/systems/NiceSocial.d.ts +0 -580
- package/dist/types/systems/NiceSpawner.d.ts +0 -237
- package/dist/types/systems/NiceSpell.d.ts +0 -216
- package/dist/types/systems/NiceState.d.ts +0 -224
- package/dist/types/systems/NiceStateMachine.d.ts +0 -108
- package/dist/types/systems/NiceStatus.d.ts +0 -116
- package/dist/types/systems/NiceStealth.d.ts +0 -204
- package/dist/types/systems/NiceSteam.d.ts +0 -255
- package/dist/types/systems/NiceStreaming.d.ts +0 -173
- package/dist/types/systems/NiceSwimming.d.ts +0 -166
- package/dist/types/systems/NiceTalent.d.ts +0 -154
- package/dist/types/systems/NiceTarget.d.ts +0 -121
- package/dist/types/systems/NiceTerrain.d.ts +0 -143
- package/dist/types/systems/NiceTilemap.d.ts +0 -218
- package/dist/types/systems/NiceTimer.d.ts +0 -153
- package/dist/types/systems/NiceTournament.d.ts +0 -190
- package/dist/types/systems/NiceTrading.d.ts +0 -238
- package/dist/types/systems/NiceTransmog.d.ts +0 -142
- package/dist/types/systems/NiceTutorial.d.ts +0 -248
- package/dist/types/systems/NiceTween.d.ts +0 -164
- package/dist/types/systems/NiceUI.d.ts +0 -364
- package/dist/types/systems/NiceVFX.d.ts +0 -333
- package/dist/types/systems/NiceVehicle.d.ts +0 -176
- package/dist/types/systems/NiceVoice.d.ts +0 -502
- package/dist/types/systems/NiceWater.d.ts +0 -162
- package/dist/types/systems/NiceWave.d.ts +0 -174
- package/dist/types/systems/NiceWaypoint.d.ts +0 -165
- package/dist/types/systems/NiceWeather.d.ts +0 -225
- package/dist/types/systems/NiceXR.d.ts +0 -187
- package/dist/types/systems/index.d.ts +0 -182
- package/dist/types/templates/index.d.ts +0 -2
- package/dist/types/tilemap/index.d.ts +0 -1
- package/dist/types/tutorials/TutorialEditor.d.ts +0 -43
- package/dist/types/tutorials/VoiceNarration.d.ts +0 -75
- package/dist/types/tutorials/content/Tutorials_T04.d.ts +0 -3
- package/dist/types/tutorials/content/UITutorials.d.ts +0 -14
- package/dist/types/tutorials/content/index.d.ts +0 -5
- package/dist/types/tutorials/index.d.ts +0 -6
- package/dist/types/ui/index.d.ts +0 -2
- package/dist/types/visual-scripting/VisualScriptDebugger.d.ts +0 -145
- package/dist/types/visual-scripting/VisualScriptExecutor.d.ts +0 -100
- package/dist/types/visual-scripting/VisualScriptGraph.d.ts +0 -173
- package/dist/types/visual-scripting/VisualScriptNode.d.ts +0 -157
- package/dist/types/visual-scripting/index.d.ts +0 -6
- package/dist/types/visual-scripting/nodes/ActionNodes.d.ts +0 -152
- package/dist/types/visual-scripting/nodes/EventNodes.d.ts +0 -95
- package/dist/types/visual-scripting/nodes/FlowControlNodes.d.ts +0 -134
- package/dist/types/visual-scripting/nodes/LogicNodes.d.ts +0 -122
- package/dist/types/visual-scripting/nodes/MathNodes.d.ts +0 -170
- package/dist/types/visual-scripting/nodes/UtilityNodes.d.ts +0 -131
- package/dist/types/visual-scripting/nodes/VariableNodes.d.ts +0 -107
- package/dist/types/visual-scripting/nodes/index.d.ts +0 -21
- package/dist/types/visual-scripting/nodes/registerNodes.d.ts +0 -29
- package/dist/types/visual-scripting/types.d.ts +0 -402
- package/dist/types/xr/WebXRLayers.d.ts +0 -319
- package/dist/types/xr/index.d.ts +0 -2
|
@@ -1,180 +0,0 @@
|
|
|
1
|
-
export type ReplayId = string;
|
|
2
|
-
export type EntityId = string;
|
|
3
|
-
export interface InputEvent {
|
|
4
|
-
type: string;
|
|
5
|
-
timestamp: number;
|
|
6
|
-
frame: number;
|
|
7
|
-
data: unknown;
|
|
8
|
-
}
|
|
9
|
-
export interface EntityState {
|
|
10
|
-
id: EntityId;
|
|
11
|
-
type: string;
|
|
12
|
-
position?: {
|
|
13
|
-
x: number;
|
|
14
|
-
y: number;
|
|
15
|
-
z?: number;
|
|
16
|
-
};
|
|
17
|
-
rotation?: number;
|
|
18
|
-
velocity?: {
|
|
19
|
-
x: number;
|
|
20
|
-
y: number;
|
|
21
|
-
z?: number;
|
|
22
|
-
};
|
|
23
|
-
health?: number;
|
|
24
|
-
animation?: string;
|
|
25
|
-
customData?: Record<string, unknown>;
|
|
26
|
-
}
|
|
27
|
-
export interface ReplayFrame {
|
|
28
|
-
frameNumber: number;
|
|
29
|
-
timestamp: number;
|
|
30
|
-
deltaTime: number;
|
|
31
|
-
entities: EntityState[];
|
|
32
|
-
inputs: InputEvent[];
|
|
33
|
-
events: Array<{
|
|
34
|
-
type: string;
|
|
35
|
-
data: unknown;
|
|
36
|
-
}>;
|
|
37
|
-
customData?: Record<string, unknown>;
|
|
38
|
-
}
|
|
39
|
-
export interface ReplaySnapshot {
|
|
40
|
-
frameNumber: number;
|
|
41
|
-
timestamp: number;
|
|
42
|
-
fullState: {
|
|
43
|
-
entities: EntityState[];
|
|
44
|
-
customData: Record<string, unknown>;
|
|
45
|
-
};
|
|
46
|
-
}
|
|
47
|
-
export interface ReplayMetadata {
|
|
48
|
-
id: ReplayId;
|
|
49
|
-
name: string;
|
|
50
|
-
description?: string;
|
|
51
|
-
createdAt: number;
|
|
52
|
-
duration: number;
|
|
53
|
-
frameCount: number;
|
|
54
|
-
version: string;
|
|
55
|
-
gameMode?: string;
|
|
56
|
-
mapId?: string;
|
|
57
|
-
players?: Array<{
|
|
58
|
-
id: string;
|
|
59
|
-
name: string;
|
|
60
|
-
team?: string;
|
|
61
|
-
}>;
|
|
62
|
-
tags?: string[];
|
|
63
|
-
thumbnail?: string;
|
|
64
|
-
fileSize?: number;
|
|
65
|
-
}
|
|
66
|
-
export interface ReplayData {
|
|
67
|
-
metadata: ReplayMetadata;
|
|
68
|
-
frames: ReplayFrame[];
|
|
69
|
-
snapshots: ReplaySnapshot[];
|
|
70
|
-
}
|
|
71
|
-
export type PlaybackState = 'idle' | 'playing' | 'paused' | 'seeking' | 'finished';
|
|
72
|
-
export interface PlaybackInfo {
|
|
73
|
-
state: PlaybackState;
|
|
74
|
-
currentFrame: number;
|
|
75
|
-
currentTime: number;
|
|
76
|
-
duration: number;
|
|
77
|
-
totalFrames: number;
|
|
78
|
-
speed: number;
|
|
79
|
-
progress: number;
|
|
80
|
-
}
|
|
81
|
-
export type ReplayEventType = 'recording-started' | 'recording-stopped' | 'frame-recorded' | 'snapshot-created' | 'playback-started' | 'playback-paused' | 'playback-resumed' | 'playback-stopped' | 'playback-finished' | 'playback-seek' | 'playback-speed-changed' | 'frame-played' | 'replay-loaded' | 'replay-exported';
|
|
82
|
-
export interface ReplayEvent {
|
|
83
|
-
type: ReplayEventType;
|
|
84
|
-
timestamp: number;
|
|
85
|
-
replayId?: ReplayId;
|
|
86
|
-
data?: unknown;
|
|
87
|
-
}
|
|
88
|
-
export type ReplayEventCallback = (event: ReplayEvent) => void;
|
|
89
|
-
export interface ReplayConfig {
|
|
90
|
-
/** Frames per second for recording */
|
|
91
|
-
recordFPS: number;
|
|
92
|
-
/** Snapshot interval (frames) for seeking */
|
|
93
|
-
snapshotInterval: number;
|
|
94
|
-
/** Max frames before auto-stop */
|
|
95
|
-
maxFrames: number;
|
|
96
|
-
/** Max duration (seconds) */
|
|
97
|
-
maxDuration: number;
|
|
98
|
-
/** Enable compression */
|
|
99
|
-
enableCompression: boolean;
|
|
100
|
-
/** Record inputs */
|
|
101
|
-
recordInputs: boolean;
|
|
102
|
-
/** Record entity states */
|
|
103
|
-
recordEntities: boolean;
|
|
104
|
-
/** Storage key prefix */
|
|
105
|
-
storagePrefix: string;
|
|
106
|
-
/** Auto-save replays */
|
|
107
|
-
autoSave: boolean;
|
|
108
|
-
/** Max stored replays */
|
|
109
|
-
maxStoredReplays: number;
|
|
110
|
-
}
|
|
111
|
-
export declare const DEFAULT_REPLAY_CONFIG: ReplayConfig;
|
|
112
|
-
export interface ReplayStateProvider {
|
|
113
|
-
getEntities(): EntityState[];
|
|
114
|
-
setEntities(entities: EntityState[]): void;
|
|
115
|
-
getCustomState(): Record<string, unknown>;
|
|
116
|
-
setCustomState(state: Record<string, unknown>): void;
|
|
117
|
-
}
|
|
118
|
-
export declare class NiceReplay {
|
|
119
|
-
private config;
|
|
120
|
-
private isRecording;
|
|
121
|
-
private recordingStartTime;
|
|
122
|
-
private recordedFrames;
|
|
123
|
-
private recordedSnapshots;
|
|
124
|
-
private currentRecordingMetadata?;
|
|
125
|
-
private pendingInputs;
|
|
126
|
-
private pendingEvents;
|
|
127
|
-
private frameAccumulator;
|
|
128
|
-
private currentFrame;
|
|
129
|
-
private playbackState;
|
|
130
|
-
private loadedReplay?;
|
|
131
|
-
private playbackFrame;
|
|
132
|
-
private playbackTime;
|
|
133
|
-
private playbackSpeed;
|
|
134
|
-
private playbackAccumulator;
|
|
135
|
-
private stateProvider?;
|
|
136
|
-
private idCounter;
|
|
137
|
-
private eventListeners;
|
|
138
|
-
constructor(config?: Partial<ReplayConfig>);
|
|
139
|
-
on(event: ReplayEventType, callback: ReplayEventCallback): () => void;
|
|
140
|
-
private emit;
|
|
141
|
-
setStateProvider(provider: ReplayStateProvider): void;
|
|
142
|
-
startRecording(metadata?: Partial<ReplayMetadata>): ReplayId;
|
|
143
|
-
recordFrame(deltaTime: number): void;
|
|
144
|
-
recordInput(event: Omit<InputEvent, 'timestamp' | 'frame'>): void;
|
|
145
|
-
recordEvent(type: string, data: unknown): void;
|
|
146
|
-
private createSnapshot;
|
|
147
|
-
stopRecording(): ReplayData | null;
|
|
148
|
-
isCurrentlyRecording(): boolean;
|
|
149
|
-
getRecordingDuration(): number;
|
|
150
|
-
getRecordedFrameCount(): number;
|
|
151
|
-
loadReplay(replay: ReplayData): void;
|
|
152
|
-
startPlayback(fromFrame?: number): void;
|
|
153
|
-
pausePlayback(): void;
|
|
154
|
-
resumePlayback(): void;
|
|
155
|
-
stopPlayback(): void;
|
|
156
|
-
updatePlayback(deltaTime: number): void;
|
|
157
|
-
private applyFrame;
|
|
158
|
-
private applyNearestSnapshot;
|
|
159
|
-
seek(frameNumber: number): void;
|
|
160
|
-
seekToTime(timeSeconds: number): void;
|
|
161
|
-
setPlaybackSpeed(speed: number): void;
|
|
162
|
-
getPlaybackInfo(): PlaybackInfo;
|
|
163
|
-
getCurrentFrame(): ReplayFrame | undefined;
|
|
164
|
-
getFrameAt(frameNumber: number): ReplayFrame | undefined;
|
|
165
|
-
getInputsInRange(startFrame: number, endFrame: number): InputEvent[];
|
|
166
|
-
exportReplay(replay?: ReplayData): string;
|
|
167
|
-
importReplay(data: string): ReplayData | null;
|
|
168
|
-
private compress;
|
|
169
|
-
private decompress;
|
|
170
|
-
private isCompressed;
|
|
171
|
-
saveReplay(replay: ReplayData): boolean;
|
|
172
|
-
loadReplayFromStorage(replayId: ReplayId): ReplayData | null;
|
|
173
|
-
deleteReplay(replayId: ReplayId): void;
|
|
174
|
-
getStoredReplays(): ReplayMetadata[];
|
|
175
|
-
private updateReplayIndex;
|
|
176
|
-
private removeFromReplayIndex;
|
|
177
|
-
private trimStoredReplays;
|
|
178
|
-
destroy(): void;
|
|
179
|
-
}
|
|
180
|
-
export declare function createReplaySystem(config?: Partial<ReplayConfig>): NiceReplay;
|
|
@@ -1,151 +0,0 @@
|
|
|
1
|
-
import { EventEmitter } from 'events';
|
|
2
|
-
export type EntityId = string;
|
|
3
|
-
export type FactionId = string;
|
|
4
|
-
export type StandingLevel = 'hated' | 'hostile' | 'unfriendly' | 'neutral' | 'friendly' | 'honored' | 'revered' | 'exalted';
|
|
5
|
-
export interface StandingThreshold {
|
|
6
|
-
level: StandingLevel;
|
|
7
|
-
minValue: number;
|
|
8
|
-
maxValue: number;
|
|
9
|
-
color?: string;
|
|
10
|
-
}
|
|
11
|
-
export declare const DEFAULT_STANDING_THRESHOLDS: StandingThreshold[];
|
|
12
|
-
export interface FactionPerk {
|
|
13
|
-
id: string;
|
|
14
|
-
name: string;
|
|
15
|
-
description: string;
|
|
16
|
-
requiredStanding: StandingLevel;
|
|
17
|
-
type: 'discount' | 'access' | 'buff' | 'item' | 'quest' | 'title';
|
|
18
|
-
value?: number;
|
|
19
|
-
metadata?: Record<string, unknown>;
|
|
20
|
-
}
|
|
21
|
-
export interface FactionPenalty {
|
|
22
|
-
standingLevel: StandingLevel;
|
|
23
|
-
type: 'attack-on-sight' | 'no-service' | 'price-increase' | 'bounty';
|
|
24
|
-
value?: number;
|
|
25
|
-
}
|
|
26
|
-
export interface Faction {
|
|
27
|
-
id: FactionId;
|
|
28
|
-
name: string;
|
|
29
|
-
description: string;
|
|
30
|
-
icon?: string;
|
|
31
|
-
color?: string;
|
|
32
|
-
isHidden?: boolean;
|
|
33
|
-
defaultStanding: number;
|
|
34
|
-
standingCap: number;
|
|
35
|
-
standingFloor: number;
|
|
36
|
-
relationships: Map<FactionId, number>;
|
|
37
|
-
perks: FactionPerk[];
|
|
38
|
-
penalties: FactionPenalty[];
|
|
39
|
-
parentFaction?: FactionId;
|
|
40
|
-
childFactions?: FactionId[];
|
|
41
|
-
tags: string[];
|
|
42
|
-
}
|
|
43
|
-
export interface ReputationEntry {
|
|
44
|
-
factionId: FactionId;
|
|
45
|
-
currentValue: number;
|
|
46
|
-
standingLevel: StandingLevel;
|
|
47
|
-
lifetimeGained: number;
|
|
48
|
-
lifetimeLost: number;
|
|
49
|
-
lastChange: number;
|
|
50
|
-
lastChangeAmount: number;
|
|
51
|
-
progressToNext: number;
|
|
52
|
-
totalToNext: number;
|
|
53
|
-
unlockedPerks: Set<string>;
|
|
54
|
-
activeQuests: string[];
|
|
55
|
-
}
|
|
56
|
-
export interface EntityReputation {
|
|
57
|
-
entityId: EntityId;
|
|
58
|
-
reputations: Map<FactionId, ReputationEntry>;
|
|
59
|
-
titles: string[];
|
|
60
|
-
globalModifier: number;
|
|
61
|
-
}
|
|
62
|
-
export interface ReputationAction {
|
|
63
|
-
id: string;
|
|
64
|
-
name: string;
|
|
65
|
-
factionId: FactionId;
|
|
66
|
-
baseChange: number;
|
|
67
|
-
repeatable: boolean;
|
|
68
|
-
cooldown?: number;
|
|
69
|
-
maxRepeats?: number;
|
|
70
|
-
diminishingReturns?: number;
|
|
71
|
-
spilloverFactions?: {
|
|
72
|
-
factionId: FactionId;
|
|
73
|
-
ratio: number;
|
|
74
|
-
}[];
|
|
75
|
-
}
|
|
76
|
-
export type ReputationEventType = 'reputation-changed' | 'standing-changed' | 'perk-unlocked' | 'perk-lost' | 'penalty-applied' | 'penalty-removed' | 'title-earned' | 'faction-discovered';
|
|
77
|
-
export interface ReputationEvent {
|
|
78
|
-
type: ReputationEventType;
|
|
79
|
-
entityId: EntityId;
|
|
80
|
-
factionId?: FactionId;
|
|
81
|
-
data?: Record<string, unknown>;
|
|
82
|
-
}
|
|
83
|
-
export interface ReputationSystemConfig {
|
|
84
|
-
standingThresholds?: StandingThreshold[];
|
|
85
|
-
decayEnabled?: boolean;
|
|
86
|
-
decayRate?: number;
|
|
87
|
-
decayTowardsNeutral?: boolean;
|
|
88
|
-
spilloverEnabled?: boolean;
|
|
89
|
-
spilloverRatio?: number;
|
|
90
|
-
diminishingReturnsEnabled?: boolean;
|
|
91
|
-
bonusModifierPerLevel?: number;
|
|
92
|
-
}
|
|
93
|
-
export declare const DEFAULT_REPUTATION_CONFIG: ReputationSystemConfig;
|
|
94
|
-
export declare class NiceReputation extends EventEmitter {
|
|
95
|
-
private factions;
|
|
96
|
-
private entities;
|
|
97
|
-
private actions;
|
|
98
|
-
private actionHistory;
|
|
99
|
-
private config;
|
|
100
|
-
constructor(config?: Partial<ReputationSystemConfig>);
|
|
101
|
-
registerFaction(faction: Faction): void;
|
|
102
|
-
getFaction(id: FactionId): Faction | undefined;
|
|
103
|
-
getAllFactions(): Faction[];
|
|
104
|
-
getVisibleFactions(): Faction[];
|
|
105
|
-
setFactionRelationship(factionA: FactionId, factionB: FactionId, value: number): void;
|
|
106
|
-
getFactionRelationship(factionA: FactionId, factionB: FactionId): number;
|
|
107
|
-
registerEntity(entityId: EntityId): void;
|
|
108
|
-
getEntityReputation(entityId: EntityId): EntityReputation | undefined;
|
|
109
|
-
discoverFaction(entityId: EntityId, factionId: FactionId): void;
|
|
110
|
-
modifyReputation(entityId: EntityId, factionId: FactionId, amount: number, options?: {
|
|
111
|
-
bypassCap?: boolean;
|
|
112
|
-
noSpillover?: boolean;
|
|
113
|
-
source?: string;
|
|
114
|
-
}): number;
|
|
115
|
-
private applySpillover;
|
|
116
|
-
private handleStandingChange;
|
|
117
|
-
getStandingLevel(value: number): StandingLevel;
|
|
118
|
-
private updateProgressToNext;
|
|
119
|
-
getReputation(entityId: EntityId, factionId: FactionId): ReputationEntry | undefined;
|
|
120
|
-
getStanding(entityId: EntityId, factionId: FactionId): StandingLevel;
|
|
121
|
-
private checkPerks;
|
|
122
|
-
hasUnlockedPerk(entityId: EntityId, factionId: FactionId, perkId: string): boolean;
|
|
123
|
-
getUnlockedPerks(entityId: EntityId, factionId: FactionId): FactionPerk[];
|
|
124
|
-
private checkPenalties;
|
|
125
|
-
getActivePenalties(entityId: EntityId, factionId: FactionId): FactionPenalty[];
|
|
126
|
-
isHostile(entityId: EntityId, factionId: FactionId): boolean;
|
|
127
|
-
registerAction(action: ReputationAction): void;
|
|
128
|
-
performAction(entityId: EntityId, actionId: string): boolean;
|
|
129
|
-
grantTitle(entityId: EntityId, title: string): void;
|
|
130
|
-
hasTitle(entityId: EntityId, title: string): boolean;
|
|
131
|
-
getTitles(entityId: EntityId): string[];
|
|
132
|
-
update(deltaTime: number): void;
|
|
133
|
-
getHighestStandingFaction(entityId: EntityId): {
|
|
134
|
-
factionId: FactionId;
|
|
135
|
-
value: number;
|
|
136
|
-
} | null;
|
|
137
|
-
getLowestStandingFaction(entityId: EntityId): {
|
|
138
|
-
factionId: FactionId;
|
|
139
|
-
value: number;
|
|
140
|
-
} | null;
|
|
141
|
-
getFactionsByStanding(entityId: EntityId, standing: StandingLevel): FactionId[];
|
|
142
|
-
getAlliableFactions(entityId: EntityId): FactionId[];
|
|
143
|
-
getHostileFactions(entityId: EntityId): FactionId[];
|
|
144
|
-
}
|
|
145
|
-
export declare function createReputationSystem(config?: Partial<ReputationSystemConfig>): NiceReputation;
|
|
146
|
-
export declare function defineFaction(options: Omit<Faction, 'relationships'> & {
|
|
147
|
-
relationships?: [FactionId, number][];
|
|
148
|
-
}): Faction;
|
|
149
|
-
export declare function defineReputationAction(options: ReputationAction): ReputationAction;
|
|
150
|
-
export declare function defineFactionPerk(options: FactionPerk): FactionPerk;
|
|
151
|
-
export default NiceReputation;
|
|
@@ -1,200 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* NiceResource - Game Engine Resource Management System
|
|
3
|
-
*
|
|
4
|
-
* Comprehensive asset/resource management supporting:
|
|
5
|
-
* - Asset loading (images, audio, JSON, text, binary)
|
|
6
|
-
* - Asset caching and memory management
|
|
7
|
-
* - Loading queues with priorities
|
|
8
|
-
* - Asset bundles and packages
|
|
9
|
-
* - Reference counting
|
|
10
|
-
* - Asset streaming
|
|
11
|
-
* - Preloading and lazy loading
|
|
12
|
-
* - Asset dependencies
|
|
13
|
-
* - Memory budget management
|
|
14
|
-
*
|
|
15
|
-
* @packageDocumentation
|
|
16
|
-
*/
|
|
17
|
-
import { EventEmitter } from 'events';
|
|
18
|
-
export type AssetId = string;
|
|
19
|
-
export type BundleId = string;
|
|
20
|
-
export type LoaderId = string;
|
|
21
|
-
export type AssetType = 'image' | 'audio' | 'json' | 'text' | 'binary' | 'spritesheet' | 'tilemap' | 'font' | 'shader' | 'model' | 'video' | 'custom';
|
|
22
|
-
export type AssetState = 'unloaded' | 'queued' | 'loading' | 'loaded' | 'error' | 'unloading';
|
|
23
|
-
export type LoadPriority = 'critical' | 'high' | 'normal' | 'low' | 'background';
|
|
24
|
-
export interface AssetMetadata {
|
|
25
|
-
id: AssetId;
|
|
26
|
-
url: string;
|
|
27
|
-
type: AssetType;
|
|
28
|
-
size?: number;
|
|
29
|
-
mimeType?: string;
|
|
30
|
-
lastModified?: number;
|
|
31
|
-
checksum?: string;
|
|
32
|
-
tags?: string[];
|
|
33
|
-
dependencies?: AssetId[];
|
|
34
|
-
userData?: Record<string, unknown>;
|
|
35
|
-
}
|
|
36
|
-
export interface Asset<T = unknown> extends AssetMetadata {
|
|
37
|
-
state: AssetState;
|
|
38
|
-
data?: T;
|
|
39
|
-
error?: Error;
|
|
40
|
-
refCount: number;
|
|
41
|
-
loadedAt?: number;
|
|
42
|
-
accessedAt?: number;
|
|
43
|
-
loadTime?: number;
|
|
44
|
-
priority: LoadPriority;
|
|
45
|
-
}
|
|
46
|
-
export interface AssetBundle {
|
|
47
|
-
id: BundleId;
|
|
48
|
-
name: string;
|
|
49
|
-
assets: AssetId[];
|
|
50
|
-
dependencies?: BundleId[];
|
|
51
|
-
priority: LoadPriority;
|
|
52
|
-
preload?: boolean;
|
|
53
|
-
persistent?: boolean;
|
|
54
|
-
progress?: number;
|
|
55
|
-
state: AssetState;
|
|
56
|
-
}
|
|
57
|
-
export interface AssetLoaderOptions {
|
|
58
|
-
timeout?: number;
|
|
59
|
-
retries?: number;
|
|
60
|
-
retryDelay?: number;
|
|
61
|
-
crossOrigin?: string;
|
|
62
|
-
credentials?: RequestCredentials;
|
|
63
|
-
headers?: Record<string, string>;
|
|
64
|
-
}
|
|
65
|
-
export type LoaderFunction<T = unknown> = (url: string, options?: AssetLoaderOptions) => Promise<T>;
|
|
66
|
-
export interface AssetLoader<T = unknown> {
|
|
67
|
-
id: LoaderId;
|
|
68
|
-
types: AssetType[];
|
|
69
|
-
extensions: string[];
|
|
70
|
-
load: LoaderFunction<T>;
|
|
71
|
-
unload?: (asset: Asset<T>) => void;
|
|
72
|
-
}
|
|
73
|
-
export interface LoadingProgress {
|
|
74
|
-
total: number;
|
|
75
|
-
loaded: number;
|
|
76
|
-
failed: number;
|
|
77
|
-
current?: AssetId;
|
|
78
|
-
percentage: number;
|
|
79
|
-
bytesTotal?: number;
|
|
80
|
-
bytesLoaded?: number;
|
|
81
|
-
}
|
|
82
|
-
export type ResourceEventType = 'asset-queued' | 'asset-loading' | 'asset-loaded' | 'asset-error' | 'asset-unloaded' | 'bundle-loading' | 'bundle-loaded' | 'bundle-error' | 'progress' | 'memory-warning' | 'memory-critical';
|
|
83
|
-
export interface ResourceEvent {
|
|
84
|
-
type: ResourceEventType;
|
|
85
|
-
assetId?: AssetId;
|
|
86
|
-
bundleId?: BundleId;
|
|
87
|
-
progress?: LoadingProgress;
|
|
88
|
-
error?: Error;
|
|
89
|
-
memoryUsage?: number;
|
|
90
|
-
timestamp: number;
|
|
91
|
-
}
|
|
92
|
-
export type ResourceEventCallback = (event: ResourceEvent) => void;
|
|
93
|
-
export interface ResourceConfig {
|
|
94
|
-
maxConcurrentLoads: number;
|
|
95
|
-
defaultTimeout: number;
|
|
96
|
-
defaultRetries: number;
|
|
97
|
-
retryDelay: number;
|
|
98
|
-
memoryBudget: number;
|
|
99
|
-
lowMemoryThreshold: number;
|
|
100
|
-
criticalMemoryThreshold: number;
|
|
101
|
-
enableCaching: boolean;
|
|
102
|
-
cacheExpireTime: number;
|
|
103
|
-
autoUnloadUnused: boolean;
|
|
104
|
-
unusedAssetTimeout: number;
|
|
105
|
-
}
|
|
106
|
-
export declare const DEFAULT_RESOURCE_CONFIG: ResourceConfig;
|
|
107
|
-
export declare class NiceResource extends EventEmitter {
|
|
108
|
-
private config;
|
|
109
|
-
private assets;
|
|
110
|
-
private bundles;
|
|
111
|
-
private loaders;
|
|
112
|
-
private typeToLoader;
|
|
113
|
-
private extensionToType;
|
|
114
|
-
private loadQueue;
|
|
115
|
-
private activeLoads;
|
|
116
|
-
private loadPromises;
|
|
117
|
-
private memoryUsage;
|
|
118
|
-
private destroyed;
|
|
119
|
-
constructor(config?: Partial<ResourceConfig>);
|
|
120
|
-
private registerDefaultLoaders;
|
|
121
|
-
private setupExtensionMappings;
|
|
122
|
-
registerLoader<T = unknown>(loader: AssetLoader<T>): void;
|
|
123
|
-
unregisterLoader(loaderId: LoaderId): void;
|
|
124
|
-
register(id: AssetId, url: string, type?: AssetType, metadata?: Partial<AssetMetadata>): void;
|
|
125
|
-
private inferType;
|
|
126
|
-
unregister(id: AssetId): void;
|
|
127
|
-
load<T = unknown>(id: AssetId, options?: AssetLoaderOptions): Promise<T>;
|
|
128
|
-
private loadAsset;
|
|
129
|
-
private loadWithTimeout;
|
|
130
|
-
private delay;
|
|
131
|
-
queue(id: AssetId, priority?: LoadPriority): void;
|
|
132
|
-
private sortQueue;
|
|
133
|
-
private processQueue;
|
|
134
|
-
private emitProgress;
|
|
135
|
-
private getLoadedCount;
|
|
136
|
-
private getFailedCount;
|
|
137
|
-
get<T = unknown>(id: AssetId): T | undefined;
|
|
138
|
-
getAsset(id: AssetId): Asset | undefined;
|
|
139
|
-
isLoaded(id: AssetId): boolean;
|
|
140
|
-
getState(id: AssetId): AssetState | undefined;
|
|
141
|
-
unload(id: AssetId): void;
|
|
142
|
-
release(id: AssetId): void;
|
|
143
|
-
registerBundle(bundle: AssetBundle): void;
|
|
144
|
-
loadBundle(bundleId: BundleId): Promise<void>;
|
|
145
|
-
unloadBundle(bundleId: BundleId, force?: boolean): void;
|
|
146
|
-
getBundleProgress(bundleId: BundleId): number;
|
|
147
|
-
isBundleLoaded(bundleId: BundleId): boolean;
|
|
148
|
-
private checkMemoryUsage;
|
|
149
|
-
unloadUnused(maxAge?: number): number;
|
|
150
|
-
getMemoryUsage(): number;
|
|
151
|
-
getMemoryBudget(): number;
|
|
152
|
-
setMemoryBudget(budget: number): void;
|
|
153
|
-
preload(ids: AssetId[], onProgress?: (progress: LoadingProgress) => void): Promise<void>;
|
|
154
|
-
preloadBundles(bundleIds: BundleId[], onProgress?: (progress: LoadingProgress) => void): Promise<void>;
|
|
155
|
-
getAssetsByType(type: AssetType): Asset[];
|
|
156
|
-
getAssetsByTag(tag: string): Asset[];
|
|
157
|
-
getAssetsByState(state: AssetState): Asset[];
|
|
158
|
-
getAllAssets(): Asset[];
|
|
159
|
-
getAllBundles(): AssetBundle[];
|
|
160
|
-
getStats(): {
|
|
161
|
-
totalAssets: number;
|
|
162
|
-
loadedAssets: number;
|
|
163
|
-
queuedAssets: number;
|
|
164
|
-
loadingAssets: number;
|
|
165
|
-
failedAssets: number;
|
|
166
|
-
totalBundles: number;
|
|
167
|
-
loadedBundles: number;
|
|
168
|
-
memoryUsage: number;
|
|
169
|
-
memoryBudget: number;
|
|
170
|
-
registeredLoaders: number;
|
|
171
|
-
};
|
|
172
|
-
clear(): void;
|
|
173
|
-
update(): void;
|
|
174
|
-
on(event: 'resource', callback: ResourceEventCallback): this;
|
|
175
|
-
off(event: 'resource', callback: ResourceEventCallback): this;
|
|
176
|
-
destroy(): void;
|
|
177
|
-
}
|
|
178
|
-
export declare function createResourceManager(config?: Partial<ResourceConfig>): NiceResource;
|
|
179
|
-
export interface AssetManifest {
|
|
180
|
-
version: string;
|
|
181
|
-
baseUrl?: string;
|
|
182
|
-
assets: Array<{
|
|
183
|
-
id: AssetId;
|
|
184
|
-
url: string;
|
|
185
|
-
type?: AssetType;
|
|
186
|
-
size?: number;
|
|
187
|
-
tags?: string[];
|
|
188
|
-
dependencies?: AssetId[];
|
|
189
|
-
}>;
|
|
190
|
-
bundles?: Array<{
|
|
191
|
-
id: BundleId;
|
|
192
|
-
name: string;
|
|
193
|
-
assets: AssetId[];
|
|
194
|
-
dependencies?: BundleId[];
|
|
195
|
-
preload?: boolean;
|
|
196
|
-
persistent?: boolean;
|
|
197
|
-
}>;
|
|
198
|
-
}
|
|
199
|
-
export declare function loadManifest(resources: NiceResource, manifest: AssetManifest): void;
|
|
200
|
-
export declare function loadManifestFromUrl(resources: NiceResource, manifestUrl: string): Promise<AssetManifest>;
|
|
@@ -1,148 +0,0 @@
|
|
|
1
|
-
export type NoteType = 'tap' | 'hold' | 'slide' | 'swipe' | 'flick';
|
|
2
|
-
export type HitResult = 'perfect' | 'great' | 'good' | 'miss' | 'early' | 'late';
|
|
3
|
-
export type NoteColor = 'red' | 'blue' | 'green' | 'yellow' | 'pink' | 'purple';
|
|
4
|
-
export interface TimingWindow {
|
|
5
|
-
perfect: number;
|
|
6
|
-
great: number;
|
|
7
|
-
good: number;
|
|
8
|
-
}
|
|
9
|
-
export declare const DEFAULT_TIMING_WINDOWS: TimingWindow;
|
|
10
|
-
export interface Note {
|
|
11
|
-
id: string;
|
|
12
|
-
type: NoteType;
|
|
13
|
-
track: number;
|
|
14
|
-
beatTime: number;
|
|
15
|
-
actualTime: number;
|
|
16
|
-
duration?: number;
|
|
17
|
-
color?: NoteColor;
|
|
18
|
-
size?: number;
|
|
19
|
-
isHit: boolean;
|
|
20
|
-
result: HitResult | null;
|
|
21
|
-
hitTime: number | null;
|
|
22
|
-
isActive: boolean;
|
|
23
|
-
holdProgress?: number;
|
|
24
|
-
metadata?: Record<string, unknown>;
|
|
25
|
-
}
|
|
26
|
-
export interface Chart {
|
|
27
|
-
id: string;
|
|
28
|
-
name: string;
|
|
29
|
-
artist: string;
|
|
30
|
-
difficulty: number;
|
|
31
|
-
level: number;
|
|
32
|
-
bpm: number;
|
|
33
|
-
offset: number;
|
|
34
|
-
bpmChanges?: Array<{
|
|
35
|
-
beat: number;
|
|
36
|
-
bpm: number;
|
|
37
|
-
}>;
|
|
38
|
-
notes: Note[];
|
|
39
|
-
trackCount: number;
|
|
40
|
-
duration: number;
|
|
41
|
-
noteCount: number;
|
|
42
|
-
audioUrl?: string;
|
|
43
|
-
coverUrl?: string;
|
|
44
|
-
}
|
|
45
|
-
export interface RhythmScore {
|
|
46
|
-
playerId: string;
|
|
47
|
-
chartId: string;
|
|
48
|
-
perfectCount: number;
|
|
49
|
-
greatCount: number;
|
|
50
|
-
goodCount: number;
|
|
51
|
-
missCount: number;
|
|
52
|
-
earlyCount: number;
|
|
53
|
-
lateCount: number;
|
|
54
|
-
currentCombo: number;
|
|
55
|
-
maxCombo: number;
|
|
56
|
-
score: number;
|
|
57
|
-
maxScore: number;
|
|
58
|
-
accuracy: number;
|
|
59
|
-
notesHit: number;
|
|
60
|
-
totalNotes: number;
|
|
61
|
-
avgTiming: number;
|
|
62
|
-
perfectRate: number;
|
|
63
|
-
}
|
|
64
|
-
export type RhythmEventType = 'note-spawn' | 'note-hit' | 'note-miss' | 'hold-start' | 'hold-tick' | 'hold-end' | 'combo-break' | 'combo-milestone' | 'beat' | 'song-start' | 'song-end' | 'pause' | 'resume';
|
|
65
|
-
export interface RhythmEvent {
|
|
66
|
-
type: RhythmEventType;
|
|
67
|
-
timestamp: number;
|
|
68
|
-
playerId?: string;
|
|
69
|
-
data: unknown;
|
|
70
|
-
}
|
|
71
|
-
export type RhythmEventCallback = (event: RhythmEvent) => void;
|
|
72
|
-
export interface RhythmConfig {
|
|
73
|
-
/** Timing windows (ms) */
|
|
74
|
-
timingWindows: TimingWindow;
|
|
75
|
-
/** Score values per hit result */
|
|
76
|
-
scoreValues: Record<HitResult, number>;
|
|
77
|
-
/** Note speed multiplier */
|
|
78
|
-
noteSpeed: number;
|
|
79
|
-
/** Approach time (ms) */
|
|
80
|
-
approachTime: number;
|
|
81
|
-
/** Combo milestones */
|
|
82
|
-
comboMilestones: number[];
|
|
83
|
-
/** Max score per note */
|
|
84
|
-
maxNoteScore: number;
|
|
85
|
-
/** Enable audio sync */
|
|
86
|
-
audioSync: boolean;
|
|
87
|
-
/** Input latency compensation (ms) */
|
|
88
|
-
inputLatency: number;
|
|
89
|
-
}
|
|
90
|
-
export declare const DEFAULT_RHYTHM_CONFIG: RhythmConfig;
|
|
91
|
-
export declare class NiceRhythm {
|
|
92
|
-
private config;
|
|
93
|
-
private charts;
|
|
94
|
-
private activeChart;
|
|
95
|
-
private activeNotes;
|
|
96
|
-
private scores;
|
|
97
|
-
private currentTime;
|
|
98
|
-
private currentBeat;
|
|
99
|
-
private lastBeat;
|
|
100
|
-
private isPlaying;
|
|
101
|
-
private isPaused;
|
|
102
|
-
private startTime;
|
|
103
|
-
private eventListeners;
|
|
104
|
-
private nextId;
|
|
105
|
-
constructor(config?: Partial<RhythmConfig>);
|
|
106
|
-
on(event: RhythmEventType, callback: RhythmEventCallback): () => void;
|
|
107
|
-
private emit;
|
|
108
|
-
loadChart(chart: Omit<Chart, 'notes'> & {
|
|
109
|
-
notes: Omit<Note, 'id' | 'isHit' | 'result' | 'hitTime' | 'isActive'>[];
|
|
110
|
-
}): string;
|
|
111
|
-
getChart(id: string): Chart | undefined;
|
|
112
|
-
private beatToTime;
|
|
113
|
-
private timeToBeat;
|
|
114
|
-
startChart(chartId: string, playerId: string): boolean;
|
|
115
|
-
pause(): void;
|
|
116
|
-
resume(): void;
|
|
117
|
-
stop(): void;
|
|
118
|
-
hit(playerId: string, track: number): HitResult | null;
|
|
119
|
-
holdStart(playerId: string, track: number): boolean;
|
|
120
|
-
holdRelease(playerId: string, track: number): boolean;
|
|
121
|
-
private evaluateHit;
|
|
122
|
-
private updateScore;
|
|
123
|
-
update(deltaTime: number): void;
|
|
124
|
-
private updateNotes;
|
|
125
|
-
private endSong;
|
|
126
|
-
getScore(playerId: string): RhythmScore | undefined;
|
|
127
|
-
getCurrentTime(): number;
|
|
128
|
-
getCurrentBeat(): number;
|
|
129
|
-
getActiveNotes(): Note[];
|
|
130
|
-
getUpcomingNotes(lookahead: number): Note[];
|
|
131
|
-
getNoteProgress(noteId: string): number;
|
|
132
|
-
getCombo(playerId: string): number;
|
|
133
|
-
getAccuracy(playerId: string): number;
|
|
134
|
-
isActive(): boolean;
|
|
135
|
-
getProgress(): number;
|
|
136
|
-
generateChart(options: {
|
|
137
|
-
id: string;
|
|
138
|
-
name: string;
|
|
139
|
-
artist: string;
|
|
140
|
-
bpm: number;
|
|
141
|
-
duration: number;
|
|
142
|
-
trackCount: number;
|
|
143
|
-
density: number;
|
|
144
|
-
difficulty: number;
|
|
145
|
-
}): string;
|
|
146
|
-
destroy(): void;
|
|
147
|
-
}
|
|
148
|
-
export declare function createRhythmSystem(config?: Partial<RhythmConfig>): NiceRhythm;
|