@nice2dev/game-engine 1.3.13 → 1.3.15
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,96 +0,0 @@
|
|
|
1
|
-
export type PropertyPath = string;
|
|
2
|
-
export type BindingId = string;
|
|
3
|
-
export interface ObservableChange<T = unknown> {
|
|
4
|
-
path: PropertyPath;
|
|
5
|
-
oldValue: T;
|
|
6
|
-
newValue: T;
|
|
7
|
-
timestamp: number;
|
|
8
|
-
}
|
|
9
|
-
export type ChangeCallback<T = unknown> = (change: ObservableChange<T>) => void;
|
|
10
|
-
export type ComputedGetter<T> = () => T;
|
|
11
|
-
export type WatchCallback<T> = (newValue: T, oldValue: T) => void;
|
|
12
|
-
export type Transformer<T, U> = (value: T) => U;
|
|
13
|
-
export declare class Observable<T extends object> {
|
|
14
|
-
private proxy;
|
|
15
|
-
private callbacks;
|
|
16
|
-
private deepCallbacks;
|
|
17
|
-
private batchedChanges;
|
|
18
|
-
private isBatching;
|
|
19
|
-
constructor(target: T);
|
|
20
|
-
private createProxy;
|
|
21
|
-
private notifyChange;
|
|
22
|
-
get value(): T;
|
|
23
|
-
watch(path: PropertyPath, callback: ChangeCallback): () => void;
|
|
24
|
-
watchDeep(callback: ChangeCallback): () => void;
|
|
25
|
-
batch(fn: () => void): void;
|
|
26
|
-
get<V>(path: PropertyPath): V | undefined;
|
|
27
|
-
set(path: PropertyPath, value: unknown): void;
|
|
28
|
-
}
|
|
29
|
-
export declare class Computed<T> {
|
|
30
|
-
private getter;
|
|
31
|
-
private cachedValue;
|
|
32
|
-
private isDirty;
|
|
33
|
-
private dependencies;
|
|
34
|
-
private callbacks;
|
|
35
|
-
constructor(getter: ComputedGetter<T>, dependencies?: Observable<object>[]);
|
|
36
|
-
addDependency(observable: Observable<object>): void;
|
|
37
|
-
private invalidate;
|
|
38
|
-
get(): T;
|
|
39
|
-
watch(callback: WatchCallback<T>): () => void;
|
|
40
|
-
}
|
|
41
|
-
export type BindingMode = 'one-way' | 'two-way' | 'one-time';
|
|
42
|
-
export interface BindingConfig<S = unknown, T = unknown> {
|
|
43
|
-
source: Observable<object>;
|
|
44
|
-
sourcePath: PropertyPath;
|
|
45
|
-
target: Observable<object>;
|
|
46
|
-
targetPath: PropertyPath;
|
|
47
|
-
mode: BindingMode;
|
|
48
|
-
transformer?: Transformer<S, T>;
|
|
49
|
-
reverseTransformer?: Transformer<T, S>;
|
|
50
|
-
fallback?: T;
|
|
51
|
-
}
|
|
52
|
-
export interface BindingState {
|
|
53
|
-
id: BindingId;
|
|
54
|
-
config: BindingConfig;
|
|
55
|
-
active: boolean;
|
|
56
|
-
lastSync: number;
|
|
57
|
-
unsubscribe?: () => void;
|
|
58
|
-
reverseUnsubscribe?: () => void;
|
|
59
|
-
}
|
|
60
|
-
export type BindingEventType = 'binding-created' | 'binding-updated' | 'binding-removed' | 'property-changed' | 'computed-updated' | 'error';
|
|
61
|
-
export interface BindingEvent {
|
|
62
|
-
type: BindingEventType;
|
|
63
|
-
timestamp: number;
|
|
64
|
-
data: unknown;
|
|
65
|
-
}
|
|
66
|
-
export type BindingEventCallback = (event: BindingEvent) => void;
|
|
67
|
-
export declare class NiceBinding {
|
|
68
|
-
private bindings;
|
|
69
|
-
private computeds;
|
|
70
|
-
private eventListeners;
|
|
71
|
-
private idCounter;
|
|
72
|
-
on(event: BindingEventType, callback: BindingEventCallback): () => void;
|
|
73
|
-
private emit;
|
|
74
|
-
observable<T extends object>(target: T): Observable<T>;
|
|
75
|
-
computed<T>(getter: ComputedGetter<T>, dependencies?: Observable<object>[]): Computed<T>;
|
|
76
|
-
bind<S = unknown, T = unknown>(config: BindingConfig<S, T>): BindingId;
|
|
77
|
-
private syncBinding;
|
|
78
|
-
private reverseSyncBinding;
|
|
79
|
-
unbind(id: BindingId): boolean;
|
|
80
|
-
pauseBinding(id: BindingId): void;
|
|
81
|
-
resumeBinding(id: BindingId): void;
|
|
82
|
-
forceSync(id: BindingId): void;
|
|
83
|
-
oneWay<S = unknown, T = unknown>(source: Observable<object>, sourcePath: PropertyPath, target: Observable<object>, targetPath: PropertyPath, transformer?: Transformer<S, T>): BindingId;
|
|
84
|
-
twoWay<_T = unknown>(source: Observable<object>, sourcePath: PropertyPath, target: Observable<object>, targetPath: PropertyPath): BindingId;
|
|
85
|
-
registerComputed<T>(id: string, getter: ComputedGetter<T>, dependencies?: Observable<object>[]): Computed<T>;
|
|
86
|
-
getComputed<T>(id: string): Computed<T> | undefined;
|
|
87
|
-
getBinding(id: BindingId): BindingState | undefined;
|
|
88
|
-
getActiveBindings(): BindingState[];
|
|
89
|
-
getBindingsForSource(source: Observable<object>): BindingState[];
|
|
90
|
-
getBindingsForTarget(target: Observable<object>): BindingState[];
|
|
91
|
-
unbindAll(): void;
|
|
92
|
-
destroy(): void;
|
|
93
|
-
}
|
|
94
|
-
export declare function createBindingSystem(): NiceBinding;
|
|
95
|
-
export declare function reactive<T extends object>(target: T): Observable<T>;
|
|
96
|
-
export declare function watchEffect<T extends object>(observable: Observable<T>, effect: (value: T) => void | (() => void)): () => void;
|
|
@@ -1,221 +0,0 @@
|
|
|
1
|
-
export type RecipeId = string;
|
|
2
|
-
export type MaterialId = string;
|
|
3
|
-
export type UpgradeType = 'enhancement' | 'reforge' | 'upgrade' | 'augment' | 'temper';
|
|
4
|
-
export interface BlacksmithItem {
|
|
5
|
-
itemId: string;
|
|
6
|
-
name: string;
|
|
7
|
-
maxDurability: number;
|
|
8
|
-
currentDurability: number;
|
|
9
|
-
durabilityLossRate: number;
|
|
10
|
-
upgradeLevel: number;
|
|
11
|
-
maxUpgradeLevel: number;
|
|
12
|
-
enhancementLevel: number;
|
|
13
|
-
maxEnhancementLevel: number;
|
|
14
|
-
reforgeCount: number;
|
|
15
|
-
maxReforges: number;
|
|
16
|
-
baseStats: Map<string, number>;
|
|
17
|
-
bonusStats: Map<string, number>;
|
|
18
|
-
itemType: string;
|
|
19
|
-
rarity: 'common' | 'uncommon' | 'rare' | 'epic' | 'legendary';
|
|
20
|
-
itemLevel: number;
|
|
21
|
-
socketCount: number;
|
|
22
|
-
repairCount: number;
|
|
23
|
-
totalDurabilityRestored: number;
|
|
24
|
-
}
|
|
25
|
-
export interface RepairRecipe {
|
|
26
|
-
itemType: string;
|
|
27
|
-
costPerDurability: number;
|
|
28
|
-
materialsPerDurability?: Record<MaterialId, number>;
|
|
29
|
-
minLevel?: number;
|
|
30
|
-
}
|
|
31
|
-
export interface UpgradeRecipe {
|
|
32
|
-
id: RecipeId;
|
|
33
|
-
name: string;
|
|
34
|
-
description?: string;
|
|
35
|
-
type: UpgradeType;
|
|
36
|
-
itemTypes: string[];
|
|
37
|
-
minRarity?: string;
|
|
38
|
-
minItemLevel?: number;
|
|
39
|
-
fromLevel: number;
|
|
40
|
-
toLevel: number;
|
|
41
|
-
goldCost: number;
|
|
42
|
-
materials: Record<MaterialId, number>;
|
|
43
|
-
baseSuccessRate: number;
|
|
44
|
-
statIncrease: number;
|
|
45
|
-
statIncreasePercentage: boolean;
|
|
46
|
-
destroyOnFail: boolean;
|
|
47
|
-
downgradeOnFail: boolean;
|
|
48
|
-
durabilityLossOnFail: number;
|
|
49
|
-
bonusEffects?: UpgradeBonus[];
|
|
50
|
-
}
|
|
51
|
-
export interface UpgradeBonus {
|
|
52
|
-
level: number;
|
|
53
|
-
effect: 'stat_boost' | 'socket' | 'glow' | 'prefix' | 'suffix';
|
|
54
|
-
value?: number;
|
|
55
|
-
stat?: string;
|
|
56
|
-
name?: string;
|
|
57
|
-
}
|
|
58
|
-
export interface ReforgeRecipe {
|
|
59
|
-
id: RecipeId;
|
|
60
|
-
name: string;
|
|
61
|
-
itemTypes: string[];
|
|
62
|
-
minRarity?: string;
|
|
63
|
-
goldCost: number;
|
|
64
|
-
materials: Record<MaterialId, number>;
|
|
65
|
-
randomizeStats: boolean;
|
|
66
|
-
preserveEnhancement: boolean;
|
|
67
|
-
preserveSockets: boolean;
|
|
68
|
-
statRanges: Record<string, {
|
|
69
|
-
min: number;
|
|
70
|
-
max: number;
|
|
71
|
-
}>;
|
|
72
|
-
}
|
|
73
|
-
export interface SalvageRecipe {
|
|
74
|
-
itemType: string;
|
|
75
|
-
rarity: string;
|
|
76
|
-
baseMaterials: Record<MaterialId, number>;
|
|
77
|
-
levelMaterialBonus: number;
|
|
78
|
-
bonusMaterial?: MaterialId;
|
|
79
|
-
rareMaterialChance: number;
|
|
80
|
-
rareMaterials?: Record<MaterialId, number>;
|
|
81
|
-
}
|
|
82
|
-
export interface MaterialDefinition {
|
|
83
|
-
id: MaterialId;
|
|
84
|
-
name: string;
|
|
85
|
-
description?: string;
|
|
86
|
-
tier: number;
|
|
87
|
-
rarity: 'common' | 'uncommon' | 'rare' | 'epic' | 'legendary';
|
|
88
|
-
stackSize: number;
|
|
89
|
-
sellValue: number;
|
|
90
|
-
icon: string;
|
|
91
|
-
color?: string;
|
|
92
|
-
}
|
|
93
|
-
export interface PlayerBlacksmithData {
|
|
94
|
-
playerId: string;
|
|
95
|
-
materials: Map<MaterialId, number>;
|
|
96
|
-
blacksmithLevel: number;
|
|
97
|
-
blacksmithXP: number;
|
|
98
|
-
unlockedRecipes: Set<RecipeId>;
|
|
99
|
-
totalItemsRepaired: number;
|
|
100
|
-
totalItemsUpgraded: number;
|
|
101
|
-
totalItemsReforged: number;
|
|
102
|
-
totalItemsSalvaged: number;
|
|
103
|
-
upgradesSucceeded: number;
|
|
104
|
-
upgradesFailed: number;
|
|
105
|
-
longestUpgradeStreak: number;
|
|
106
|
-
currentUpgradeStreak: number;
|
|
107
|
-
}
|
|
108
|
-
export interface RepairResult {
|
|
109
|
-
success: boolean;
|
|
110
|
-
durabilityRestored: number;
|
|
111
|
-
goldSpent: number;
|
|
112
|
-
materialsUsed: Record<MaterialId, number>;
|
|
113
|
-
}
|
|
114
|
-
export interface UpgradeResult {
|
|
115
|
-
success: boolean;
|
|
116
|
-
item: BlacksmithItem;
|
|
117
|
-
fromLevel: number;
|
|
118
|
-
toLevel: number;
|
|
119
|
-
destroyed: boolean;
|
|
120
|
-
downgraded: boolean;
|
|
121
|
-
bonusUnlocked?: UpgradeBonus;
|
|
122
|
-
}
|
|
123
|
-
export interface ReforgeResult {
|
|
124
|
-
success: boolean;
|
|
125
|
-
item: BlacksmithItem;
|
|
126
|
-
oldStats: Map<string, number>;
|
|
127
|
-
newStats: Map<string, number>;
|
|
128
|
-
}
|
|
129
|
-
export interface SalvageResult {
|
|
130
|
-
success: boolean;
|
|
131
|
-
materialsObtained: Record<MaterialId, number>;
|
|
132
|
-
bonusMaterials: Record<MaterialId, number>;
|
|
133
|
-
}
|
|
134
|
-
export type BlacksmithEventType = 'item-repaired' | 'item-upgraded' | 'upgrade-failed' | 'item-reforged' | 'item-salvaged' | 'item-destroyed' | 'material-obtained' | 'recipe-unlocked' | 'blacksmith-level-up';
|
|
135
|
-
export interface BlacksmithEvent {
|
|
136
|
-
type: BlacksmithEventType;
|
|
137
|
-
timestamp: number;
|
|
138
|
-
data?: unknown;
|
|
139
|
-
}
|
|
140
|
-
export type BlacksmithEventCallback = (event: BlacksmithEvent) => void;
|
|
141
|
-
export interface BlacksmithConfig {
|
|
142
|
-
maxUpgradeLevel: number;
|
|
143
|
-
maxEnhancementLevel: number;
|
|
144
|
-
maxReforges: number;
|
|
145
|
-
baseRepairCostPerDurability: number;
|
|
146
|
-
successRateBonus: number;
|
|
147
|
-
xpPerRepair: number;
|
|
148
|
-
xpPerUpgrade: number;
|
|
149
|
-
xpPerLevel: number;
|
|
150
|
-
maxLevel: number;
|
|
151
|
-
storageKey: string;
|
|
152
|
-
}
|
|
153
|
-
export declare const DEFAULT_BLACKSMITH_CONFIG: BlacksmithConfig;
|
|
154
|
-
export declare class NiceBlacksmith {
|
|
155
|
-
private config;
|
|
156
|
-
private materials;
|
|
157
|
-
private upgradeRecipes;
|
|
158
|
-
private reforgeRecipes;
|
|
159
|
-
private salvageRecipes;
|
|
160
|
-
private repairRecipes;
|
|
161
|
-
private items;
|
|
162
|
-
private players;
|
|
163
|
-
private eventListeners;
|
|
164
|
-
constructor(config?: Partial<BlacksmithConfig>);
|
|
165
|
-
on(event: BlacksmithEventType, callback: BlacksmithEventCallback): () => void;
|
|
166
|
-
private emit;
|
|
167
|
-
registerMaterial(material: MaterialDefinition): void;
|
|
168
|
-
registerUpgradeRecipe(recipe: UpgradeRecipe): void;
|
|
169
|
-
registerReforgeRecipe(recipe: ReforgeRecipe): void;
|
|
170
|
-
registerSalvageRecipe(recipe: SalvageRecipe): void;
|
|
171
|
-
registerRepairRecipe(recipe: RepairRecipe): void;
|
|
172
|
-
getPlayer(playerId: string): PlayerBlacksmithData;
|
|
173
|
-
private createPlayerData;
|
|
174
|
-
registerItem(item: Omit<BlacksmithItem, 'bonusStats' | 'repairCount' | 'totalDurabilityRestored'>): BlacksmithItem;
|
|
175
|
-
getItem(itemId: string): BlacksmithItem | undefined;
|
|
176
|
-
addMaterial(playerId: string, materialId: MaterialId, count?: number): boolean;
|
|
177
|
-
removeMaterial(playerId: string, materialId: MaterialId, count?: number): boolean;
|
|
178
|
-
getMaterialCount(playerId: string, materialId: MaterialId): number;
|
|
179
|
-
hasMaterials(playerId: string, materials: Record<MaterialId, number>): boolean;
|
|
180
|
-
consumeMaterials(playerId: string, materials: Record<MaterialId, number>): boolean;
|
|
181
|
-
reduceDurability(itemId: string, amount?: number): number;
|
|
182
|
-
getDurabilityPercent(itemId: string): number;
|
|
183
|
-
isBroken(itemId: string): boolean;
|
|
184
|
-
getRepairCost(itemId: string): {
|
|
185
|
-
gold: number;
|
|
186
|
-
materials: Record<MaterialId, number>;
|
|
187
|
-
};
|
|
188
|
-
canRepair(playerId: string, itemId: string, gold: number): boolean;
|
|
189
|
-
repair(playerId: string, itemId: string, gold: number): RepairResult;
|
|
190
|
-
getAvailableUpgrades(itemId: string): UpgradeRecipe[];
|
|
191
|
-
canUpgrade(playerId: string, itemId: string, recipeId: RecipeId, gold: number): boolean;
|
|
192
|
-
upgrade(playerId: string, itemId: string, recipeId: RecipeId, gold: number): UpgradeResult;
|
|
193
|
-
private applyUpgradeBonus;
|
|
194
|
-
getAvailableReforges(itemId: string): ReforgeRecipe[];
|
|
195
|
-
canReforge(playerId: string, itemId: string, recipeId: RecipeId, gold: number): boolean;
|
|
196
|
-
reforge(playerId: string, itemId: string, recipeId: RecipeId, gold: number): ReforgeResult;
|
|
197
|
-
getSalvagePreview(itemId: string): SalvageResult | null;
|
|
198
|
-
salvage(playerId: string, itemId: string): SalvageResult;
|
|
199
|
-
addBlacksmithXP(playerId: string, xp: number): void;
|
|
200
|
-
getXPForLevel(level: number): number;
|
|
201
|
-
unlockRecipe(playerId: string, recipeId: RecipeId): boolean;
|
|
202
|
-
private rarityValue;
|
|
203
|
-
getMaterial(id: MaterialId): MaterialDefinition | undefined;
|
|
204
|
-
getAllMaterials(): MaterialDefinition[];
|
|
205
|
-
getUpgradeRecipe(id: RecipeId): UpgradeRecipe | undefined;
|
|
206
|
-
getAllUpgradeRecipes(): UpgradeRecipe[];
|
|
207
|
-
getStats(playerId: string): {
|
|
208
|
-
level: number;
|
|
209
|
-
xp: number;
|
|
210
|
-
xpNeeded: number;
|
|
211
|
-
itemsRepaired: number;
|
|
212
|
-
itemsUpgraded: number;
|
|
213
|
-
successRate: number;
|
|
214
|
-
longestStreak: number;
|
|
215
|
-
};
|
|
216
|
-
save(): void;
|
|
217
|
-
load(): void;
|
|
218
|
-
reset(): void;
|
|
219
|
-
destroy(): void;
|
|
220
|
-
}
|
|
221
|
-
export declare function createBlacksmithSystem(config?: Partial<BlacksmithConfig>): NiceBlacksmith;
|
|
@@ -1,177 +0,0 @@
|
|
|
1
|
-
export type BuffId = string;
|
|
2
|
-
export type AuraId = string;
|
|
3
|
-
export type BuffType = 'buff' | 'debuff' | 'aura' | 'hidden';
|
|
4
|
-
export type StackBehavior = 'refresh' | 'add' | 'extend' | 'none';
|
|
5
|
-
export type DispelType = 'magic' | 'curse' | 'poison' | 'disease' | 'physical' | 'none';
|
|
6
|
-
export interface BuffDefinition {
|
|
7
|
-
id: BuffId;
|
|
8
|
-
name: string;
|
|
9
|
-
description: string;
|
|
10
|
-
type: BuffType;
|
|
11
|
-
dispelType: DispelType;
|
|
12
|
-
duration: number;
|
|
13
|
-
tickInterval?: number;
|
|
14
|
-
maxStacks: number;
|
|
15
|
-
stackBehavior: StackBehavior;
|
|
16
|
-
stacksPerApplication: number;
|
|
17
|
-
priority: number;
|
|
18
|
-
exclusive?: BuffId[];
|
|
19
|
-
exclusiveGroup?: string;
|
|
20
|
-
effects: BuffEffect[];
|
|
21
|
-
onApply?: BuffTrigger[];
|
|
22
|
-
onRemove?: BuffTrigger[];
|
|
23
|
-
onTick?: BuffTrigger[];
|
|
24
|
-
onStack?: BuffTrigger[];
|
|
25
|
-
icon: string;
|
|
26
|
-
vfx?: string;
|
|
27
|
-
color?: string;
|
|
28
|
-
hidden: boolean;
|
|
29
|
-
persistent: boolean;
|
|
30
|
-
dispellable: boolean;
|
|
31
|
-
stealable: boolean;
|
|
32
|
-
tags?: string[];
|
|
33
|
-
}
|
|
34
|
-
export interface BuffEffect {
|
|
35
|
-
type: 'stat_mod' | 'damage_over_time' | 'heal_over_time' | 'absorb' | 'immunity' | 'silence' | 'stun' | 'root' | 'slow' | 'haste' | 'stealth' | 'invulnerable' | 'custom';
|
|
36
|
-
stat?: string;
|
|
37
|
-
value: number;
|
|
38
|
-
isPercentage: boolean;
|
|
39
|
-
tickValue?: number;
|
|
40
|
-
scaling?: {
|
|
41
|
-
stat: string;
|
|
42
|
-
coefficient: number;
|
|
43
|
-
};
|
|
44
|
-
absorbType?: 'all' | 'physical' | 'magic' | string;
|
|
45
|
-
absorbAmount?: number;
|
|
46
|
-
movementMod?: number;
|
|
47
|
-
attackSpeedMod?: number;
|
|
48
|
-
castSpeedMod?: number;
|
|
49
|
-
effectData?: Record<string, unknown>;
|
|
50
|
-
}
|
|
51
|
-
export interface BuffTrigger {
|
|
52
|
-
type: 'damage' | 'heal' | 'apply_buff' | 'remove_buff' | 'spawn' | 'custom';
|
|
53
|
-
value?: number;
|
|
54
|
-
damageType?: string;
|
|
55
|
-
buffId?: BuffId;
|
|
56
|
-
targetType?: 'self' | 'source' | 'allies' | 'enemies';
|
|
57
|
-
triggerData?: Record<string, unknown>;
|
|
58
|
-
}
|
|
59
|
-
export interface ActiveBuff {
|
|
60
|
-
buffId: BuffId;
|
|
61
|
-
definition: BuffDefinition;
|
|
62
|
-
sourceId: string;
|
|
63
|
-
targetId: string;
|
|
64
|
-
stacks: number;
|
|
65
|
-
remainingDuration: number;
|
|
66
|
-
totalDuration: number;
|
|
67
|
-
nextTickAt: number;
|
|
68
|
-
absorbRemaining?: number;
|
|
69
|
-
appliedAt: number;
|
|
70
|
-
expiresAt: number;
|
|
71
|
-
computedEffects: ComputedBuffEffect[];
|
|
72
|
-
}
|
|
73
|
-
export interface ComputedBuffEffect {
|
|
74
|
-
effect: BuffEffect;
|
|
75
|
-
currentValue: number;
|
|
76
|
-
totalAbsorbed?: number;
|
|
77
|
-
}
|
|
78
|
-
export interface EntityBuffState {
|
|
79
|
-
entityId: string;
|
|
80
|
-
buffs: Map<BuffId, ActiveBuff>;
|
|
81
|
-
immunities: Set<string>;
|
|
82
|
-
statModifiers: Map<string, number>;
|
|
83
|
-
isStunned: boolean;
|
|
84
|
-
isRooted: boolean;
|
|
85
|
-
isSilenced: boolean;
|
|
86
|
-
isInvulnerable: boolean;
|
|
87
|
-
isStealthed: boolean;
|
|
88
|
-
totalBuffsApplied: number;
|
|
89
|
-
totalDebuffsApplied: number;
|
|
90
|
-
}
|
|
91
|
-
export interface AuraDefinition {
|
|
92
|
-
id: AuraId;
|
|
93
|
-
name: string;
|
|
94
|
-
description?: string;
|
|
95
|
-
radius: number;
|
|
96
|
-
maxAffected?: number;
|
|
97
|
-
tickInterval: number;
|
|
98
|
-
appliedBuffId: BuffId;
|
|
99
|
-
affectsAllies: boolean;
|
|
100
|
-
affectsEnemies: boolean;
|
|
101
|
-
affectsSelf: boolean;
|
|
102
|
-
vfx?: string;
|
|
103
|
-
}
|
|
104
|
-
export type BuffEventType = 'buff-applied' | 'buff-refreshed' | 'buff-stacked' | 'buff-removed' | 'buff-expired' | 'buff-dispelled' | 'buff-stolen' | 'buff-tick' | 'absorb-damage' | 'immunity-triggered';
|
|
105
|
-
export interface BuffEvent {
|
|
106
|
-
type: BuffEventType;
|
|
107
|
-
timestamp: number;
|
|
108
|
-
data?: unknown;
|
|
109
|
-
}
|
|
110
|
-
export type BuffEventCallback = (event: BuffEvent) => void;
|
|
111
|
-
export interface BuffConfig {
|
|
112
|
-
maxBuffs: number;
|
|
113
|
-
maxDebuffs: number;
|
|
114
|
-
maxHiddenBuffs: number;
|
|
115
|
-
updateInterval: number;
|
|
116
|
-
storageKey: string;
|
|
117
|
-
}
|
|
118
|
-
export declare const DEFAULT_BUFF_CONFIG: BuffConfig;
|
|
119
|
-
export declare class NiceBuff {
|
|
120
|
-
private config;
|
|
121
|
-
private definitions;
|
|
122
|
-
private auras;
|
|
123
|
-
private entities;
|
|
124
|
-
private eventListeners;
|
|
125
|
-
private updateInterval?;
|
|
126
|
-
private onDamage?;
|
|
127
|
-
private onHeal?;
|
|
128
|
-
constructor(config?: Partial<BuffConfig>);
|
|
129
|
-
on(event: BuffEventType, callback: BuffEventCallback): () => void;
|
|
130
|
-
private emit;
|
|
131
|
-
setDamageHandler(handler: typeof this.onDamage): void;
|
|
132
|
-
setHealHandler(handler: typeof this.onHeal): void;
|
|
133
|
-
private startUpdateLoop;
|
|
134
|
-
private update;
|
|
135
|
-
private processTick;
|
|
136
|
-
registerBuff(definition: BuffDefinition): void;
|
|
137
|
-
registerAura(aura: AuraDefinition): void;
|
|
138
|
-
registerEntity(entityId: string): EntityBuffState;
|
|
139
|
-
unregisterEntity(entityId: string): void;
|
|
140
|
-
applyBuff(targetId: string, buffId: BuffId, sourceId: string, stacks?: number, durationOverride?: number): ActiveBuff | null;
|
|
141
|
-
private handleStacking;
|
|
142
|
-
removeBuff(entityId: string, buffId: BuffId): boolean;
|
|
143
|
-
private removeBuffInternal;
|
|
144
|
-
removeStacks(entityId: string, buffId: BuffId, stacks: number): boolean;
|
|
145
|
-
dispel(entityId: string, dispelType: DispelType, count?: number): BuffId[];
|
|
146
|
-
stealBuff(fromId: string, toId: string, buffId: BuffId): boolean;
|
|
147
|
-
clearBuffs(entityId: string, type?: BuffType): void;
|
|
148
|
-
absorbDamage(entityId: string, damage: number, damageType: string): {
|
|
149
|
-
absorbed: number;
|
|
150
|
-
remaining: number;
|
|
151
|
-
shields: BuffId[];
|
|
152
|
-
};
|
|
153
|
-
private processTriggers;
|
|
154
|
-
getBuff(id: BuffId): BuffDefinition | undefined;
|
|
155
|
-
getAllBuffDefinitions(): BuffDefinition[];
|
|
156
|
-
getActiveBuff(entityId: string, buffId: BuffId): ActiveBuff | undefined;
|
|
157
|
-
getActiveBuffs(entityId: string, type?: BuffType): ActiveBuff[];
|
|
158
|
-
getEntityState(entityId: string): EntityBuffState | undefined;
|
|
159
|
-
hasBuff(entityId: string, buffId: BuffId): boolean;
|
|
160
|
-
hasBuffWithTag(entityId: string, tag: string): boolean;
|
|
161
|
-
getStatModifier(entityId: string, stat: string): number;
|
|
162
|
-
isStunned(entityId: string): boolean;
|
|
163
|
-
isRooted(entityId: string): boolean;
|
|
164
|
-
isSilenced(entityId: string): boolean;
|
|
165
|
-
isInvulnerable(entityId: string): boolean;
|
|
166
|
-
isStealthed(entityId: string): boolean;
|
|
167
|
-
addImmunity(entityId: string, immunity: string): void;
|
|
168
|
-
removeImmunity(entityId: string, immunity: string): void;
|
|
169
|
-
isImmune(entityId: string, definition: BuffDefinition): boolean;
|
|
170
|
-
private computeEffects;
|
|
171
|
-
private updateEntityState;
|
|
172
|
-
private countBuffsByType;
|
|
173
|
-
private removeLowestPriorityBuff;
|
|
174
|
-
reset(): void;
|
|
175
|
-
destroy(): void;
|
|
176
|
-
}
|
|
177
|
-
export declare function createBuffSystem(config?: Partial<BuffConfig>): NiceBuff;
|
|
@@ -1,207 +0,0 @@
|
|
|
1
|
-
export type BuildingId = string;
|
|
2
|
-
export type BlueprintId = string;
|
|
3
|
-
export type EntityId = string;
|
|
4
|
-
export type ResourceId = string;
|
|
5
|
-
export interface GridPosition {
|
|
6
|
-
x: number;
|
|
7
|
-
y: number;
|
|
8
|
-
}
|
|
9
|
-
export interface WorldPosition {
|
|
10
|
-
x: number;
|
|
11
|
-
y: number;
|
|
12
|
-
z?: number;
|
|
13
|
-
}
|
|
14
|
-
export interface BuildingFootprint {
|
|
15
|
-
width: number;
|
|
16
|
-
height: number;
|
|
17
|
-
/** Custom shape cells (relative to origin) */
|
|
18
|
-
cells?: GridPosition[];
|
|
19
|
-
/** Rotation in degrees (0, 90, 180, 270) */
|
|
20
|
-
rotation?: number;
|
|
21
|
-
}
|
|
22
|
-
export type BuildingState = 'blueprint' | 'queued' | 'constructing' | 'active' | 'damaged' | 'destroyed' | 'upgrading' | 'paused';
|
|
23
|
-
export interface ResourceCost {
|
|
24
|
-
resourceId: ResourceId;
|
|
25
|
-
amount: number;
|
|
26
|
-
}
|
|
27
|
-
export interface BuildingDefinition {
|
|
28
|
-
id: BlueprintId;
|
|
29
|
-
name: string;
|
|
30
|
-
description?: string;
|
|
31
|
-
icon?: string;
|
|
32
|
-
model?: string;
|
|
33
|
-
category?: string;
|
|
34
|
-
tags: string[];
|
|
35
|
-
/** Building size */
|
|
36
|
-
footprint: BuildingFootprint;
|
|
37
|
-
/** Can be rotated */
|
|
38
|
-
rotatable: boolean;
|
|
39
|
-
/** Construction time in seconds */
|
|
40
|
-
constructionTime: number;
|
|
41
|
-
/** Resource costs */
|
|
42
|
-
costs: ResourceCost[];
|
|
43
|
-
/** Required tech/research */
|
|
44
|
-
requirements?: string[];
|
|
45
|
-
/** Max instances (0 = unlimited) */
|
|
46
|
-
maxInstances: number;
|
|
47
|
-
/** Health */
|
|
48
|
-
maxHealth: number;
|
|
49
|
-
/** Can be upgraded */
|
|
50
|
-
upgradable: boolean;
|
|
51
|
-
/** Upgrade path */
|
|
52
|
-
upgradesTo?: BlueprintId;
|
|
53
|
-
/** Production/functionality */
|
|
54
|
-
production?: {
|
|
55
|
-
resourceId: ResourceId;
|
|
56
|
-
rate: number;
|
|
57
|
-
};
|
|
58
|
-
/** Storage capacity */
|
|
59
|
-
storage?: {
|
|
60
|
-
resourceId: ResourceId;
|
|
61
|
-
capacity: number;
|
|
62
|
-
}[];
|
|
63
|
-
/** Worker slots */
|
|
64
|
-
workerSlots?: number;
|
|
65
|
-
/** Power consumption */
|
|
66
|
-
powerConsumption?: number;
|
|
67
|
-
/** Power production */
|
|
68
|
-
powerProduction?: number;
|
|
69
|
-
/** Placement rules */
|
|
70
|
-
placementRules?: {
|
|
71
|
-
mustBeOnGround?: boolean;
|
|
72
|
-
mustBeNearWater?: boolean;
|
|
73
|
-
mustBeNearResource?: ResourceId;
|
|
74
|
-
minDistanceFromSame?: number;
|
|
75
|
-
maxDistanceFromHQ?: number;
|
|
76
|
-
requiresFoundation?: boolean;
|
|
77
|
-
};
|
|
78
|
-
}
|
|
79
|
-
export interface BuildingInstance {
|
|
80
|
-
id: BuildingId;
|
|
81
|
-
blueprintId: BlueprintId;
|
|
82
|
-
position: GridPosition;
|
|
83
|
-
worldPosition: WorldPosition;
|
|
84
|
-
rotation: number;
|
|
85
|
-
state: BuildingState;
|
|
86
|
-
health: number;
|
|
87
|
-
constructionProgress: number;
|
|
88
|
-
upgradeProgress?: number;
|
|
89
|
-
workersAssigned: EntityId[];
|
|
90
|
-
createdAt: number;
|
|
91
|
-
completedAt?: number;
|
|
92
|
-
ownerId?: EntityId;
|
|
93
|
-
metadata?: Record<string, unknown>;
|
|
94
|
-
}
|
|
95
|
-
export interface BuildQueueItem {
|
|
96
|
-
id: string;
|
|
97
|
-
blueprintId: BlueprintId;
|
|
98
|
-
position: GridPosition;
|
|
99
|
-
rotation: number;
|
|
100
|
-
priority: number;
|
|
101
|
-
queuedAt: number;
|
|
102
|
-
}
|
|
103
|
-
export interface PlacementPreview {
|
|
104
|
-
blueprintId: BlueprintId;
|
|
105
|
-
position: GridPosition;
|
|
106
|
-
rotation: number;
|
|
107
|
-
isValid: boolean;
|
|
108
|
-
blockedCells: GridPosition[];
|
|
109
|
-
invalidReasons: string[];
|
|
110
|
-
}
|
|
111
|
-
export type CellType = 'empty' | 'building' | 'obstacle' | 'water' | 'resource';
|
|
112
|
-
export interface GridCell {
|
|
113
|
-
position: GridPosition;
|
|
114
|
-
type: CellType;
|
|
115
|
-
buildingId?: BuildingId;
|
|
116
|
-
passable: boolean;
|
|
117
|
-
metadata?: Record<string, unknown>;
|
|
118
|
-
}
|
|
119
|
-
export type BuildingEventType = 'building-placed' | 'building-queued' | 'construction-started' | 'construction-progress' | 'construction-completed' | 'building-damaged' | 'building-destroyed' | 'building-repaired' | 'upgrade-started' | 'upgrade-completed' | 'worker-assigned' | 'worker-removed' | 'building-removed' | 'placement-invalid';
|
|
120
|
-
export interface BuildingEvent {
|
|
121
|
-
type: BuildingEventType;
|
|
122
|
-
timestamp: number;
|
|
123
|
-
buildingId?: BuildingId;
|
|
124
|
-
data?: unknown;
|
|
125
|
-
}
|
|
126
|
-
export type BuildingEventCallback = (event: BuildingEvent) => void;
|
|
127
|
-
export interface BuildingConfig {
|
|
128
|
-
/** Grid cell size in world units */
|
|
129
|
-
gridSize: number;
|
|
130
|
-
/** World bounds */
|
|
131
|
-
worldBounds: {
|
|
132
|
-
minX: number;
|
|
133
|
-
minY: number;
|
|
134
|
-
maxX: number;
|
|
135
|
-
maxY: number;
|
|
136
|
-
};
|
|
137
|
-
/** Show grid */
|
|
138
|
-
showGrid: boolean;
|
|
139
|
-
/** Enable instant build (debug) */
|
|
140
|
-
instantBuild: boolean;
|
|
141
|
-
/** Construction speed multiplier */
|
|
142
|
-
constructionSpeedMultiplier: number;
|
|
143
|
-
/** Allow overlapping */
|
|
144
|
-
allowOverlap: boolean;
|
|
145
|
-
/** Max build queue */
|
|
146
|
-
maxBuildQueue: number;
|
|
147
|
-
/** Construction range from builder */
|
|
148
|
-
constructionRange: number;
|
|
149
|
-
/** Auto-start queued construction */
|
|
150
|
-
autoStartConstruction: boolean;
|
|
151
|
-
}
|
|
152
|
-
export declare const DEFAULT_BUILDING_CONFIG: BuildingConfig;
|
|
153
|
-
export declare class NiceBuilding {
|
|
154
|
-
private config;
|
|
155
|
-
private blueprints;
|
|
156
|
-
private buildings;
|
|
157
|
-
private grid;
|
|
158
|
-
private buildQueue;
|
|
159
|
-
private idCounter;
|
|
160
|
-
private eventListeners;
|
|
161
|
-
/** Resource checker function */
|
|
162
|
-
private resourceChecker?;
|
|
163
|
-
/** Resource spender function */
|
|
164
|
-
private resourceSpender?;
|
|
165
|
-
constructor(config?: Partial<BuildingConfig>);
|
|
166
|
-
private initializeGrid;
|
|
167
|
-
private cellKey;
|
|
168
|
-
on(event: BuildingEventType, callback: BuildingEventCallback): () => void;
|
|
169
|
-
private emit;
|
|
170
|
-
setResourceChecker(checker: (costs: ResourceCost[]) => boolean): void;
|
|
171
|
-
setResourceSpender(spender: (costs: ResourceCost[]) => boolean): void;
|
|
172
|
-
registerBlueprint(blueprint: BuildingDefinition): void;
|
|
173
|
-
unregisterBlueprint(blueprintId: BlueprintId): void;
|
|
174
|
-
getBlueprint(blueprintId: BlueprintId): BuildingDefinition | undefined;
|
|
175
|
-
getBlueprints(): BuildingDefinition[];
|
|
176
|
-
getBlueprintsByCategory(category: string): BuildingDefinition[];
|
|
177
|
-
getCell(gridX: number, gridY: number): GridCell | undefined;
|
|
178
|
-
setCellType(gridX: number, gridY: number, type: CellType, passable?: boolean): void;
|
|
179
|
-
worldToGrid(worldPos: WorldPosition): GridPosition;
|
|
180
|
-
gridToWorld(gridPos: GridPosition): WorldPosition;
|
|
181
|
-
private getFootprintCells;
|
|
182
|
-
private rotateCell;
|
|
183
|
-
canPlace(blueprintId: BlueprintId, position: GridPosition, rotation?: number): PlacementPreview;
|
|
184
|
-
placeBuilding(blueprintId: BlueprintId, position: GridPosition, rotation?: number, ownerId?: EntityId): BuildingId | null;
|
|
185
|
-
queueBuilding(blueprintId: BlueprintId, position: GridPosition, rotation?: number, priority?: number): string | null;
|
|
186
|
-
dequeueBuilding(queueId: string): void;
|
|
187
|
-
getNextQueued(): BuildQueueItem | undefined;
|
|
188
|
-
getBuildQueue(): BuildQueueItem[];
|
|
189
|
-
processQueue(): BuildingId | null;
|
|
190
|
-
updateConstruction(deltaTime: number): void;
|
|
191
|
-
getBuilding(buildingId: BuildingId): BuildingInstance | undefined;
|
|
192
|
-
getAllBuildings(): BuildingInstance[];
|
|
193
|
-
getBuildingsByBlueprint(blueprintId: BlueprintId): BuildingInstance[];
|
|
194
|
-
getBuildingsByOwner(ownerId: EntityId): BuildingInstance[];
|
|
195
|
-
getBuildingAt(position: GridPosition): BuildingInstance | undefined;
|
|
196
|
-
damageBuilding(buildingId: BuildingId, damage: number): void;
|
|
197
|
-
repairBuilding(buildingId: BuildingId, amount: number): void;
|
|
198
|
-
startUpgrade(buildingId: BuildingId): boolean;
|
|
199
|
-
cancelUpgrade(buildingId: BuildingId): void;
|
|
200
|
-
assignWorker(buildingId: BuildingId, workerId: EntityId): boolean;
|
|
201
|
-
removeWorker(buildingId: BuildingId, workerId: EntityId): void;
|
|
202
|
-
removeBuilding(buildingId: BuildingId, refundResources?: boolean): void;
|
|
203
|
-
update(deltaTime: number): void;
|
|
204
|
-
clear(): void;
|
|
205
|
-
destroy(): void;
|
|
206
|
-
}
|
|
207
|
-
export declare function createBuildingSystem(config?: Partial<BuildingConfig>): NiceBuilding;
|