@kbve/laser 0.0.6
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/README.md +11 -0
- package/package.json +43 -0
- package/src/index.d.ts +17 -0
- package/src/index.js +34 -0
- package/src/index.js.map +1 -0
- package/src/lib/animations/TypewriterComponent.d.ts +8 -0
- package/src/lib/animations/TypewriterComponent.js +53 -0
- package/src/lib/animations/TypewriterComponent.js.map +1 -0
- package/src/lib/eventhandler.d.ts +31 -0
- package/src/lib/eventhandler.js +45 -0
- package/src/lib/eventhandler.js.map +1 -0
- package/src/lib/icon/CollapseIcon.d.ts +4 -0
- package/src/lib/icon/CollapseIcon.js +10 -0
- package/src/lib/icon/CollapseIcon.js.map +1 -0
- package/src/lib/icon/ExpandIcon.d.ts +4 -0
- package/src/lib/icon/ExpandIcon.js +10 -0
- package/src/lib/icon/ExpandIcon.js.map +1 -0
- package/src/lib/laser.d.ts +1 -0
- package/src/lib/laser.js +8 -0
- package/src/lib/laser.js.map +1 -0
- package/src/lib/localdb.d.ts +55 -0
- package/src/lib/localdb.js +591 -0
- package/src/lib/localdb.js.map +1 -0
- package/src/lib/minigame/dice/MinigameDice.d.ts +4 -0
- package/src/lib/minigame/dice/MinigameDice.js +85 -0
- package/src/lib/minigame/dice/MinigameDice.js.map +1 -0
- package/src/lib/phaser/monster/bird.d.ts +7 -0
- package/src/lib/phaser/monster/bird.js +44 -0
- package/src/lib/phaser/monster/bird.js.map +1 -0
- package/src/lib/phaser/npc/chatbubble.d.ts +10 -0
- package/src/lib/phaser/npc/chatbubble.js +78 -0
- package/src/lib/phaser/npc/chatbubble.js.map +1 -0
- package/src/lib/phaser/npc/npcdatabase.d.ts +56 -0
- package/src/lib/phaser/npc/npcdatabase.js +497 -0
- package/src/lib/phaser/npc/npcdatabase.js.map +1 -0
- package/src/lib/phaser/npc/npchandler.d.ts +20 -0
- package/src/lib/phaser/npc/npchandler.js +114 -0
- package/src/lib/phaser/npc/npchandler.js.map +1 -0
- package/src/lib/phaser/npc/tooltipmenu.d.ts +17 -0
- package/src/lib/phaser/npc/tooltipmenu.js +68 -0
- package/src/lib/phaser/npc/tooltipmenu.js.map +1 -0
- package/src/lib/phaser/player/playercontroller.d.ts +24 -0
- package/src/lib/phaser/player/playercontroller.js +219 -0
- package/src/lib/phaser/player/playercontroller.js.map +1 -0
- package/src/lib/quadtree.d.ts +37 -0
- package/src/lib/quadtree.js +123 -0
- package/src/lib/quadtree.js.map +1 -0
- package/src/lib/utils/debug.d.ts +8 -0
- package/src/lib/utils/debug.js +46 -0
- package/src/lib/utils/debug.js.map +1 -0
- package/src/lib/utils/ulid.d.ts +1 -0
- package/src/lib/utils/ulid.js +38 -0
- package/src/lib/utils/ulid.js.map +1 -0
- package/src/types.d.ts +355 -0
- package/src/types.js +9 -0
- package/src/types.js.map +1 -0
|
@@ -0,0 +1,497 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.npcDatabase = exports.NPCDatabase = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const dexie_1 = tslib_1.__importDefault(require("dexie"));
|
|
6
|
+
const axios_1 = tslib_1.__importDefault(require("axios"));
|
|
7
|
+
const npchandler_1 = require("./npchandler");
|
|
8
|
+
const debug_1 = require("../../utils/debug");
|
|
9
|
+
class NPCDatabase extends dexie_1.default {
|
|
10
|
+
constructor() {
|
|
11
|
+
super('NPCDatabase');
|
|
12
|
+
this.version(3).stores({
|
|
13
|
+
npcs: 'id,name',
|
|
14
|
+
sprites: 'id',
|
|
15
|
+
avatars: 'id',
|
|
16
|
+
dialogues: 'id',
|
|
17
|
+
});
|
|
18
|
+
this.npcs = this.table('npcs');
|
|
19
|
+
this.sprites = this.table('sprites');
|
|
20
|
+
this.avatars = this.table('avatars');
|
|
21
|
+
this.dialogues = this.table('dialogues');
|
|
22
|
+
}
|
|
23
|
+
addNPC(npcData) {
|
|
24
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
25
|
+
yield this.npcs.put(npcData);
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
getNPC(id) {
|
|
29
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
30
|
+
return yield this.npcs.get(id);
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
getNPCByName(name) {
|
|
34
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
35
|
+
return yield this.npcs.where('name').equals(name).first();
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
getAllNPCs() {
|
|
39
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
40
|
+
return yield this.npcs.toArray();
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
exportNPCs() {
|
|
44
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
45
|
+
const npcs = yield this.getAllNPCs();
|
|
46
|
+
return JSON.stringify(npcs, null, 2);
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
importNPCs(jsonData) {
|
|
50
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
51
|
+
const npcArray = JSON.parse(jsonData);
|
|
52
|
+
yield this.npcs.bulkPut(npcArray);
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
fetchNPCData(url) {
|
|
56
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
57
|
+
try {
|
|
58
|
+
const response = yield axios_1.default.get(url);
|
|
59
|
+
return response.data;
|
|
60
|
+
}
|
|
61
|
+
catch (error) {
|
|
62
|
+
debug_1.Debug.error(`Failed to fetch NPC data from ${url}:`, error);
|
|
63
|
+
return undefined;
|
|
64
|
+
}
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
addSprite(sprite) {
|
|
68
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
69
|
+
yield this.sprites.put(sprite);
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
getSprite(id) {
|
|
73
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
74
|
+
return yield this.sprites.get(id);
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
getAllSprites() {
|
|
78
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
79
|
+
return yield this.sprites.toArray();
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
addAvatar(avatar) {
|
|
83
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
84
|
+
yield this.avatars.put(avatar);
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
getAvatar(id) {
|
|
88
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
89
|
+
return yield this.avatars.get(id);
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
getAllAvatars() {
|
|
93
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
94
|
+
return yield this.avatars.toArray();
|
|
95
|
+
});
|
|
96
|
+
}
|
|
97
|
+
urlToBlob(url) {
|
|
98
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
99
|
+
try {
|
|
100
|
+
const response = yield axios_1.default.get(url, { responseType: 'blob' });
|
|
101
|
+
return response.data;
|
|
102
|
+
}
|
|
103
|
+
catch (error) {
|
|
104
|
+
debug_1.Debug.error(`Failed to fetch blob from ${url}:`, error);
|
|
105
|
+
return undefined;
|
|
106
|
+
}
|
|
107
|
+
});
|
|
108
|
+
}
|
|
109
|
+
addNewSprite(url, spriteDetails) {
|
|
110
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
111
|
+
const spriteBlob = yield this.urlToBlob(url);
|
|
112
|
+
if (spriteBlob) {
|
|
113
|
+
const newSprite = Object.assign(Object.assign({}, spriteDetails), { spriteData: spriteBlob });
|
|
114
|
+
yield this.addSprite(newSprite);
|
|
115
|
+
return newSprite.id;
|
|
116
|
+
}
|
|
117
|
+
return undefined;
|
|
118
|
+
});
|
|
119
|
+
}
|
|
120
|
+
addNewNPC(npcDetails, spriteImageId, avatarImageId) {
|
|
121
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
122
|
+
const newNPC = Object.assign(Object.assign({}, npcDetails), { spriteImageId,
|
|
123
|
+
avatarImageId });
|
|
124
|
+
yield this.addNPC(newNPC);
|
|
125
|
+
});
|
|
126
|
+
}
|
|
127
|
+
addNewAvatar(url, avatarDetails) {
|
|
128
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
129
|
+
const avatarBlob = yield this.urlToBlob(url);
|
|
130
|
+
if (avatarBlob) {
|
|
131
|
+
const newAvatar = Object.assign(Object.assign({}, avatarDetails), { avatarData: avatarBlob });
|
|
132
|
+
yield this.addAvatar(newAvatar);
|
|
133
|
+
return newAvatar.id;
|
|
134
|
+
}
|
|
135
|
+
return undefined;
|
|
136
|
+
});
|
|
137
|
+
}
|
|
138
|
+
fetchAvatars(url) {
|
|
139
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
140
|
+
try {
|
|
141
|
+
const response = yield axios_1.default.get(url);
|
|
142
|
+
const avatars = response.data.key;
|
|
143
|
+
for (const key in avatars) {
|
|
144
|
+
const avatarDetails = avatars[key];
|
|
145
|
+
let avatarBlob = yield this.urlToBlob(avatarDetails.avatarLocation);
|
|
146
|
+
if (!avatarBlob) {
|
|
147
|
+
avatarBlob = yield this.urlToBlob(`https://kbve.com${avatarDetails.avatarLocation}`);
|
|
148
|
+
}
|
|
149
|
+
if (avatarBlob) {
|
|
150
|
+
const newAvatar = {
|
|
151
|
+
id: avatarDetails.id,
|
|
152
|
+
avatarName: avatarDetails.avatarName,
|
|
153
|
+
avatarLocation: avatarDetails.avatarLocation,
|
|
154
|
+
avatarData: avatarBlob,
|
|
155
|
+
slug: avatarDetails.slug,
|
|
156
|
+
};
|
|
157
|
+
yield this.addAvatar(newAvatar);
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
catch (error) {
|
|
162
|
+
debug_1.Debug.error(`Failed to fetch avatars from ${url}:`, error);
|
|
163
|
+
}
|
|
164
|
+
});
|
|
165
|
+
}
|
|
166
|
+
fetchSprites(url) {
|
|
167
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
168
|
+
try {
|
|
169
|
+
const response = yield axios_1.default.get(url);
|
|
170
|
+
const sprites = response.data.key;
|
|
171
|
+
for (const key in sprites) {
|
|
172
|
+
const spriteDetails = sprites[key];
|
|
173
|
+
let spriteBlob = yield this.urlToBlob(spriteDetails.assetLocation);
|
|
174
|
+
if (!spriteBlob) {
|
|
175
|
+
spriteBlob = yield this.urlToBlob(`https://kbve.com${spriteDetails.assetLocation}`);
|
|
176
|
+
}
|
|
177
|
+
if (spriteBlob) {
|
|
178
|
+
const newSprite = {
|
|
179
|
+
id: spriteDetails.id,
|
|
180
|
+
spriteName: spriteDetails.spriteName,
|
|
181
|
+
assetLocation: spriteDetails.assetLocation,
|
|
182
|
+
frameWidth: spriteDetails.frameWidth,
|
|
183
|
+
frameHeight: spriteDetails.frameHeight,
|
|
184
|
+
scale: spriteDetails.scale,
|
|
185
|
+
slug: spriteDetails.slug,
|
|
186
|
+
spriteData: spriteBlob,
|
|
187
|
+
};
|
|
188
|
+
yield this.addSprite(newSprite);
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
catch (error) {
|
|
193
|
+
debug_1.Debug.error(`Failed to fetch sprites from ${url}:`, error);
|
|
194
|
+
}
|
|
195
|
+
});
|
|
196
|
+
}
|
|
197
|
+
fetchNPCs(url) {
|
|
198
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
199
|
+
try {
|
|
200
|
+
const response = yield axios_1.default.get(url);
|
|
201
|
+
const npcs = response.data.key;
|
|
202
|
+
for (const key in npcs) {
|
|
203
|
+
const npcDetails = npcs[key];
|
|
204
|
+
const newNPC = {
|
|
205
|
+
id: npcDetails.id,
|
|
206
|
+
name: npcDetails.name,
|
|
207
|
+
spriteKey: npcDetails.spriteKey,
|
|
208
|
+
walkingAnimationMapping: npcDetails.walkingAnimationMapping,
|
|
209
|
+
startPosition: npcDetails.startPosition,
|
|
210
|
+
speed: npcDetails.speed,
|
|
211
|
+
scale: npcDetails.scale,
|
|
212
|
+
slug: npcDetails.slug,
|
|
213
|
+
actions: npcDetails.actions,
|
|
214
|
+
effects: npcDetails.effects,
|
|
215
|
+
stats: npcDetails.stats,
|
|
216
|
+
spriteImageId: npcDetails.spriteImageId,
|
|
217
|
+
avatarImageId: npcDetails.avatarImageId,
|
|
218
|
+
dialogues: npcDetails.dialogues || [],
|
|
219
|
+
};
|
|
220
|
+
yield this.addNPC(newNPC);
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
catch (error) {
|
|
224
|
+
debug_1.Debug.error(`Failed to fetch NPCs from ${url}:`, error);
|
|
225
|
+
}
|
|
226
|
+
});
|
|
227
|
+
}
|
|
228
|
+
initializeDatabase() {
|
|
229
|
+
return tslib_1.__awaiter(this, arguments, void 0, function* (baseURL = 'https://kbve.com') {
|
|
230
|
+
// Fetch, add and prepare.
|
|
231
|
+
yield this.fetchAvatars(`${baseURL}/api/avatardb.json`);
|
|
232
|
+
yield this.fetchSprites(`${baseURL}/api/spritedb.json`);
|
|
233
|
+
yield this.fetchNPCs(`${baseURL}/api/npcdb.json`);
|
|
234
|
+
// TODO: Fetch dialogues from the given URL
|
|
235
|
+
yield this.fetchDialogues(`${baseURL}/api/dialogue.json`);
|
|
236
|
+
});
|
|
237
|
+
}
|
|
238
|
+
loadNPC(scene, npcName, x, y) {
|
|
239
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
240
|
+
try {
|
|
241
|
+
debug_1.Debug.log(`Loading NPC with name: ${npcName}`);
|
|
242
|
+
const npcData = yield this.getNPCByName(npcName);
|
|
243
|
+
if (!npcData) {
|
|
244
|
+
throw new Error(`NPC with name ${npcName} not found`);
|
|
245
|
+
}
|
|
246
|
+
debug_1.Debug.log(`NPC Data: ${JSON.stringify(npcData)}`);
|
|
247
|
+
yield this.loadCharacter(scene, npcData.id, x, y);
|
|
248
|
+
}
|
|
249
|
+
catch (error) {
|
|
250
|
+
if (error instanceof Error) {
|
|
251
|
+
debug_1.Debug.error(`Failed to load NPC: ${error.message}`);
|
|
252
|
+
}
|
|
253
|
+
else {
|
|
254
|
+
debug_1.Debug.error('Failed to load NPC:', error);
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
});
|
|
258
|
+
}
|
|
259
|
+
loadCharacter(scene, npcId, x, y) {
|
|
260
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
261
|
+
try {
|
|
262
|
+
debug_1.Debug.log(`Loading NPC with ID: ${npcId}`);
|
|
263
|
+
const npcData = yield this.getNPC(npcId);
|
|
264
|
+
if (!npcData) {
|
|
265
|
+
throw new Error(`NPC with ID ${npcId} not found`);
|
|
266
|
+
}
|
|
267
|
+
debug_1.Debug.log(`NPC Data: ${JSON.stringify(npcData)}`);
|
|
268
|
+
const textureKey = npcData.spriteKey;
|
|
269
|
+
// Ensure the texture is loaded
|
|
270
|
+
if (!scene.textures.exists(textureKey)) {
|
|
271
|
+
debug_1.Debug.log(`Texture with key ${textureKey} not found, attempting to load.`);
|
|
272
|
+
const spriteData = yield this.getSprite(npcData.spriteImageId);
|
|
273
|
+
if (spriteData && spriteData.spriteData) {
|
|
274
|
+
debug_1.Debug.log(`Sprite Data: ${JSON.stringify(spriteData)}`);
|
|
275
|
+
const url = URL.createObjectURL(spriteData.spriteData);
|
|
276
|
+
// Load the spritesheet using frameWidth and frameHeight from spriteData
|
|
277
|
+
scene.load.spritesheet(textureKey, url, {
|
|
278
|
+
frameWidth: spriteData.frameWidth,
|
|
279
|
+
frameHeight: spriteData.frameHeight,
|
|
280
|
+
});
|
|
281
|
+
scene.load.once('complete', () => {
|
|
282
|
+
debug_1.Debug.log(`Texture ${textureKey} loaded successfully.`);
|
|
283
|
+
this.addNPCToScene(scene, npcData, x, y);
|
|
284
|
+
});
|
|
285
|
+
scene.load.start();
|
|
286
|
+
}
|
|
287
|
+
else {
|
|
288
|
+
throw new Error(`Sprite with ID ${npcData.spriteImageId} not found`);
|
|
289
|
+
}
|
|
290
|
+
}
|
|
291
|
+
else {
|
|
292
|
+
debug_1.Debug.log(`Texture with key ${textureKey} already loaded.`);
|
|
293
|
+
this.addNPCToScene(scene, npcData, x, y);
|
|
294
|
+
}
|
|
295
|
+
}
|
|
296
|
+
catch (error) {
|
|
297
|
+
if (error instanceof Error) {
|
|
298
|
+
debug_1.Debug.error(`Failed to load NPC: ${error.message}`);
|
|
299
|
+
}
|
|
300
|
+
else {
|
|
301
|
+
debug_1.Debug.error('Failed to load NPC:', error);
|
|
302
|
+
}
|
|
303
|
+
}
|
|
304
|
+
});
|
|
305
|
+
}
|
|
306
|
+
addNPCToScene(scene, npcData, x, y) {
|
|
307
|
+
try {
|
|
308
|
+
debug_1.Debug.log(`Adding NPC to scene: ${JSON.stringify(npcData)}`);
|
|
309
|
+
debug_1.Debug.log(`Using sprite key: ${npcData.spriteKey}`);
|
|
310
|
+
//const npcSprite = scene.add.sprite(x ?? npcData.startPosition.x, y ?? npcData.startPosition.y, npcData.spriteKey);
|
|
311
|
+
const npcSprite = scene.add.sprite(0, 0, npcData.spriteKey);
|
|
312
|
+
npcSprite.scale = npcData.scale || 1.5;
|
|
313
|
+
npcSprite.name = npcData.id || 'Error Missing Name';
|
|
314
|
+
debug_1.Debug.log(`NPC Sprite created with texture key ${npcData.spriteKey} at position (${npcData.startPosition.x}, ${npcData.startPosition.y})`);
|
|
315
|
+
const gridEngineConfig = {
|
|
316
|
+
id: npcData.id,
|
|
317
|
+
sprite: npcSprite,
|
|
318
|
+
walkingAnimationMapping: npcData.walkingAnimationMapping,
|
|
319
|
+
startPosition: {
|
|
320
|
+
x: x !== null && x !== void 0 ? x : npcData.startPosition.x,
|
|
321
|
+
y: y !== null && y !== void 0 ? y : npcData.startPosition.y,
|
|
322
|
+
},
|
|
323
|
+
speed: npcData.speed,
|
|
324
|
+
};
|
|
325
|
+
debug_1.Debug.log(`Grid engine config: ${JSON.stringify(gridEngineConfig)}`);
|
|
326
|
+
// Check if the texture is available before adding to grid engine
|
|
327
|
+
if (!scene.textures.exists(npcData.spriteKey)) {
|
|
328
|
+
throw new Error(`Texture with key ${npcData.spriteKey} does not exist in the scene`);
|
|
329
|
+
}
|
|
330
|
+
scene.gridEngine.addCharacter(gridEngineConfig);
|
|
331
|
+
debug_1.Debug.log(`NPC added to grid engine with ID ${npcData.id}`);
|
|
332
|
+
const attachNPCEventWithCoords = (sprite, title, actions) => {
|
|
333
|
+
const position = scene.gridEngine.getPosition(sprite.name);
|
|
334
|
+
debug_1.Debug.log(`Attaching NPC events to ${title} at position: ${JSON.stringify(position)}`);
|
|
335
|
+
npchandler_1.npcHandler.attachNPCEvent(sprite, title, actions, { coords: position });
|
|
336
|
+
};
|
|
337
|
+
attachNPCEventWithCoords(npcSprite, npcData.name, npcData.actions.map((action) => ({ label: action })));
|
|
338
|
+
debug_1.Debug.log(`NPC ${npcData.name} added to scene successfully`);
|
|
339
|
+
}
|
|
340
|
+
catch (error) {
|
|
341
|
+
if (error instanceof Error) {
|
|
342
|
+
debug_1.Debug.error(`Error adding NPC to scene from addNPCToScene: ${error.message}`);
|
|
343
|
+
}
|
|
344
|
+
else {
|
|
345
|
+
debug_1.Debug.error('Error adding NPC to scene:', error);
|
|
346
|
+
}
|
|
347
|
+
}
|
|
348
|
+
}
|
|
349
|
+
//? Dialogue Scoped Functions
|
|
350
|
+
addDialogue(dialogue) {
|
|
351
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
352
|
+
yield this.dialogues.put(dialogue);
|
|
353
|
+
});
|
|
354
|
+
}
|
|
355
|
+
getDialogue(id) {
|
|
356
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
357
|
+
return yield this.dialogues.get(id);
|
|
358
|
+
});
|
|
359
|
+
}
|
|
360
|
+
getAllDialogues() {
|
|
361
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
362
|
+
return yield this.dialogues.toArray();
|
|
363
|
+
});
|
|
364
|
+
}
|
|
365
|
+
getDialoguesForNPC(npcId) {
|
|
366
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
367
|
+
const npc = yield this.getNPC(npcId);
|
|
368
|
+
if (!npc)
|
|
369
|
+
throw new Error(`NPC with ID ${npcId} not found`);
|
|
370
|
+
const dialogues = yield Promise.all((npc.dialogues || []).map((dialogue) => this.getDialogue(dialogue.dialogueId)));
|
|
371
|
+
return dialogues.filter((dialogue) => dialogue !== undefined);
|
|
372
|
+
});
|
|
373
|
+
}
|
|
374
|
+
markDialogueAsRead(npcId, dialogueId) {
|
|
375
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
376
|
+
var _a;
|
|
377
|
+
const npc = yield this.getNPC(npcId);
|
|
378
|
+
if (!npc)
|
|
379
|
+
throw new Error(`NPC with ID ${npcId} not found`);
|
|
380
|
+
const dialogue = (_a = npc.dialogues) === null || _a === void 0 ? void 0 : _a.find((d) => d.dialogueId === dialogueId);
|
|
381
|
+
if (dialogue) {
|
|
382
|
+
dialogue.read = true;
|
|
383
|
+
yield this.addNPC(npc);
|
|
384
|
+
}
|
|
385
|
+
});
|
|
386
|
+
}
|
|
387
|
+
fetchDialogues(url) {
|
|
388
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
389
|
+
try {
|
|
390
|
+
const response = yield axios_1.default.get(url);
|
|
391
|
+
const dialogues = response.data.key;
|
|
392
|
+
const newDialogues = Object.values(dialogues).map(
|
|
393
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
394
|
+
(dialogueDetails) => (Object.assign({}, dialogueDetails)));
|
|
395
|
+
yield this.dialogues.bulkPut(newDialogues);
|
|
396
|
+
}
|
|
397
|
+
catch (error) {
|
|
398
|
+
debug_1.Debug.error(`Failed to fetch dialogues from ${url}:`, error);
|
|
399
|
+
}
|
|
400
|
+
});
|
|
401
|
+
}
|
|
402
|
+
getPrioritizedDialoguesForNPC(npcId) {
|
|
403
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
404
|
+
try {
|
|
405
|
+
const npc = yield this.getNPC(npcId);
|
|
406
|
+
if (!npc)
|
|
407
|
+
throw new Error(`NPC with ID ${npcId} not found`);
|
|
408
|
+
const dialoguesWithMetadata = yield Promise.all((npc.dialogues || []).map((dialogueMeta) => tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
409
|
+
const dialogue = yield this.getDialogue(dialogueMeta.dialogueId);
|
|
410
|
+
if (dialogue) {
|
|
411
|
+
return Object.assign(Object.assign({}, dialogue), { priority: dialogueMeta.priority, read: dialogueMeta.read });
|
|
412
|
+
}
|
|
413
|
+
return null;
|
|
414
|
+
})));
|
|
415
|
+
// Filter out any null values
|
|
416
|
+
const validDialogues = dialoguesWithMetadata.filter(dialogue => dialogue !== null);
|
|
417
|
+
// Sort the dialogues by priority in descending order
|
|
418
|
+
validDialogues.sort((a, b) => b.priority - a.priority);
|
|
419
|
+
return validDialogues;
|
|
420
|
+
}
|
|
421
|
+
catch (error) {
|
|
422
|
+
debug_1.Debug.error(`Failed to get prioritized dialogues for NPC with ID ${npcId}:`, error);
|
|
423
|
+
return [];
|
|
424
|
+
}
|
|
425
|
+
});
|
|
426
|
+
}
|
|
427
|
+
getNPCNameById(npcId) {
|
|
428
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
429
|
+
const npc = yield this.getNPC(npcId);
|
|
430
|
+
return npc === null || npc === void 0 ? void 0 : npc.name;
|
|
431
|
+
});
|
|
432
|
+
}
|
|
433
|
+
getNPCAvatarById(npcId) {
|
|
434
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
435
|
+
const npc = yield this.getNPC(npcId);
|
|
436
|
+
if (npc === null || npc === void 0 ? void 0 : npc.avatarImageId) {
|
|
437
|
+
const avatar = yield this.getAvatar(npc.avatarImageId);
|
|
438
|
+
return avatar === null || avatar === void 0 ? void 0 : avatar.avatarData;
|
|
439
|
+
}
|
|
440
|
+
return undefined;
|
|
441
|
+
});
|
|
442
|
+
}
|
|
443
|
+
getNPCSlugById(npcId) {
|
|
444
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
445
|
+
const npc = yield this.getNPC(npcId);
|
|
446
|
+
return npc === null || npc === void 0 ? void 0 : npc.slug;
|
|
447
|
+
});
|
|
448
|
+
}
|
|
449
|
+
getNPCHealthById(npcId) {
|
|
450
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
451
|
+
var _a;
|
|
452
|
+
try {
|
|
453
|
+
const npc = yield this.getNPC(npcId);
|
|
454
|
+
return (_a = npc === null || npc === void 0 ? void 0 : npc.stats) === null || _a === void 0 ? void 0 : _a.health;
|
|
455
|
+
}
|
|
456
|
+
catch (error) {
|
|
457
|
+
debug_1.Debug.error(`Failed to get health for NPC with ID ${npcId}:`, error);
|
|
458
|
+
return undefined;
|
|
459
|
+
}
|
|
460
|
+
});
|
|
461
|
+
}
|
|
462
|
+
getNPCManaById(npcId) {
|
|
463
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
464
|
+
var _a;
|
|
465
|
+
try {
|
|
466
|
+
const npc = yield this.getNPC(npcId);
|
|
467
|
+
return (_a = npc === null || npc === void 0 ? void 0 : npc.stats) === null || _a === void 0 ? void 0 : _a.mana;
|
|
468
|
+
}
|
|
469
|
+
catch (error) {
|
|
470
|
+
debug_1.Debug.error(`Failed to get mana for NPC with ID ${npcId}:`, error);
|
|
471
|
+
return undefined;
|
|
472
|
+
}
|
|
473
|
+
});
|
|
474
|
+
}
|
|
475
|
+
createNPCSession(SessionAtom, npcId) {
|
|
476
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
477
|
+
try {
|
|
478
|
+
const namePromise = this.getNPCNameById(npcId);
|
|
479
|
+
const slugPromise = this.getNPCSlugById(npcId);
|
|
480
|
+
const avatarPromise = this.getNPCAvatarById(npcId);
|
|
481
|
+
const hpPromise = this.getNPCHealthById(npcId);
|
|
482
|
+
const manaPromise = this.getNPCManaById(npcId);
|
|
483
|
+
const [name, slug, avatar, hp, mana] = yield Promise.all([namePromise, slugPromise, avatarPromise, hpPromise, manaPromise]);
|
|
484
|
+
const newSession = Object.assign(Object.assign({}, SessionAtom.get()), { [`${npcId}_name`]: name || 'Unknown', [`${npcId}_slug`]: slug || 'Unknown', [`${npcId}_avatar`]: avatar ? URL.createObjectURL(avatar) : 'Unknown', [`${npcId}_health`]: hp || '100', [`${npcId}_mana`]: mana || '100' });
|
|
485
|
+
SessionAtom.set(newSession);
|
|
486
|
+
}
|
|
487
|
+
catch (error) {
|
|
488
|
+
const newSession = Object.assign(Object.assign({}, SessionAtom.get()), { [`${npcId}_name`]: 'Unknown', [`${npcId}_slug`]: 'Unknown', [`${npcId}_avatar`]: 'Unknown', [`${npcId}_hp`]: '100', [`${npcId}_mana`]: '100' });
|
|
489
|
+
SessionAtom.set(newSession);
|
|
490
|
+
}
|
|
491
|
+
});
|
|
492
|
+
}
|
|
493
|
+
}
|
|
494
|
+
exports.NPCDatabase = NPCDatabase;
|
|
495
|
+
// Export a singleton instance
|
|
496
|
+
exports.npcDatabase = new NPCDatabase();
|
|
497
|
+
//# sourceMappingURL=npcdatabase.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"npcdatabase.js","sourceRoot":"","sources":["../../../../../../../packages/laser/src/lib/phaser/npc/npcdatabase.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { type NPCInteractionEventData, type NPCAction } from '../../../types';
|
|
2
|
+
declare class NPCHandler {
|
|
3
|
+
private actionHandlers;
|
|
4
|
+
constructor();
|
|
5
|
+
getActionHandler(action: NPCAction): (eventData: NPCInteractionEventData) => void;
|
|
6
|
+
loreFromNPC(eventData: NPCInteractionEventData): void;
|
|
7
|
+
questWithNPC(eventData: NPCInteractionEventData): void;
|
|
8
|
+
healNPC(eventData: NPCInteractionEventData): void;
|
|
9
|
+
talkToNPC(eventData: NPCInteractionEventData): Promise<void>;
|
|
10
|
+
tradeWithNPC(eventData: NPCInteractionEventData): void;
|
|
11
|
+
moveToNPC(eventData: NPCInteractionEventData): void;
|
|
12
|
+
stealFromNPC(eventData: NPCInteractionEventData): void;
|
|
13
|
+
startCombat(eventData: NPCInteractionEventData): void;
|
|
14
|
+
checkFish(eventData: NPCInteractionEventData): void;
|
|
15
|
+
attachNPCEvent<T>(sprite: Phaser.GameObjects.Sprite, title: string, actions: {
|
|
16
|
+
label: string;
|
|
17
|
+
}[], data?: T): void;
|
|
18
|
+
}
|
|
19
|
+
export declare const npcHandler: NPCHandler;
|
|
20
|
+
export {};
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.npcHandler = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const eventhandler_1 = require("../../eventhandler");
|
|
6
|
+
const npcdatabase_1 = require("./npcdatabase");
|
|
7
|
+
const debug_1 = require("../../utils/debug");
|
|
8
|
+
class NPCHandler {
|
|
9
|
+
constructor() {
|
|
10
|
+
this.actionHandlers = {
|
|
11
|
+
talk: this.talkToNPC.bind(this),
|
|
12
|
+
quest: this.questWithNPC.bind(this),
|
|
13
|
+
trade: this.tradeWithNPC.bind(this),
|
|
14
|
+
combat: this.startCombat.bind(this),
|
|
15
|
+
heal: this.healNPC.bind(this),
|
|
16
|
+
steal: this.stealFromNPC.bind(this),
|
|
17
|
+
lore: this.loreFromNPC.bind(this)
|
|
18
|
+
}; // Type assertion to satisfy the mapped type constraint
|
|
19
|
+
}
|
|
20
|
+
getActionHandler(action) {
|
|
21
|
+
return this.actionHandlers[action];
|
|
22
|
+
}
|
|
23
|
+
loreFromNPC(eventData) {
|
|
24
|
+
debug_1.Debug.log(`Pulling up the lore of the NPC with ID: ${eventData.npcId}`);
|
|
25
|
+
}
|
|
26
|
+
questWithNPC(eventData) {
|
|
27
|
+
debug_1.Debug.log(`Starting quest with NPC with ID: ${eventData.npcId}`);
|
|
28
|
+
// Implement q
|
|
29
|
+
}
|
|
30
|
+
healNPC(eventData) {
|
|
31
|
+
debug_1.Debug.log(`Healing NPC with ID: ${eventData.npcId}`);
|
|
32
|
+
// Implement healing logic here
|
|
33
|
+
}
|
|
34
|
+
talkToNPC(eventData) {
|
|
35
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
36
|
+
try {
|
|
37
|
+
debug_1.Debug.log(`Talking to NPC with ID: ${eventData.npcId}`);
|
|
38
|
+
const prioritizedDialogues = yield npcdatabase_1.npcDatabase.getPrioritizedDialoguesForNPC(eventData.npcId);
|
|
39
|
+
debug_1.Debug.log(prioritizedDialogues);
|
|
40
|
+
// Implement further dialogue handling logic here, e.g., display the first dialogue in the list
|
|
41
|
+
if (prioritizedDialogues.length > 0) {
|
|
42
|
+
const dialogueToDisplay = prioritizedDialogues[0];
|
|
43
|
+
// Display the dialogueToDisplay
|
|
44
|
+
eventhandler_1.EventEmitter.emit('npcDialogue', { npcId: eventData.npcId, dialogue: dialogueToDisplay }, 1000);
|
|
45
|
+
}
|
|
46
|
+
else {
|
|
47
|
+
debug_1.Debug.log('No dialogues available for this NPC.');
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
catch (error) {
|
|
51
|
+
debug_1.Debug.error(`Failed to fetch dialogues for NPC with ID ${eventData.npcId}:`, error);
|
|
52
|
+
}
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
tradeWithNPC(eventData) {
|
|
56
|
+
debug_1.Debug.log(`Trading with NPC with ID: ${eventData.npcId}`);
|
|
57
|
+
// Implement trading logic here
|
|
58
|
+
}
|
|
59
|
+
moveToNPC(eventData) {
|
|
60
|
+
var _a;
|
|
61
|
+
// Get NPC coordinates from eventData
|
|
62
|
+
const coords = ((_a = eventData.data) === null || _a === void 0 ? void 0 : _a.coords) || { x: 10, y: 15 };
|
|
63
|
+
const playerMoveEventData = coords;
|
|
64
|
+
eventhandler_1.EventEmitter.emit('playerMove', playerMoveEventData);
|
|
65
|
+
}
|
|
66
|
+
stealFromNPC(eventData) {
|
|
67
|
+
debug_1.Debug.log(`Attempting to steal from NPC with ID: ${eventData.npcId}`);
|
|
68
|
+
const playerStealEventData = {
|
|
69
|
+
npcId: eventData.npcId,
|
|
70
|
+
npcName: eventData.npcName,
|
|
71
|
+
data: eventData.data
|
|
72
|
+
};
|
|
73
|
+
eventhandler_1.EventEmitter.emit('playerSteal', playerStealEventData);
|
|
74
|
+
// Implement stealing logic here
|
|
75
|
+
}
|
|
76
|
+
startCombat(eventData) {
|
|
77
|
+
debug_1.Debug.log(`Starting combat with NPC with ID: ${eventData.npcId}`);
|
|
78
|
+
// Implement combat logic here
|
|
79
|
+
}
|
|
80
|
+
checkFish(eventData) {
|
|
81
|
+
debug_1.Debug.log(`Checking fish for NPC with ID: ${eventData.npcId}`);
|
|
82
|
+
// Implement check fish logic here
|
|
83
|
+
}
|
|
84
|
+
attachNPCEvent(sprite, title, actions, data) {
|
|
85
|
+
sprite.setInteractive();
|
|
86
|
+
sprite.on('pointerover', (pointer) => {
|
|
87
|
+
const npcInteractionData = {
|
|
88
|
+
npcId: sprite.name || '',
|
|
89
|
+
npcName: title,
|
|
90
|
+
actions: actions.map(action => action.label),
|
|
91
|
+
data: data || {},
|
|
92
|
+
coords: { x: pointer.x, y: pointer.y }
|
|
93
|
+
};
|
|
94
|
+
eventhandler_1.EventEmitter.emit('npcInteraction', npcInteractionData);
|
|
95
|
+
});
|
|
96
|
+
sprite.on('pointerout', () => {
|
|
97
|
+
// EventEmitter.emit('npcInteraction', null);
|
|
98
|
+
});
|
|
99
|
+
sprite.on('pointerdown', (pointer) => {
|
|
100
|
+
const npcInteractionData = {
|
|
101
|
+
npcId: sprite.name || '',
|
|
102
|
+
npcName: title,
|
|
103
|
+
actions: actions.map(action => action.label),
|
|
104
|
+
data: data || {},
|
|
105
|
+
coords: { x: pointer.x, y: pointer.y }
|
|
106
|
+
//coords: { x: event.clientX, y: event.clientY }
|
|
107
|
+
};
|
|
108
|
+
debug_1.Debug.log(`Click Registered at X: ${npcInteractionData.coords.x} Y: ${npcInteractionData.coords.y}`);
|
|
109
|
+
eventhandler_1.EventEmitter.emit('npcInteractionClick', npcInteractionData, 1000);
|
|
110
|
+
});
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
exports.npcHandler = new NPCHandler();
|
|
114
|
+
//# sourceMappingURL=npchandler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"npchandler.js","sourceRoot":"","sources":["../../../../../../../packages/laser/src/lib/phaser/npc/npchandler.ts"],"names":[],"mappings":"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"}
|