dcl-npc-toolkit 0.0.0 → 1.0.6-20230511223948.commit-74300a8
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/LICENSE +201 -0
- package/README.md +622 -0
- package/dist/components.d.ts +2 -0
- package/dist/components.js +4 -0
- package/dist/config.d.ts +11 -0
- package/dist/config.js +89 -0
- package/dist/dialog.d.ts +38 -0
- package/dist/dialog.js +284 -0
- package/dist/faceUserSystem.d.ts +7 -0
- package/dist/faceUserSystem.js +28 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.js +5 -0
- package/dist/npc.d.ts +14 -0
- package/dist/npc.js +365 -0
- package/dist/npcData.d.ts +13 -0
- package/dist/npcData.js +15 -0
- package/dist/systems.d.ts +2 -0
- package/dist/systems.js +37 -0
- package/dist/types.d.ts +119 -0
- package/dist/types.js +39 -0
- package/dist/ui.d.ts +13 -0
- package/dist/ui.js +92 -0
- package/dist/uiResources.d.ts +320 -0
- package/dist/uiResources.js +321 -0
- package/package.json +32 -6
- package/index.js +0 -0
package/dist/config.js
ADDED
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
import { Color4 } from "@dcl/sdk/math";
|
|
2
|
+
export let extraFemaleShoes = [
|
|
3
|
+
"urn:decentraland:off-chain:base-avatars:bun_shoes",
|
|
4
|
+
"urn:decentraland:off-chain:base-avatars:pink_blue_socks",
|
|
5
|
+
"urn:decentraland:off-chain:base-avatars:SchoolShoes",
|
|
6
|
+
"urn:decentraland:off-chain:base-avatars:ruby_blue_loafer"
|
|
7
|
+
];
|
|
8
|
+
export let extraFemalePants = [
|
|
9
|
+
"urn:decentraland:off-chain:base-avatars:f_stripe_white_pants",
|
|
10
|
+
"urn:decentraland:off-chain:base-avatars:f_red_modern_pants",
|
|
11
|
+
"urn:decentraland:off-chain:base-avatars:f_school_skirt",
|
|
12
|
+
"urn:decentraland:off-chain:base-avatars:f_capris",
|
|
13
|
+
"urn:decentraland:off-chain:base-avatars:f_red_comfy_pants"
|
|
14
|
+
];
|
|
15
|
+
export let extraFemaleTop = [
|
|
16
|
+
"urn:decentraland:off-chain:base-avatars:baggy_pullover",
|
|
17
|
+
"urn:decentraland:off-chain:base-avatars:light_green_shirt",
|
|
18
|
+
"urn:decentraland:off-chain:base-avatars:school_shirt",
|
|
19
|
+
"urn:decentraland:off-chain:base-avatars:f_blue_jacket",
|
|
20
|
+
"urn:decentraland:matic:collections-v2:0xb8326d69371668bb8403463e4f71c10b408535c3:1"
|
|
21
|
+
];
|
|
22
|
+
export let extraMaleShoes = [
|
|
23
|
+
"urn:decentraland:off-chain:base-avatars:comfy_sport_sandals",
|
|
24
|
+
"urn:decentraland:off-chain:base-avatars:crocs",
|
|
25
|
+
"urn:decentraland:off-chain:base-avatars:m_mountainshoes.glb",
|
|
26
|
+
"urn:decentraland:off-chain:base-avatars:citycomfortableshoes",
|
|
27
|
+
"urn:decentraland:off-chain:base-avatars:classic_shoes",
|
|
28
|
+
"urn:decentraland:off-chain:base-avatars:sneakers",
|
|
29
|
+
"urn:decentraland:off-chain:base-avatars:moccasin"
|
|
30
|
+
];
|
|
31
|
+
export let extraMalePants = [
|
|
32
|
+
"urn:decentraland:off-chain:base-avatars:soccer_pants",
|
|
33
|
+
"urn:decentraland:off-chain:base-avatars:swim_short",
|
|
34
|
+
"urn:decentraland:off-chain:base-avatars:kilt",
|
|
35
|
+
"urn:decentraland:off-chain:base-avatars:hip_hop_joggers",
|
|
36
|
+
"urn:decentraland:off-chain:base-avatars:brown_pants_02",
|
|
37
|
+
"urn:decentraland:off-chain:base-avatars:basketball_shorts",
|
|
38
|
+
"urn:decentraland:off-chain:base-avatars:brown_pants_02",
|
|
39
|
+
"urn:decentraland:off-chain:base-avatars:puffer_jacket_hoodie"
|
|
40
|
+
];
|
|
41
|
+
export let extraMaleTop = [
|
|
42
|
+
"urn:decentraland:off-chain:base-avatars:yellow_tshirt",
|
|
43
|
+
"urn:decentraland:off-chain:base-avatars:m_sweater",
|
|
44
|
+
"urn:decentraland:off-chain:base-avatars:turtle_neck_sweater",
|
|
45
|
+
"urn:decentraland:off-chain:base-avatars:puffer_jacket_hoodie",
|
|
46
|
+
"urn:decentraland:off-chain:base-avatars:elegant_sweater",
|
|
47
|
+
"urn:decentraland:off-chain:base-avatars:pride_tshirt",
|
|
48
|
+
"urn:decentraland:off-chain:base-avatars:elegant_sweater",
|
|
49
|
+
"urn:decentraland:matic:collections-v2:0xb8326d69371668bb8403463e4f71c10b408535c3:1"
|
|
50
|
+
];
|
|
51
|
+
export let extraskin = [
|
|
52
|
+
Color4.create(.24, .13, .04),
|
|
53
|
+
Color4.create(.6, .37, .22),
|
|
54
|
+
Color4.create(.48, .28, .09),
|
|
55
|
+
Color4.create(.98, .82, .51),
|
|
56
|
+
];
|
|
57
|
+
export let extrahair = [
|
|
58
|
+
Color4.create(.6, .37, .22),
|
|
59
|
+
Color4.create(.3, .52, .4),
|
|
60
|
+
Color4.create(.55, .13, .08),
|
|
61
|
+
Color4.create(.11, .11, .11),
|
|
62
|
+
Color4.create(.48, .28, .09),
|
|
63
|
+
Color4.create(.98, .82, .51),
|
|
64
|
+
Color4.create(.55, .13, .08),
|
|
65
|
+
];
|
|
66
|
+
export let extraFemaleHairstyle = [
|
|
67
|
+
"urn:decentraland:off-chain:base-avatars:hair_anime_01",
|
|
68
|
+
"urn:decentraland:off-chain:base-avatars:pony_tail",
|
|
69
|
+
"urn:decentraland:off-chain:base-avatars:standard_hair",
|
|
70
|
+
"urn:decentraland:off-chain:base-avatars:shoulder_hair",
|
|
71
|
+
"urn:decentraland:off-chain:base-avatars:two_tails"
|
|
72
|
+
];
|
|
73
|
+
export let extraMaleHairstyle = [
|
|
74
|
+
"urn:decentraland:off-chain:base-avatars:standard_hair",
|
|
75
|
+
"urn:decentraland:off-chain:base-avatars:hair_oldie",
|
|
76
|
+
"urn:decentraland:off-chain:base-avatars:keanu_hair",
|
|
77
|
+
"urn:decentraland:off-chain:base-avatars:tall_front_01",
|
|
78
|
+
"urn:decentraland:off-chain:base-avatars:00_bald"
|
|
79
|
+
];
|
|
80
|
+
export let extraeyes = [
|
|
81
|
+
Color4.create(.22, .49, .69),
|
|
82
|
+
Color4.create(.6, .37, .22),
|
|
83
|
+
Color4.create(.3, .52, .4),
|
|
84
|
+
Color4.create(.55, .13, .08),
|
|
85
|
+
Color4.create(.11, .11, .11),
|
|
86
|
+
Color4.create(.48, .28, .09),
|
|
87
|
+
Color4.create(.98, .82, .51),
|
|
88
|
+
];
|
|
89
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2NvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBRXRDLE1BQU0sQ0FBQyxJQUFJLGdCQUFnQixHQUFRO0lBQy9CLG1EQUFtRDtJQUNuRCx5REFBeUQ7SUFDekQscURBQXFEO0lBQ3JELDBEQUEwRDtDQUM3RCxDQUFBO0FBRUQsTUFBTSxDQUFDLElBQUksZ0JBQWdCLEdBQVE7SUFDaEMsOERBQThEO0lBQzlELDREQUE0RDtJQUM1RCx3REFBd0Q7SUFDeEQsa0RBQWtEO0lBQ2xELDJEQUEyRDtDQUM3RCxDQUFBO0FBRUQsTUFBTSxDQUFDLElBQUksY0FBYyxHQUFRO0lBQzlCLHdEQUF3RDtJQUN4RCwyREFBMkQ7SUFDM0Qsc0RBQXNEO0lBQ3RELHVEQUF1RDtJQUN2RCxvRkFBb0Y7Q0FDdEYsQ0FBQTtBQUVELE1BQU0sQ0FBQyxJQUFJLGNBQWMsR0FBUTtJQUM5Qiw2REFBNkQ7SUFDN0QsK0NBQStDO0lBQy9DLDZEQUE2RDtJQUM3RCw4REFBOEQ7SUFDOUQsdURBQXVEO0lBQ3ZELGtEQUFrRDtJQUNsRCxrREFBa0Q7Q0FDcEQsQ0FBQTtBQUVELE1BQU0sQ0FBQyxJQUFJLGNBQWMsR0FBUTtJQUM5QixzREFBc0Q7SUFDdEQsb0RBQW9EO0lBQ3BELDhDQUE4QztJQUM5Qyx5REFBeUQ7SUFDekQsd0RBQXdEO0lBQ3ZELDJEQUEyRDtJQUMzRCx3REFBd0Q7SUFDeEQsOERBQThEO0NBQ2pFLENBQUE7QUFFRCxNQUFNLENBQUMsSUFBSSxZQUFZLEdBQVE7SUFDNUIsdURBQXVEO0lBQ3ZELG1EQUFtRDtJQUNuRCw2REFBNkQ7SUFDN0QsOERBQThEO0lBQzlELHlEQUF5RDtJQUN6RCxzREFBc0Q7SUFDdEQseURBQXlEO0lBQ3pELG9GQUFvRjtDQUN0RixDQUFBO0FBRUQsTUFBTSxDQUFDLElBQUksU0FBUyxHQUFRO0lBQ3pCLE1BQU0sQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFDLEdBQUcsRUFBQyxHQUFHLENBQUM7SUFDMUIsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUMsR0FBRyxFQUFDLEdBQUcsQ0FBQztJQUN6QixNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBQyxHQUFHLEVBQUUsR0FBRyxDQUFDO0lBQzNCLE1BQU0sQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBQyxHQUFHLENBQUM7Q0FDN0IsQ0FBQTtBQUVELE1BQU0sQ0FBQyxJQUFJLFNBQVMsR0FBUTtJQUN6QixNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBQyxHQUFHLEVBQUMsR0FBRyxDQUFDO0lBQ3pCLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFDLEdBQUcsRUFBQyxFQUFFLENBQUM7SUFDeEIsTUFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUMsR0FBRyxFQUFDLEdBQUcsQ0FBQztJQUMxQixNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBQyxHQUFHLEVBQUMsR0FBRyxDQUFDO0lBQzFCLE1BQU0sQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFDLEdBQUcsRUFBRSxHQUFHLENBQUM7SUFDM0IsTUFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFDLEdBQUcsQ0FBQztJQUMzQixNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUMsR0FBRyxDQUFDO0NBQzdCLENBQUE7QUFFRCxNQUFNLENBQUMsSUFBSSxvQkFBb0IsR0FBUztJQUNyQyx1REFBdUQ7SUFDdkQsbURBQW1EO0lBQ25ELHVEQUF1RDtJQUN2RCx1REFBdUQ7SUFDdkQsbURBQW1EO0NBQ3JELENBQUE7QUFFRCxNQUFNLENBQUMsSUFBSSxrQkFBa0IsR0FBUztJQUNuQyx1REFBdUQ7SUFDdkQsb0RBQW9EO0lBQ3BELG9EQUFvRDtJQUNwRCx1REFBdUQ7SUFDdkQsaURBQWlEO0NBQ25ELENBQUE7QUFFRCxNQUFNLENBQUMsSUFBSSxTQUFTLEdBQVM7SUFDMUIsTUFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUMsR0FBRyxFQUFDLEdBQUcsQ0FBQztJQUMxQixNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBQyxHQUFHLEVBQUMsR0FBRyxDQUFDO0lBQ3pCLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFDLEdBQUcsRUFBQyxFQUFFLENBQUM7SUFDeEIsTUFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUMsR0FBRyxFQUFDLEdBQUcsQ0FBQztJQUMxQixNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBQyxHQUFHLEVBQUMsR0FBRyxDQUFDO0lBQzFCLE1BQU0sQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFDLEdBQUcsRUFBRSxHQUFHLENBQUM7SUFDM0IsTUFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFDLEdBQUcsQ0FBQztDQUM3QixDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29sb3I0IH0gZnJvbSBcIkBkY2wvc2RrL21hdGhcIlxuXG5leHBvcnQgbGV0IGV4dHJhRmVtYWxlU2hvZXM6YW55W10gPVtcbiAgICBcInVybjpkZWNlbnRyYWxhbmQ6b2ZmLWNoYWluOmJhc2UtYXZhdGFyczpidW5fc2hvZXNcIixcbiAgICBcInVybjpkZWNlbnRyYWxhbmQ6b2ZmLWNoYWluOmJhc2UtYXZhdGFyczpwaW5rX2JsdWVfc29ja3NcIixcbiAgICBcInVybjpkZWNlbnRyYWxhbmQ6b2ZmLWNoYWluOmJhc2UtYXZhdGFyczpTY2hvb2xTaG9lc1wiLFxuICAgIFwidXJuOmRlY2VudHJhbGFuZDpvZmYtY2hhaW46YmFzZS1hdmF0YXJzOnJ1YnlfYmx1ZV9sb2FmZXJcIlxuXVxuXG5leHBvcnQgbGV0IGV4dHJhRmVtYWxlUGFudHM6YW55W10gPVtcbiAgIFwidXJuOmRlY2VudHJhbGFuZDpvZmYtY2hhaW46YmFzZS1hdmF0YXJzOmZfc3RyaXBlX3doaXRlX3BhbnRzXCIsXG4gICBcInVybjpkZWNlbnRyYWxhbmQ6b2ZmLWNoYWluOmJhc2UtYXZhdGFyczpmX3JlZF9tb2Rlcm5fcGFudHNcIixcbiAgIFwidXJuOmRlY2VudHJhbGFuZDpvZmYtY2hhaW46YmFzZS1hdmF0YXJzOmZfc2Nob29sX3NraXJ0XCIsXG4gICBcInVybjpkZWNlbnRyYWxhbmQ6b2ZmLWNoYWluOmJhc2UtYXZhdGFyczpmX2NhcHJpc1wiLFxuICAgXCJ1cm46ZGVjZW50cmFsYW5kOm9mZi1jaGFpbjpiYXNlLWF2YXRhcnM6Zl9yZWRfY29tZnlfcGFudHNcIlxuXVxuXG5leHBvcnQgbGV0IGV4dHJhRmVtYWxlVG9wOmFueVtdID1bXG4gICBcInVybjpkZWNlbnRyYWxhbmQ6b2ZmLWNoYWluOmJhc2UtYXZhdGFyczpiYWdneV9wdWxsb3ZlclwiLFxuICAgXCJ1cm46ZGVjZW50cmFsYW5kOm9mZi1jaGFpbjpiYXNlLWF2YXRhcnM6bGlnaHRfZ3JlZW5fc2hpcnRcIixcbiAgIFwidXJuOmRlY2VudHJhbGFuZDpvZmYtY2hhaW46YmFzZS1hdmF0YXJzOnNjaG9vbF9zaGlydFwiLFxuICAgXCJ1cm46ZGVjZW50cmFsYW5kOm9mZi1jaGFpbjpiYXNlLWF2YXRhcnM6Zl9ibHVlX2phY2tldFwiLFxuICAgXCJ1cm46ZGVjZW50cmFsYW5kOm1hdGljOmNvbGxlY3Rpb25zLXYyOjB4YjgzMjZkNjkzNzE2NjhiYjg0MDM0NjNlNGY3MWMxMGI0MDg1MzVjMzoxXCJcbl1cblxuZXhwb3J0IGxldCBleHRyYU1hbGVTaG9lczphbnlbXSA9W1xuICAgXCJ1cm46ZGVjZW50cmFsYW5kOm9mZi1jaGFpbjpiYXNlLWF2YXRhcnM6Y29tZnlfc3BvcnRfc2FuZGFsc1wiLFxuICAgXCJ1cm46ZGVjZW50cmFsYW5kOm9mZi1jaGFpbjpiYXNlLWF2YXRhcnM6Y3JvY3NcIixcbiAgIFwidXJuOmRlY2VudHJhbGFuZDpvZmYtY2hhaW46YmFzZS1hdmF0YXJzOm1fbW91bnRhaW5zaG9lcy5nbGJcIixcbiAgIFwidXJuOmRlY2VudHJhbGFuZDpvZmYtY2hhaW46YmFzZS1hdmF0YXJzOmNpdHljb21mb3J0YWJsZXNob2VzXCIsXG4gICBcInVybjpkZWNlbnRyYWxhbmQ6b2ZmLWNoYWluOmJhc2UtYXZhdGFyczpjbGFzc2ljX3Nob2VzXCIsXG4gICBcInVybjpkZWNlbnRyYWxhbmQ6b2ZmLWNoYWluOmJhc2UtYXZhdGFyczpzbmVha2Vyc1wiLFxuICAgXCJ1cm46ZGVjZW50cmFsYW5kOm9mZi1jaGFpbjpiYXNlLWF2YXRhcnM6bW9jY2FzaW5cIlxuXVxuXG5leHBvcnQgbGV0IGV4dHJhTWFsZVBhbnRzOmFueVtdID1bXG4gICBcInVybjpkZWNlbnRyYWxhbmQ6b2ZmLWNoYWluOmJhc2UtYXZhdGFyczpzb2NjZXJfcGFudHNcIixcbiAgIFwidXJuOmRlY2VudHJhbGFuZDpvZmYtY2hhaW46YmFzZS1hdmF0YXJzOnN3aW1fc2hvcnRcIixcbiAgIFwidXJuOmRlY2VudHJhbGFuZDpvZmYtY2hhaW46YmFzZS1hdmF0YXJzOmtpbHRcIixcbiAgIFwidXJuOmRlY2VudHJhbGFuZDpvZmYtY2hhaW46YmFzZS1hdmF0YXJzOmhpcF9ob3Bfam9nZ2Vyc1wiLFxuICAgXCJ1cm46ZGVjZW50cmFsYW5kOm9mZi1jaGFpbjpiYXNlLWF2YXRhcnM6YnJvd25fcGFudHNfMDJcIixcbiAgICBcInVybjpkZWNlbnRyYWxhbmQ6b2ZmLWNoYWluOmJhc2UtYXZhdGFyczpiYXNrZXRiYWxsX3Nob3J0c1wiLFxuICAgIFwidXJuOmRlY2VudHJhbGFuZDpvZmYtY2hhaW46YmFzZS1hdmF0YXJzOmJyb3duX3BhbnRzXzAyXCIsXG4gICAgXCJ1cm46ZGVjZW50cmFsYW5kOm9mZi1jaGFpbjpiYXNlLWF2YXRhcnM6cHVmZmVyX2phY2tldF9ob29kaWVcIlxuXVxuXG5leHBvcnQgbGV0IGV4dHJhTWFsZVRvcDphbnlbXSA9W1xuICAgXCJ1cm46ZGVjZW50cmFsYW5kOm9mZi1jaGFpbjpiYXNlLWF2YXRhcnM6eWVsbG93X3RzaGlydFwiLFxuICAgXCJ1cm46ZGVjZW50cmFsYW5kOm9mZi1jaGFpbjpiYXNlLWF2YXRhcnM6bV9zd2VhdGVyXCIsXG4gICBcInVybjpkZWNlbnRyYWxhbmQ6b2ZmLWNoYWluOmJhc2UtYXZhdGFyczp0dXJ0bGVfbmVja19zd2VhdGVyXCIsXG4gICBcInVybjpkZWNlbnRyYWxhbmQ6b2ZmLWNoYWluOmJhc2UtYXZhdGFyczpwdWZmZXJfamFja2V0X2hvb2RpZVwiLFxuICAgXCJ1cm46ZGVjZW50cmFsYW5kOm9mZi1jaGFpbjpiYXNlLWF2YXRhcnM6ZWxlZ2FudF9zd2VhdGVyXCIsXG4gICBcInVybjpkZWNlbnRyYWxhbmQ6b2ZmLWNoYWluOmJhc2UtYXZhdGFyczpwcmlkZV90c2hpcnRcIixcbiAgIFwidXJuOmRlY2VudHJhbGFuZDpvZmYtY2hhaW46YmFzZS1hdmF0YXJzOmVsZWdhbnRfc3dlYXRlclwiLFxuICAgXCJ1cm46ZGVjZW50cmFsYW5kOm1hdGljOmNvbGxlY3Rpb25zLXYyOjB4YjgzMjZkNjkzNzE2NjhiYjg0MDM0NjNlNGY3MWMxMGI0MDg1MzVjMzoxXCJcbl1cblxuZXhwb3J0IGxldCBleHRyYXNraW46YW55W109IFtcbiAgIENvbG9yNC5jcmVhdGUoLjI0LC4xMywuMDQpLFxuICAgQ29sb3I0LmNyZWF0ZSguNiwuMzcsLjIyKSxcbiAgIENvbG9yNC5jcmVhdGUoLjQ4LC4yOCwgLjA5KSxcbiAgIENvbG9yNC5jcmVhdGUoLjk4LCAuODIsLjUxKSxcbl1cblxuZXhwb3J0IGxldCBleHRyYWhhaXI6YW55W109IFtcbiAgIENvbG9yNC5jcmVhdGUoLjYsLjM3LC4yMiksXG4gICBDb2xvcjQuY3JlYXRlKC4zLC41MiwuNCksXG4gICBDb2xvcjQuY3JlYXRlKC41NSwuMTMsLjA4KSxcbiAgIENvbG9yNC5jcmVhdGUoLjExLC4xMSwuMTEpLFxuICAgQ29sb3I0LmNyZWF0ZSguNDgsLjI4LCAuMDkpLFxuICAgQ29sb3I0LmNyZWF0ZSguOTgsIC44MiwuNTEpLFxuICAgQ29sb3I0LmNyZWF0ZSguNTUsIC4xMywuMDgpLFxuXVxuXG5leHBvcnQgbGV0IGV4dHJhRmVtYWxlSGFpcnN0eWxlOmFueVtdID0gW1xuICAgXCJ1cm46ZGVjZW50cmFsYW5kOm9mZi1jaGFpbjpiYXNlLWF2YXRhcnM6aGFpcl9hbmltZV8wMVwiLFxuICAgXCJ1cm46ZGVjZW50cmFsYW5kOm9mZi1jaGFpbjpiYXNlLWF2YXRhcnM6cG9ueV90YWlsXCIsXG4gICBcInVybjpkZWNlbnRyYWxhbmQ6b2ZmLWNoYWluOmJhc2UtYXZhdGFyczpzdGFuZGFyZF9oYWlyXCIsXG4gICBcInVybjpkZWNlbnRyYWxhbmQ6b2ZmLWNoYWluOmJhc2UtYXZhdGFyczpzaG91bGRlcl9oYWlyXCIsXG4gICBcInVybjpkZWNlbnRyYWxhbmQ6b2ZmLWNoYWluOmJhc2UtYXZhdGFyczp0d29fdGFpbHNcIlxuXVxuXG5leHBvcnQgbGV0IGV4dHJhTWFsZUhhaXJzdHlsZTphbnlbXSA9IFtcbiAgIFwidXJuOmRlY2VudHJhbGFuZDpvZmYtY2hhaW46YmFzZS1hdmF0YXJzOnN0YW5kYXJkX2hhaXJcIixcbiAgIFwidXJuOmRlY2VudHJhbGFuZDpvZmYtY2hhaW46YmFzZS1hdmF0YXJzOmhhaXJfb2xkaWVcIixcbiAgIFwidXJuOmRlY2VudHJhbGFuZDpvZmYtY2hhaW46YmFzZS1hdmF0YXJzOmtlYW51X2hhaXJcIixcbiAgIFwidXJuOmRlY2VudHJhbGFuZDpvZmYtY2hhaW46YmFzZS1hdmF0YXJzOnRhbGxfZnJvbnRfMDFcIixcbiAgIFwidXJuOmRlY2VudHJhbGFuZDpvZmYtY2hhaW46YmFzZS1hdmF0YXJzOjAwX2JhbGRcIlxuXVxuXG5leHBvcnQgbGV0IGV4dHJhZXllczphbnlbXSA9IFtcbiAgIENvbG9yNC5jcmVhdGUoLjIyLC40OSwuNjkpLFxuICAgQ29sb3I0LmNyZWF0ZSguNiwuMzcsLjIyKSxcbiAgIENvbG9yNC5jcmVhdGUoLjMsLjUyLC40KSxcbiAgIENvbG9yNC5jcmVhdGUoLjU1LC4xMywuMDgpLFxuICAgQ29sb3I0LmNyZWF0ZSguMTEsLjExLC4xMSksXG4gICBDb2xvcjQuY3JlYXRlKC40OCwuMjgsIC4wOSksXG4gICBDb2xvcjQuY3JlYXRlKC45OCwgLjgyLC41MSksXG5dXG4iXX0=
|
package/dist/dialog.d.ts
ADDED
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { Entity } from "@dcl/sdk/ecs";
|
|
2
|
+
import { Dialog } from "./types";
|
|
3
|
+
export declare const npcDialogComponent: Map<Entity, any>;
|
|
4
|
+
export declare const npcDialogTypingSystems: Map<Entity, any>;
|
|
5
|
+
export declare enum ConfirmMode {
|
|
6
|
+
Confirm = 0,
|
|
7
|
+
Cancel = 1,
|
|
8
|
+
Next = 2,
|
|
9
|
+
Button3 = 3,
|
|
10
|
+
Button4 = 4
|
|
11
|
+
}
|
|
12
|
+
export declare function addDialog(npc: Entity, sound?: string): void;
|
|
13
|
+
export declare function getText(): any;
|
|
14
|
+
export declare function getButtonText(button: number): string;
|
|
15
|
+
export declare function getFontSize(): any;
|
|
16
|
+
export declare function displayDialog(): any;
|
|
17
|
+
export declare function displayButton(button: number): any;
|
|
18
|
+
export declare function displayFirstButtonContainer(): any;
|
|
19
|
+
export declare function displaySecondButtonContainer(): any;
|
|
20
|
+
export declare function getTextPosition(): {
|
|
21
|
+
top: any;
|
|
22
|
+
};
|
|
23
|
+
export declare function buttonClick(button: number): void;
|
|
24
|
+
export declare function closeDialog(npc: Entity): void;
|
|
25
|
+
export declare function talk(npc: Entity, dialog: Dialog[], startIndex?: number, duration?: number): void;
|
|
26
|
+
export declare function handleDialogClick(): void;
|
|
27
|
+
export declare function confirmText(npc: Entity, mode: ConfirmMode): void;
|
|
28
|
+
export type ImageAtlasData = {
|
|
29
|
+
atlasWidth: number;
|
|
30
|
+
atlasHeight: number;
|
|
31
|
+
sourceWidth: number;
|
|
32
|
+
sourceHeight: number;
|
|
33
|
+
sourceLeft: number;
|
|
34
|
+
sourceTop: number;
|
|
35
|
+
};
|
|
36
|
+
export declare function getImageAtlasMapping(data?: ImageAtlasData): number[];
|
|
37
|
+
export declare function realWidth(width?: number): number;
|
|
38
|
+
export declare function realHeight(height?: number): number;
|
package/dist/dialog.js
ADDED
|
@@ -0,0 +1,284 @@
|
|
|
1
|
+
import * as utils from '@dcl-sdk/utils';
|
|
2
|
+
import { AudioSource, engine } from "@dcl/sdk/ecs";
|
|
3
|
+
import { activeNPC, npcDataComponent } from "./npc";
|
|
4
|
+
import { IsTypingDialog } from "./components";
|
|
5
|
+
import { NPCState } from "./types";
|
|
6
|
+
import { section } from './ui';
|
|
7
|
+
export const npcDialogComponent = new Map();
|
|
8
|
+
export const npcDialogTypingSystems = new Map();
|
|
9
|
+
export var ConfirmMode;
|
|
10
|
+
(function (ConfirmMode) {
|
|
11
|
+
ConfirmMode[ConfirmMode["Confirm"] = 0] = "Confirm";
|
|
12
|
+
ConfirmMode[ConfirmMode["Cancel"] = 1] = "Cancel";
|
|
13
|
+
ConfirmMode[ConfirmMode["Next"] = 2] = "Next";
|
|
14
|
+
ConfirmMode[ConfirmMode["Button3"] = 3] = "Button3";
|
|
15
|
+
ConfirmMode[ConfirmMode["Button4"] = 4] = "Button4";
|
|
16
|
+
})(ConfirmMode || (ConfirmMode = {}));
|
|
17
|
+
export function addDialog(npc, sound) {
|
|
18
|
+
console.log('adding dialog for npc', npc);
|
|
19
|
+
npcDialogComponent.set(npc, {
|
|
20
|
+
typing: true,
|
|
21
|
+
visible: false,
|
|
22
|
+
visibleText: "",
|
|
23
|
+
visibleChars: 0,
|
|
24
|
+
fullText: "",
|
|
25
|
+
timer: 0,
|
|
26
|
+
speed: 30,
|
|
27
|
+
script: [],
|
|
28
|
+
index: 0,
|
|
29
|
+
sound: sound ? sound : undefined,
|
|
30
|
+
soundPlayer: sound ? engine.addEntity() : undefined,
|
|
31
|
+
fontSize: 22,
|
|
32
|
+
isQuestion: false,
|
|
33
|
+
buttons: 0
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
export function getText() {
|
|
37
|
+
return activeNPC == 0 || !npcDialogComponent.has(activeNPC) ? "" : npcDialogComponent.get(activeNPC).visibleText;
|
|
38
|
+
}
|
|
39
|
+
export function getButtonText(button) {
|
|
40
|
+
let text = "";
|
|
41
|
+
if (activeNPC != 0 && npcDialogComponent.has(activeNPC)) {
|
|
42
|
+
let dialogData = npcDialogComponent.get(activeNPC);
|
|
43
|
+
if (dialogData.isQuestion && dialogData.buttons > button) {
|
|
44
|
+
text = dialogData.script[dialogData.index].buttons[button].label;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
return text;
|
|
48
|
+
}
|
|
49
|
+
export function getFontSize() {
|
|
50
|
+
return activeNPC == 0 || !npcDialogComponent.has(activeNPC) ? 22 : npcDialogComponent.get(activeNPC).fontSize;
|
|
51
|
+
}
|
|
52
|
+
export function displayDialog() {
|
|
53
|
+
return activeNPC == 0 || !npcDialogComponent.has(activeNPC) ? false : npcDialogComponent.get(activeNPC).visible;
|
|
54
|
+
}
|
|
55
|
+
export function displayButton(button) {
|
|
56
|
+
return activeNPC == 0 || !npcDialogComponent.has(activeNPC) ? false : npcDialogComponent.get(activeNPC).isQuestion && npcDialogComponent.get(activeNPC).buttons >= button;
|
|
57
|
+
}
|
|
58
|
+
export function displayFirstButtonContainer() {
|
|
59
|
+
return activeNPC == 0 || !npcDialogComponent.has(activeNPC) ? false : npcDialogComponent.get(activeNPC).isQuestion && npcDialogComponent.get(activeNPC).buttons >= 1;
|
|
60
|
+
}
|
|
61
|
+
export function displaySecondButtonContainer() {
|
|
62
|
+
return activeNPC == 0 || !npcDialogComponent.has(activeNPC) ? false : npcDialogComponent.get(activeNPC).isQuestion && npcDialogComponent.get(activeNPC).buttons >= 3;
|
|
63
|
+
}
|
|
64
|
+
export function getTextPosition() {
|
|
65
|
+
return activeNPC == 0 || !npcDialogComponent.has(activeNPC) ? { top: 0 } : { top: npcDataComponent.get(activeNPC).margin };
|
|
66
|
+
}
|
|
67
|
+
export function buttonClick(button) {
|
|
68
|
+
if (activeNPC != 0 && npcDataComponent.has(activeNPC)) {
|
|
69
|
+
confirmText(activeNPC, button);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
export function closeDialog(npc) {
|
|
73
|
+
let dialogData = npcDialogComponent.get(npc);
|
|
74
|
+
dialogData.visible = false;
|
|
75
|
+
dialogData.typing = false;
|
|
76
|
+
dialogData.visibleText = "";
|
|
77
|
+
dialogData.visibleChars = 0;
|
|
78
|
+
dialogData.fullText = "";
|
|
79
|
+
dialogData.timer = 0;
|
|
80
|
+
dialogData.index = 0;
|
|
81
|
+
dialogData.script = [];
|
|
82
|
+
dialogData.buttons = 0;
|
|
83
|
+
dialogData.margin = 0;
|
|
84
|
+
}
|
|
85
|
+
export function talk(npc, dialog, startIndex, duration) {
|
|
86
|
+
npcDataComponent.get(npc).introduced = true;
|
|
87
|
+
console.log('trying to talk npc');
|
|
88
|
+
if (npcDialogComponent.has(npc)) {
|
|
89
|
+
console.log('we have npc dialog compoentn for ', npc);
|
|
90
|
+
npcDataComponent.get(npc).state = NPCState.TALKING;
|
|
91
|
+
openDialog(npc, dialog, startIndex ? startIndex : 0);
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
function openDialog(npc, dialog, startIndex) {
|
|
95
|
+
let dialogData = npcDialogComponent.get(npc);
|
|
96
|
+
dialogData.script = addLineBreaks(dialog);
|
|
97
|
+
dialogData.index = startIndex;
|
|
98
|
+
let currentText = dialog[startIndex] ? dialog[startIndex] : { text: '' };
|
|
99
|
+
if (currentText.audio) {
|
|
100
|
+
AudioSource.createOrReplace(dialogData.soundPlayer, {
|
|
101
|
+
audioClipUrl: currentText.audio,
|
|
102
|
+
loop: false,
|
|
103
|
+
playing: false
|
|
104
|
+
});
|
|
105
|
+
let audio = AudioSource.getMutable(dialogData.soundPlayer);
|
|
106
|
+
audio.volume = 0.5;
|
|
107
|
+
audio.playing = true;
|
|
108
|
+
}
|
|
109
|
+
else if (dialogData.sound) {
|
|
110
|
+
AudioSource.createOrReplace(dialogData.soundPlayer, {
|
|
111
|
+
audioClipUrl: dialogData.sound,
|
|
112
|
+
loop: false,
|
|
113
|
+
playing: false
|
|
114
|
+
});
|
|
115
|
+
let audio = AudioSource.getMutable(dialogData.soundPlayer);
|
|
116
|
+
audio.volume = 0.5;
|
|
117
|
+
audio.playing = true;
|
|
118
|
+
}
|
|
119
|
+
beginTyping(npc);
|
|
120
|
+
}
|
|
121
|
+
function beginTyping(npc) {
|
|
122
|
+
let dialogData = npcDialogComponent.get(npc);
|
|
123
|
+
dialogData.fullText = dialogData.script[dialogData.index].text;
|
|
124
|
+
dialogData.visible = true;
|
|
125
|
+
dialogData.typing = true;
|
|
126
|
+
dialogData.visibleText = "";
|
|
127
|
+
dialogData.visibleChars = 0;
|
|
128
|
+
dialogData.timer = 0;
|
|
129
|
+
dialogData.isQuestion = false;
|
|
130
|
+
dialogData.buttons = 0;
|
|
131
|
+
if (dialogData.script[dialogData.index].isQuestion) {
|
|
132
|
+
dialogData.buttons = dialogData.script[dialogData.index].buttons.length;
|
|
133
|
+
if (dialogData.buttons >= 3) {
|
|
134
|
+
dialogData.margin = -300;
|
|
135
|
+
}
|
|
136
|
+
else if (dialogData.buttons >= 1) {
|
|
137
|
+
dialogData.margin = -300;
|
|
138
|
+
}
|
|
139
|
+
console.log(dialogData);
|
|
140
|
+
utils.timers.setTimeout(function () {
|
|
141
|
+
console.log('setting question to true');
|
|
142
|
+
dialogData.isQuestion = true;
|
|
143
|
+
}, 700);
|
|
144
|
+
}
|
|
145
|
+
dialogData.openTime = Math.floor(Date.now());
|
|
146
|
+
if (dialogData.script[dialogData.index].fontSize) {
|
|
147
|
+
dialogData.fontSize = dialogData.script[dialogData.index].fontSize;
|
|
148
|
+
}
|
|
149
|
+
if (dialogData.script[dialogData.index].hasOwnProperty("typeSpeed")) {
|
|
150
|
+
dialogData.speed = dialogData.script[dialogData.index].typeSpeed;
|
|
151
|
+
}
|
|
152
|
+
else {
|
|
153
|
+
dialogData.speed = 30;
|
|
154
|
+
}
|
|
155
|
+
if (dialogData.speed <= 0) {
|
|
156
|
+
rushText(npc);
|
|
157
|
+
}
|
|
158
|
+
else {
|
|
159
|
+
if (!IsTypingDialog.has(npc)) {
|
|
160
|
+
IsTypingDialog.create(npc);
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
function addLineBreaks(dialog) {
|
|
165
|
+
let cleaned = [];
|
|
166
|
+
dialog.forEach((d) => {
|
|
167
|
+
d.text = lineBreak(d.text, 50);
|
|
168
|
+
cleaned.push(d);
|
|
169
|
+
});
|
|
170
|
+
return cleaned;
|
|
171
|
+
}
|
|
172
|
+
function lineBreak(text, maxLineLength) {
|
|
173
|
+
const words = text.split(' ');
|
|
174
|
+
let currentLine = '';
|
|
175
|
+
const lines = [];
|
|
176
|
+
for (const word of words) {
|
|
177
|
+
if (currentLine.length + word.length + 1 <= maxLineLength) {
|
|
178
|
+
currentLine += `${word} `;
|
|
179
|
+
}
|
|
180
|
+
else {
|
|
181
|
+
lines.push(currentLine.trim());
|
|
182
|
+
currentLine = `${word} `;
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
lines.push(currentLine.trim());
|
|
186
|
+
return lines.join('\n');
|
|
187
|
+
}
|
|
188
|
+
export function handleDialogClick() {
|
|
189
|
+
let npc = activeNPC;
|
|
190
|
+
if (npcDialogComponent.has(npc)) {
|
|
191
|
+
let dialogData = npcDialogComponent.get(npc);
|
|
192
|
+
if (!dialogData.visible || (Math.floor(Date.now()) - dialogData.openTime < 100))
|
|
193
|
+
return;
|
|
194
|
+
if (dialogData.typing) {
|
|
195
|
+
rushText(npc);
|
|
196
|
+
}
|
|
197
|
+
else {
|
|
198
|
+
confirmText(npc, ConfirmMode.Next);
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
function rushText(npc) {
|
|
203
|
+
let dialogData = npcDialogComponent.get(npc);
|
|
204
|
+
dialogData.typing = false;
|
|
205
|
+
dialogData.timer = 0;
|
|
206
|
+
dialogData.visibleChars = dialogData.fullText.length;
|
|
207
|
+
dialogData.visibleText = dialogData.fullText;
|
|
208
|
+
}
|
|
209
|
+
export function confirmText(npc, mode) {
|
|
210
|
+
let dialogData = npcDialogComponent.get(npc);
|
|
211
|
+
dialogData.openTime = Math.floor(Date.now());
|
|
212
|
+
let currentText = dialogData.script[dialogData.index];
|
|
213
|
+
if (mode == ConfirmMode.Next) {
|
|
214
|
+
if (!currentText.isQuestion) {
|
|
215
|
+
if (currentText.triggeredByNext) {
|
|
216
|
+
currentText.triggeredByNext();
|
|
217
|
+
}
|
|
218
|
+
if (currentText.isEndOfDialog) {
|
|
219
|
+
closeDialog(npc);
|
|
220
|
+
return;
|
|
221
|
+
}
|
|
222
|
+
dialogData.index++;
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
if (mode == ConfirmMode.Confirm) {
|
|
226
|
+
if (currentText.buttons && currentText.buttons.length >= 1) {
|
|
227
|
+
if (typeof currentText.buttons[0].goToDialog === 'number') {
|
|
228
|
+
dialogData.index = currentText.buttons[0].goToDialog;
|
|
229
|
+
}
|
|
230
|
+
if (currentText.buttons[0].triggeredActions) {
|
|
231
|
+
currentText.buttons[0].triggeredActions();
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
if (mode == ConfirmMode.Cancel) {
|
|
236
|
+
if (currentText.buttons && currentText.buttons.length >= 1) {
|
|
237
|
+
if (typeof currentText.buttons[1].goToDialog === 'number') {
|
|
238
|
+
dialogData.index = currentText.buttons[1].goToDialog;
|
|
239
|
+
}
|
|
240
|
+
if (currentText.buttons[1].triggeredActions) {
|
|
241
|
+
currentText.buttons[1].triggeredActions();
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
if (mode == ConfirmMode.Button3) {
|
|
246
|
+
if (currentText.buttons && currentText.buttons.length >= 1) {
|
|
247
|
+
if (typeof currentText.buttons[2].goToDialog === 'number') {
|
|
248
|
+
dialogData.index = currentText.buttons[2].goToDialog;
|
|
249
|
+
}
|
|
250
|
+
if (currentText.buttons[2].triggeredActions) {
|
|
251
|
+
currentText.buttons[2].triggeredActions();
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
}
|
|
255
|
+
if (mode == ConfirmMode.Button4) {
|
|
256
|
+
if (currentText.buttons && currentText.buttons.length >= 1) {
|
|
257
|
+
if (typeof currentText.buttons[3].goToDialog === 'number') {
|
|
258
|
+
dialogData.index = currentText.buttons[3].goToDialog;
|
|
259
|
+
}
|
|
260
|
+
if (currentText.buttons[3].triggeredActions) {
|
|
261
|
+
currentText.buttons[3].triggeredActions();
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
}
|
|
265
|
+
beginTyping(npc);
|
|
266
|
+
}
|
|
267
|
+
export function getImageAtlasMapping(data) {
|
|
268
|
+
if (!data)
|
|
269
|
+
return [];
|
|
270
|
+
const { atlasWidth, atlasHeight, sourceWidth, sourceHeight, sourceTop, sourceLeft, } = data;
|
|
271
|
+
return [
|
|
272
|
+
sourceLeft / atlasWidth, (atlasHeight - sourceTop - sourceHeight) / atlasHeight,
|
|
273
|
+
sourceLeft / atlasWidth, (atlasHeight - sourceTop) / atlasHeight,
|
|
274
|
+
(sourceLeft + sourceWidth) / atlasWidth, (atlasHeight - sourceTop) / atlasHeight,
|
|
275
|
+
(sourceLeft + sourceWidth) / atlasWidth, (atlasHeight - sourceTop - sourceHeight) / atlasHeight,
|
|
276
|
+
];
|
|
277
|
+
}
|
|
278
|
+
export function realWidth(width) {
|
|
279
|
+
return width ? width : section.sourceWidth;
|
|
280
|
+
}
|
|
281
|
+
export function realHeight(height) {
|
|
282
|
+
return height ? height : section.sourceHeight;
|
|
283
|
+
}
|
|
284
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhbG9nLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2RpYWxvZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssS0FBSyxNQUFNLGdCQUFnQixDQUFBO0FBRXZDLE9BQU8sRUFBRSxXQUFXLEVBQVUsTUFBTSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQzNELE9BQU8sRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxPQUFPLENBQUM7QUFDcEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUU5QyxPQUFPLEVBQVUsUUFBUSxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQzNDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFHL0IsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQXFCLElBQUksR0FBRyxFQUFFLENBQUE7QUFDN0QsTUFBTSxDQUFDLE1BQU0sc0JBQXNCLEdBQXFCLElBQUksR0FBRyxFQUFFLENBQUE7QUFFakUsTUFBTSxDQUFOLElBQVksV0FNVDtBQU5ILFdBQVksV0FBVztJQUNuQixtREFBVyxDQUFBO0lBQ1gsaURBQVUsQ0FBQTtJQUNWLDZDQUFRLENBQUE7SUFDUixtREFBVyxDQUFBO0lBQ1gsbURBQVcsQ0FBQTtBQUNiLENBQUMsRUFOUyxXQUFXLEtBQVgsV0FBVyxRQU1wQjtBQUVILE1BQU0sVUFBVSxTQUFTLENBQUMsR0FBVSxFQUFFLEtBQWE7SUFDL0MsT0FBTyxDQUFDLEdBQUcsQ0FBQyx1QkFBdUIsRUFBRSxHQUFHLENBQUMsQ0FBQTtJQUN6QyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFO1FBQ3hCLE1BQU0sRUFBQyxJQUFJO1FBQ1gsT0FBTyxFQUFDLEtBQUs7UUFDYixXQUFXLEVBQUMsRUFBRTtRQUNkLFlBQVksRUFBQyxDQUFDO1FBQ2QsUUFBUSxFQUFDLEVBQUU7UUFDWCxLQUFLLEVBQUMsQ0FBQztRQUNQLEtBQUssRUFBQyxF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S0FBYTtJQUNyQyxPQUFPLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFBO0FBQzVDLENBQUM7QUFFRCxNQUFNLFVBQVUsVUFBVSxDQUFDLE1BQWM7SUFDdkMsT0FBTyxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQTtBQUMvQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgdXRpbHMgZnJvbSAnQGRjbC1zZGsvdXRpbHMnXG5cbmltcG9ydCB7IEF1ZGlvU291cmNlLCBFbnRpdHksIGVuZ2luZSB9IGZyb20gXCJAZGNsL3Nkay9lY3NcIjtcbmltcG9ydCB7IGFjdGl2ZU5QQywgbnBjRGF0YUNvbXBvbmVudCB9IGZyb20gXCIuL25wY1wiO1xuaW1wb3J0IHsgSXNUeXBpbmdEaWFsb2cgfSBmcm9tIFwiLi9jb21wb25lbnRzXCI7XG5pbXBvcnQgeyBoYW5kbGVEaWFsb2dUeXBpbmcgfSBmcm9tIFwiLi9zeXN0ZW1zXCI7XG5pbXBvcnQgeyBEaWFsb2csIE5QQ1N0YXRlIH0gZnJvbSBcIi4vdHlwZXNcIjtcbmltcG9ydCB7IHNlY3Rpb24gfSBmcm9tICcuL3VpJztcblxuXG5leHBvcnQgY29uc3QgbnBjRGlhbG9nQ29tcG9uZW50OiBNYXA8RW50aXR5LCBhbnk+ID0gbmV3IE1hcCgpXG5leHBvcnQgY29uc3QgbnBjRGlhbG9nVHlwaW5nU3lzdGVtczogTWFwPEVudGl0eSwgYW55PiA9IG5ldyBNYXAoKVxuXG5leHBvcnQgZW51bSBDb25maXJtTW9kZSB7XG4gICAgQ29uZmlybSA9IDAsXG4gICAgQ2FuY2VsID0gMSxcbiAgICBOZXh0ID0gMixcbiAgICBCdXR0b24zID0gMyxcbiAgICBCdXR0b240ID0gNFxuICB9XG5cbmV4cG9ydCBmdW5jdGlvbiBhZGREaWFsb2cobnBjOkVudGl0eSwgc291bmQ/OnN0cmluZyl7XG4gICAgY29uc29sZS5sb2coJ2FkZGluZyBkaWFsb2cgZm9yIG5wYycsIG5wYylcbiAgICBucGNEaWFsb2dDb21wb25lbnQuc2V0KG5wYywge1xuICAgICAgICB0eXBpbmc6dHJ1ZSxcbiAgICAgICAgdmlzaWJsZTpmYWxzZSxcbiAgICAgICAgdmlzaWJsZVRleHQ6XCJcIixcbiAgICAgICAgdmlzaWJsZUNoYXJzOjAsXG4gICAgICAgIGZ1bGxUZXh0OlwiXCIsXG4gICAgICAgIHRpbWVyOjAsXG4gICAgICAgIHNwZWVkOjMwLFxuICAgICAgICBzY3JpcHQ6W10sXG4gICAgICAgIGluZGV4OjAsXG4gICAgICAgIHNvdW5kOiBzb3VuZCA/IHNvdW5kIDogdW5kZWZpbmVkLFxuICAgICAgICBzb3VuZFBsYXllcjogc291bmQgPyBlbmdpbmUuYWRkRW50aXR5KCkgOiB1bmRlZmluZWQsXG4gICAgICAgIGZvbnRTaXplOjIyLFxuICAgICAgICBpc1F1ZXN0aW9uOmZhbHNlLFxuICAgICAgICBidXR0b25zOjBcbiAgICB9KVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0VGV4dCgpe1xuICAgIHJldHVybiBhY3RpdmVOUEMgPT0gMCB8fCAhbnBjRGlhbG9nQ29tcG9uZW50LmhhcyhhY3RpdmVOUEMgYXMgRW50aXR5KSA/IFwiXCIgOiBucGNEaWFsb2dDb21wb25lbnQuZ2V0KGFjdGl2ZU5QQyBhcyBFbnRpdHkpLnZpc2libGVUZXh0XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRCdXR0b25UZXh0KGJ1dHRvbjpudW1iZXIpe1xuICAgIGxldCB0ZXh0ID0gXCJcIlxuXG4gICAgaWYoYWN0aXZlTlBDICE9IDAgJiYgbnBjRGlhbG9nQ29tcG9uZW50LmhhcyhhY3RpdmVOUEMgYXMgRW50aXR5KSl7XG4gICAgICAgIGxldCBkaWFsb2dEYXRhID0gbnBjRGlhbG9nQ29tcG9uZW50LmdldChhY3RpdmVOUEMgYXMgRW50aXR5KVxuICAgICAgICBpZihkaWFsb2dEYXRhLmlzUXVlc3Rpb24gJiYgZGlhbG9nRGF0YS5idXR0b25zID4gYnV0dG9uKXtcbiAgICAgICAgICAgIHRleHQgPSBkaWFsb2dEYXRhLnNjcmlwdFtkaWFsb2dEYXRhLmluZGV4XS5idXR0b25zW2J1dHRvbl0ubGFiZWxcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGV4dFxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0Rm9udFNpemUoKXtcbiAgICByZXR1cm4gYWN0aXZlTlBDID09IDAgfHwgIW5wY0RpYWxvZ0NvbXBvbmVudC5oYXMoYWN0aXZlTlBDIGFzIEVudGl0eSkgPyAyMiA6IG5wY0RpYWxvZ0NvbXBvbmVudC5nZXQoYWN0aXZlTlBDIGFzIEVudGl0eSkuZm9udFNpemVcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRpc3BsYXlEaWFsb2coKXtcbiAgICByZXR1cm4gYWN0aXZlTlBDID09IDAgfHwgIW5wY0RpYWxvZ0NvbXBvbmVudC5oYXMoYWN0aXZlTlBDIGFzIEVudGl0eSkgPyBmYWxzZSA6ICBucGNEaWFsb2dDb21wb25lbnQuZ2V0KGFjdGl2ZU5QQyBhcyBFbnRpdHkpLnZpc2libGVcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRpc3BsYXlCdXR0b24oYnV0dG9uOm51bWJlcil7XG4gICAgcmV0dXJuIGFjdGl2ZU5QQyA9PSAwIHx8ICFucGNEaWFsb2dDb21wb25lbnQuaGFzKGFjdGl2ZU5QQyBhcyBFbnRpdHkpID8gZmFsc2UgOiAgbnBjRGlhbG9nQ29tcG9uZW50LmdldChhY3RpdmVOUEMgYXMgRW50aXR5KS5pc1F1ZXN0aW9uICYmIG5wY0RpYWxvZ0NvbXBvbmVudC5nZXQoYWN0aXZlTlBDIGFzIEVudGl0eSkuYnV0dG9ucyA+PSBidXR0b25cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRpc3BsYXlGaXJzdEJ1dHRvbkNvbnRhaW5lcigpe1xuICAgIHJldHVybiBhY3RpdmVOUEMgPT0gMCB8fCAhbnBjRGlhbG9nQ29tcG9uZW50LmhhcyhhY3RpdmVOUEMgYXMgRW50aXR5KSA/IGZhbHNlIDogIG5wY0RpYWxvZ0NvbXBvbmVudC5nZXQoYWN0aXZlTlBDIGFzIEVudGl0eSkuaXNRdWVzdGlvbiAmJiBucGNEaWFsb2dDb21wb25lbnQuZ2V0KGFjdGl2ZU5QQyBhcyBFbnRpdHkpLmJ1dHRvbnMgPj0gMVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZGlzcGxheVNlY29uZEJ1dHRvbkNvbnRhaW5lcigpe1xuICAgIHJldHVybiBhY3RpdmVOUEMgPT0gMCB8fCAhbnBjRGlhbG9nQ29tcG9uZW50LmhhcyhhY3RpdmVOUEMgYXMgRW50aXR5KSA/IGZhbHNlIDogIG5wY0RpYWxvZ0NvbXBvbmVudC5nZXQoYWN0aXZlTlBDIGFzIEVudGl0eSkuaXNRdWVzdGlvbiAmJiBucGNEaWFsb2dDb21wb25lbnQuZ2V0KGFjdGl2ZU5QQyBhcyBFbnRpdHkpLmJ1dHRvbnMgPj0gM1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0VGV4dFBvc2l0aW9uKCl7XG4gICAgLy9jb25zb2xlLmxvZyhucGNEaWFsb2dDb21wb25lbnQuZ2V0KGFjdGl2ZU5QQyBhcyBFbnRpdHkpLmJ1dHRvbnMpXG4gICAgcmV0dXJuIGFjdGl2ZU5QQyA9PSAwIHx8ICFucGNEaWFsb2dDb21wb25lbnQuaGFzKGFjdGl2ZU5QQyBhcyBFbnRpdHkpID8ge3RvcDowfSA6IHt0b3A6bnBjRGF0YUNvbXBvbmVudC5nZXQoYWN0aXZlTlBDIGFzIEVudGl0eSkubWFyZ2lufVxufVxuXG5leHBvcnQgZnVuY3Rpb24gYnV0dG9uQ2xpY2soYnV0dG9uOm51bWJlcil7XG4gICAgaWYoYWN0aXZlTlBDICE9IDAgJiYgbnBjRGF0YUNvbXBvbmVudC5oYXMoYWN0aXZlTlBDIGFzIEVudGl0eSkpe1xuICAgICAgICBjb25maXJtVGV4dChhY3RpdmVOUEMgYXMgRW50aXR5LCBidXR0b24pXG4gICAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gY2xvc2VEaWFsb2cobnBjOkVudGl0eSl7XG4gICAgbGV0IGRpYWxvZ0RhdGEgPSBucGNEaWFsb2dDb21wb25lbnQuZ2V0KG5wYylcbiAgICBkaWFsb2dEYXRhLnZpc2libGUgPSBmYWxzZVxuICAgIGRpYWxvZ0RhdGEudHlwaW5nID0gZmFsc2VcbiAgICBkaWFsb2dEYXRhLnZpc2libGVUZXh0ID0gXCJcIlxuICAgIGRpYWxvZ0RhdGEudmlzaWJsZUNoYXJzID0gMFxuICAgIGRpYWxvZ0RhdGEuZnVsbFRleHQgPSBcIlwiXG4gICAgZGlhbG9nRGF0YS50aW1lciA9IDBcbiAgICBkaWFsb2dEYXRhLmluZGV4ID0gMFxuICAgIGRpYWxvZ0RhdGEuc2NyaXB0ID0gW11cbiAgICBkaWFsb2dEYXRhLmJ1dHRvbnMgPSAwXG4gICAgZGlhbG9nRGF0YS5tYXJnaW4gPSAwXG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0YWxrKG5wYzpFbnRpdHksIGRpYWxvZzpEaWFsb2dbXSwgc3RhcnRJbmRleD86bnVtYmVyLCBkdXJhdGlvbj86bnVtYmVyKXtcbiAgICBucGNEYXRhQ29tcG9uZW50LmdldChucGMpLmludHJvZHVjZWQgPSB0cnVlXG4gICAgY29uc29sZS5sb2coJ3RyeWluZyB0byB0YWxrIG5wYycpXG4gICAgaWYobnBjRGlhbG9nQ29tcG9uZW50LmhhcyhucGMpKXtcbiAgICAgICAgY29uc29sZS5sb2coJ3dlIGhhdmUgbnBjIGRpYWxvZyBjb21wb2VudG4gZm9yICcsIG5wYylcbiAgICAgICAgbnBjRGF0YUNvbXBvbmVudC5nZXQobnBjKS5zdGF0ZSA9IE5QQ1N0YXRlLlRBTEtJTkdcbiAgICAgICAgb3BlbkRpYWxvZyhucGMsZGlhbG9nLCBzdGFydEluZGV4ID8gc3RhcnRJbmRleCA6IDApXG4gICAgfVxufVxuXG5mdW5jdGlvbiBvcGVuRGlhbG9nKG5wYzpFbnRpdHksIGRpYWxvZzphbnlbXSwgc3RhcnRJbmRleDpudW1iZXIpe1xuICAgIGxldCBkaWFsb2dEYXRhID0gbnBjRGlhbG9nQ29tcG9uZW50LmdldChucGMpXG4gICAgZGlhbG9nRGF0YS5zY3JpcHQgPSBhZGRMaW5lQnJlYWtzKGRpYWxvZylcbiAgICBkaWFsb2dEYXRhLmluZGV4ID0gc3RhcnRJbmRleFxuICAgIFxuICAgIGxldCBjdXJyZW50VGV4dDogRGlhbG9nID0gZGlhbG9nW3N0YXJ0SW5kZXhdID8gZGlhbG9nW3N0YXJ0SW5kZXhdIDogeyB0ZXh0OiAnJyB9XG5cbiAgICBpZiAoY3VycmVudFRleHQuYXVkaW8pIHtcbiAgICAgICAgQXVkaW9Tb3VyY2UuY3JlYXRlT3JSZXBsYWNlKGRpYWxvZ0RhdGEuc291bmRQbGF5ZXIsIHtcbiAgICAgICAgICAgIGF1ZGlvQ2xpcFVybDogY3VycmVudFRleHQuYXVkaW8sXG4gICAgICAgICAgICBsb29wOiBmYWxzZSxcbiAgICAgICAgICAgIHBsYXlpbmc6IGZhbHNlXG4gICAgICAgIH0pXG4gICAgICAgIGxldCBhdWRpbyA9IEF1ZGlvU291cmNlLmdldE11dGFibGUoZGlhbG9nRGF0YS5zb3VuZFBsYXllcilcbiAgICAgICAgYXVkaW8udm9sdW1lID0gMC41XG4gICAgICAgIGF1ZGlvLnBsYXlpbmcgPSB0cnVlXG4gICAgfSBlbHNlIGlmIChkaWFsb2dEYXRhLnNvdW5kKSB7XG4gICAgICAgIEF1ZGlvU291cmNlLmNyZWF0ZU9yUmVwbGFjZShkaWFsb2dEYXRhLnNvdW5kUGxheWVyLCB7XG4gICAgICAgICAgICBhdWRpb0NsaXBVcmw6IGRpYWxvZ0RhdGEuc291bmQsXG4gICAgICAgICAgICBsb29wOiBmYWxzZSxcbiAgICAgICAgICAgIHBsYXlpbmc6IGZhbHNlXG4gICAgICAgIH0pXG4gICAgICAgIGxldCBhdWRpbyA9IEF1ZGlvU291cmNlLmdldE11dGFibGUoZGlhbG9nRGF0YS5zb3VuZFBsYXllcilcbiAgICAgICAgYXVkaW8udm9sdW1lID0gMC41XG4gICAgICAgIGF1ZGlvLnBsYXlpbmcgPSB0cnVlXG4gICAgfVxuXG4gICAgLy9UT0RPXG4gICAgLy9zZXQgcG9ydHJhaXRcbiAgICAvL3NldCBpbWFnZSBvbiB0aGUgcmlnaHRcbiAgICAvL3NldCB0ZXh0XG4gICAgLy9nbG9iYWwgYnV0dG9uIGFjdGlvbnNcblxuICAgIGJlZ2luVHlwaW5nKG5wYylcbn1cblxuZnVuY3Rpb24gYmVnaW5UeXBpbmcobnBjOkVudGl0eSl7XG4gICAgbGV0IGRpYWxvZ0RhdGEgPSBucGNEaWFsb2dDb21wb25lbnQuZ2V0KG5wYylcbiAgICBkaWFsb2dEYXRhLmZ1bGxUZXh0ID0gZGlhbG9nRGF0YS5zY3JpcHRbZGlhbG9nRGF0YS5pbmRleF0udGV4dFxuICAgIGRpYWxvZ0RhdGEudmlzaWJsZSA9IHRydWVcbiAgICBkaWFsb2dEYXRhLnR5cGluZyA9IHRydWVcbiAgICBkaWFsb2dEYXRhLnZpc2libGVUZXh0ID0gXCJcIlxuICAgIGRpYWxvZ0RhdGEudmlzaWJsZUNoYXJzID0gMFxuICAgIGRpYWxvZ0RhdGEudGltZXIgPSAwXG4gICAgZGlhbG9nRGF0YS5pc1F1ZXN0aW9uID0gZmFsc2VcbiAgICBkaWFsb2dEYXRhLmJ1dHRvbnMgPSAwXG5cbiAgICBpZihkaWFsb2dEYXRhLnNjcmlwdFtkaWFsb2dEYXRhLmluZGV4XS5pc1F1ZXN0aW9uKXtcbiAgICAgICAgZGlhbG9nRGF0YS5idXR0b25zID0gZGlhbG9nRGF0YS5zY3JpcHRbZGlhbG9nRGF0YS5pbmRleF0uYnV0dG9ucy5sZW5ndGhcbiAgICAgICAgaWYoZGlhbG9nRGF0YS5idXR0b25zID49IDMpe1xuICAgICAgICAgICAgZGlhbG9nRGF0YS5tYXJnaW4gPSAtMzAwXG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZihkaWFsb2dEYXRhLmJ1dHRvbnMgPj0xKXtcbiAgICAgICAgICAgIGRpYWxvZ0RhdGEubWFyZ2luID0gLTMwMFxuICAgICAgICB9XG5cbiAgICAgICAgY29uc29sZS5sb2coZGlhbG9nRGF0YSlcbiAgICAgICAgdXRpbHMudGltZXJzLnNldFRpbWVvdXQoXG4gICAgICAgICAgICBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygnc2V0dGluZyBxdWVzdGlvbiB0byB0cnVlJylcbiAgICAgICAgICAgICAgICBkaWFsb2dEYXRhLmlzUXVlc3Rpb24gPSB0cnVlXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgNzAwXG4gICAgICAgICAgKVxuICAgIH1cblxuICAgIGRpYWxvZ0RhdGEub3BlblRpbWUgPSBNYXRoLmZsb29yKERhdGUubm93KCkpXG4gICAgaWYoZGlhbG9nRGF0YS5zY3JpcHRbZGlhbG9nRGF0YS5pbmRleF0uZm9udFNpemUpe1xuICAgICAgICBkaWFsb2dEYXRhLmZvbnRTaXplID0gZGlhbG9nRGF0YS5zY3JpcHRbZGlhbG9nRGF0YS5pbmRleF0uZm9udFNpemVcbiAgICB9XG4gICAgXG4gICAgaWYoZGlhbG9nRGF0YS5zY3JpcHRbZGlhbG9nRGF0YS5pbmRleF0uaGFzT3duUHJvcGVydHkoXCJ0eXBlU3BlZWRcIikpe1xuICAgICAgICBkaWFsb2dEYXRhLnNwZWVkID0gZGlhbG9nRGF0YS5zY3JpcHRbZGlhbG9nRGF0YS5pbmRleF0udHlwZVNwZWVkXG4gICAgfVxuICAgIGVsc2V7XG4gICAgICAgIGRpYWxvZ0RhdGEuc3BlZWQgPSAzMFxuICAgIH1cblxuICAgIGlmKGRpYWxvZ0RhdGEuc3BlZWQgPD0gMCl7XG4gICAgICAgIHJ1c2hUZXh0KG5wYylcbiAgICB9XG4gICAgZWxzZXtcbiAgICAgICAgaWYoIUlzVHlwaW5nRGlhbG9nLmhhcyhucGMpKXtcbiAgICAgICAgICAgIElzVHlwaW5nRGlhbG9nLmNyZWF0ZShucGMpXG4gICAgICAgIH1cbiAgICBcbiAgICAgICAgLy8gaWYoIW5wY0RpYWxvZ1R5cGluZ1N5c3RlbXMuaGFzKG5wYykpe1xuICAgICAgICAvLyAgICAgbnBjRGlhbG9nVHlwaW5nU3lzdGVtcy5zZXQobnBjLGVuZ2luZS5hZGRTeXN0ZW0oaGFuZGxlRGlhbG9nVHlwaW5nKSlcbiAgICAgICAgLy8gfVxuICAgIH1cbn1cblxuZnVuY3Rpb24gYWRkTGluZUJyZWFrcyhkaWFsb2c6RGlhbG9nW10pe1xuICAgIGxldCBjbGVhbmVkOkRpYWxvZ1tdID0gW11cbiAgICBkaWFsb2cuZm9yRWFjaCgoZCk9PntcbiAgICAgICAgZC50ZXh0ID0gbGluZUJyZWFrKGQudGV4dCwgNTApXG4gICAgICAgIGNsZWFuZWQucHVzaChkKVxuICAgIH0pXG4gICAgcmV0dXJuIGNsZWFuZWRcbn1cblxuZnVuY3Rpb24gbGluZUJyZWFrKHRleHQ6IHN0cmluZywgbWF4TGluZUxlbmd0aDogbnVtYmVyKTogc3RyaW5nIHtcbiAgICBjb25zdCB3b3JkcyA9IHRleHQuc3BsaXQoJyAnKTtcbiAgICBsZXQgY3VycmVudExpbmUgPSAnJztcbiAgICBjb25zdCBsaW5lcyA9IFtdO1xuICBcbiAgICBmb3IgKGNvbnN0IHdvcmQgb2Ygd29yZHMpIHtcbiAgICAgIGlmIChjdXJyZW50TGluZS5sZW5ndGggKyB3b3JkLmxlbmd0aCArIDEgPD0gbWF4TGluZUxlbmd0aCkge1xuICAgICAgICBjdXJyZW50TGluZSArPSBgJHt3b3JkfSBgO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbGluZXMucHVzaChjdXJyZW50TGluZS50cmltKCkpO1xuICAgICAgICBjdXJyZW50TGluZSA9IGAke3dvcmR9IGA7XG4gICAgICB9XG4gICAgfVxuICAgIGxpbmVzLnB1c2goY3VycmVudExpbmUudHJpbSgpKTtcbiAgICByZXR1cm4gbGluZXMuam9pbignXFxuJyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBoYW5kbGVEaWFsb2dDbGljaygpe1xuICAgIGxldCBucGMgPSBhY3RpdmVOUEMgYXMgRW50aXR5XG4gICAgaWYobnBjRGlhbG9nQ29tcG9uZW50LmhhcyhucGMpKXtcbiAgICAgICAgbGV0IGRpYWxvZ0RhdGEgPSBucGNEaWFsb2dDb21wb25lbnQuZ2V0KG5wYylcbiAgICAgICAgaWYoIWRpYWxvZ0RhdGEudmlzaWJsZSB8fCAoTWF0aC5mbG9vcihEYXRlLm5vdygpKSAtIGRpYWxvZ0RhdGEub3BlblRpbWUgIDwgMTAwKSkgcmV0dXJuXG4gICAgICAgIFxuICAgICAgICBpZihkaWFsb2dEYXRhLnR5cGluZyl7XG4gICAgICAgICAgICBydXNoVGV4dChucGMpXG4gICAgICAgIH1cbiAgICAgICAgZWxzZXtcbiAgICAgICAgICAgIGNvbmZpcm1UZXh0KG5wYywgQ29uZmlybU1vZGUuTmV4dClcbiAgICAgICAgfVxuICAgIH1cbn1cblxuZnVuY3Rpb24gcnVzaFRleHQobnBjOkVudGl0eSl7XG4gICAgbGV0IGRpYWxvZ0RhdGEgPSBucGNEaWFsb2dDb21wb25lbnQuZ2V0KG5wYylcbiAgICBkaWFsb2dEYXRhLnR5cGluZyA9IGZhbHNlXG4gICAgZGlhbG9nRGF0YS50aW1lciA9IDBcbiAgICBkaWFsb2dEYXRhLnZpc2libGVDaGFycyA9IGRpYWxvZ0RhdGEuZnVsbFRleHQubGVuZ3RoXG4gICAgZGlhbG9nRGF0YS52aXNpYmxlVGV4dCA9IGRpYWxvZ0RhdGEuZnVsbFRleHRcbiAgICAvL2VuZ2luZS5yZW1vdmVTeXN0ZW0obnBjRGlhbG9nVHlwaW5nU3lzdGVtcy5nZXQobnBjKSlcbn1cbmV4cG9ydCBmdW5jdGlvbiBjb25maXJtVGV4dChucGM6RW50aXR5LCBtb2RlOiBDb25maXJtTW9kZSk6IHZvaWQge1xuICAgIGxldCBkaWFsb2dEYXRhID0gbnBjRGlhbG9nQ29tcG9uZW50LmdldChucGMpXG4gICAgZGlhbG9nRGF0YS5vcGVuVGltZSA9IE1hdGguZmxvb3IoRGF0ZS5ub3coKSlcblxuICAgIGxldCBjdXJyZW50VGV4dCA9IGRpYWxvZ0RhdGEuc2NyaXB0W2RpYWxvZ0RhdGEuaW5kZXhdXG4gICAgLy8gVXBkYXRlIGFjdGl2ZSB0ZXh0XG4gICAgaWYgKG1vZGUgPT0gQ29uZmlybU1vZGUuTmV4dCkge1xuICAgICAgICBpZiAoIWN1cnJlbnRUZXh0LmlzUXVlc3Rpb24pIHtcbiAgICAgICAgICAgIGlmIChjdXJyZW50VGV4dC50cmlnZ2VyZWRCeU5leHQpIHtcbiAgICAgICAgICAgIGN1cnJlbnRUZXh0LnRyaWdnZXJlZEJ5TmV4dCgpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoY3VycmVudFRleHQuaXNFbmRPZkRpYWxvZykge1xuICAgICAgICAgICAgY2xvc2VEaWFsb2cobnBjKVxuICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBkaWFsb2dEYXRhLmluZGV4KytcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGlmIChtb2RlID09IENvbmZpcm1Nb2RlLkNvbmZpcm0pIHtcbiAgICAgICAgaWYgKGN1cnJlbnRUZXh0LmJ1dHRvbnMgJiYgY3VycmVudFRleHQuYnV0dG9ucy5sZW5ndGggPj0gMSkge1xuICAgICAgICAgIGlmICh0eXBlb2YgY3VycmVudFRleHQuYnV0dG9uc1swXS5nb1RvRGlhbG9nID09PSAnbnVtYmVyJykge1xuICAgICAgICAgICAgZGlhbG9nRGF0YS5pbmRleCA9IGN1cnJlbnRUZXh0LmJ1dHRvbnNbMF0uZ29Ub0RpYWxvZ1xuICAgICAgICAgIH0gXG5cbiAgICAgICAgICAvL1RPRE9cbiAgICAgICAgICAvL2FsbG93IGRpYWxvZ3MgdG8gYmUgaW5kZXggYnkgbmFtZVxuICAgICAgICAvLyAgIGVsc2Uge1xuICAgICAgICAvLyAgICAgdGhpcy5hY3RpdmVUZXh0SWQgPSBmaW5kRGlhbG9nQnlOYW1lKHRoaXMuTlBDU2NyaXB0LCBjdXJyZW50VGV4dC5idXR0b25zWzBdLmdvVG9EaWFsb2cpXG4gICAgICAgIC8vICAgfVxuICAgICAgICAgIGlmIChjdXJyZW50VGV4dC5idXR0b25zWzBdLnRyaWdnZXJlZEFjdGlvbnMpIHtcbiAgICAgICAgICAgIGN1cnJlbnRUZXh0LmJ1dHRvbnNbMF0udHJpZ2dlcmVkQWN0aW9ucygpXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgaWYgKG1vZGUgPT0gQ29uZmlybU1vZGUuQ2FuY2VsKSB7XG4gICAgICAgIGlmIChjdXJyZW50VGV4dC5idXR0b25zICYmIGN1cnJlbnRUZXh0LmJ1dHRvbnMubGVuZ3RoID49IDEpIHtcbiAgICAgICAgICBpZiAodHlwZW9mIGN1cnJlbnRUZXh0LmJ1dHRvbnNbMV0uZ29Ub0RpYWxvZyA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgICAgIGRpYWxvZ0RhdGEuaW5kZXggPSBjdXJyZW50VGV4dC5idXR0b25zWzFdLmdvVG9EaWFsb2dcbiAgICAgICAgICB9IFxuXG4gICAgICAgICAgLy9UT0RPXG4gICAgICAgICAgLy9hbGxvdyBkaWFsb2dzIHRvIGJlIGluZGV4IGJ5IG5hbWVcbiAgICAgICAgLy8gICBlbHNlIHtcbiAgICAgICAgLy8gICAgIHRoaXMuYWN0aXZlVGV4dElkID0gZmluZERpYWxvZ0J5TmFtZSh0aGlzLk5QQ1NjcmlwdCwgY3VycmVudFRleHQuYnV0dG9uc1swXS5nb1RvRGlhbG9nKVxuICAgICAgICAvLyAgIH1cbiAgICAgICAgICBpZiAoY3VycmVudFRleHQuYnV0dG9uc1sxXS50cmlnZ2VyZWRBY3Rpb25zKSB7XG4gICAgICAgICAgICBjdXJyZW50VGV4dC5idXR0b25zWzFdLnRyaWdnZXJlZEFjdGlvbnMoKVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIGlmIChtb2RlID09IENvbmZpcm1Nb2RlLkJ1dHRvbjMpIHtcbiAgICAgICAgaWYgKGN1cnJlbnRUZXh0LmJ1dHRvbnMgJiYgY3VycmVudFRleHQuYnV0dG9ucy5sZW5ndGggPj0gMSkge1xuICAgICAgICAgIGlmICh0eXBlb2YgY3VycmVudFRleHQuYnV0dG9uc1syXS5nb1RvRGlhbG9nID09PSAnbnVtYmVyJykge1xuICAgICAgICAgICAgZGlhbG9nRGF0YS5pbmRleCA9IGN1cnJlbnRUZXh0LmJ1dHRvbnNbMl0uZ29Ub0RpYWxvZ1xuICAgICAgICAgIH0gXG5cbiAgICAgICAgICAvL1RPRE9cbiAgICAgICAgICAvL2FsbG93IGRpYWxvZ3MgdG8gYmUgaW5kZXggYnkgbmFtZVxuICAgICAgICAvLyAgIGVsc2Uge1xuICAgICAgICAvLyAgICAgdGhpcy5hY3RpdmVUZXh0SWQgPSBmaW5kRGlhbG9nQnlOYW1lKHRoaXMuTlBDU2NyaXB0LCBjdXJyZW50VGV4dC5idXR0b25zWzBdLmdvVG9EaWFsb2cpXG4gICAgICAgIC8vICAgfVxuICAgICAgICAgIGlmIChjdXJyZW50VGV4dC5idXR0b25zWzJdLnRyaWdnZXJlZEFjdGlvbnMpIHtcbiAgICAgICAgICAgIGN1cnJlbnRUZXh0LmJ1dHRvbnNbMl0udHJpZ2dlcmVkQWN0aW9ucygpXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgaWYgKG1vZGUgPT0gQ29uZmlybU1vZGUuQnV0dG9uNCkge1xuICAgICAgICBpZiAoY3VycmVudFRleHQuYnV0dG9ucyAmJiBjdXJyZW50VGV4dC5idXR0b25zLmxlbmd0aCA+PSAxKSB7XG4gICAgICAgICAgaWYgKHR5cGVvZiBjdXJyZW50VGV4dC5idXR0b25zWzNdLmdvVG9EaWFsb2cgPT09ICdudW1iZXInKSB7XG4gICAgICAgICAgICBkaWFsb2dEYXRhLmluZGV4ID0gY3VycmVudFRleHQuYnV0dG9uc1szXS5nb1RvRGlhbG9nXG4gICAgICAgICAgfSBcblxuICAgICAgICAgIC8vVE9ET1xuICAgICAgICAgIC8vYWxsb3cgZGlhbG9ncyB0byBiZSBpbmRleCBieSBuYW1lXG4gICAgICAgIC8vICAgZWxzZSB7XG4gICAgICAgIC8vICAgICB0aGlzLmFjdGl2ZVRleHRJZCA9IGZpbmREaWFsb2dCeU5hbWUodGhpcy5OUENTY3JpcHQsIGN1cnJlbnRUZXh0LmJ1dHRvbnNbMF0uZ29Ub0RpYWxvZylcbiAgICAgICAgLy8gICB9XG4gICAgICAgICAgaWYgKGN1cnJlbnRUZXh0LmJ1dHRvbnNbM10udHJpZ2dlcmVkQWN0aW9ucykge1xuICAgICAgICAgICAgY3VycmVudFRleHQuYnV0dG9uc1szXS50cmlnZ2VyZWRBY3Rpb25zKClcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cblxuICAgIGJlZ2luVHlwaW5nKG5wYylcbn1cblxuZXhwb3J0IHR5cGUgSW1hZ2VBdGxhc0RhdGEgPSB7XG4gICAgYXRsYXNXaWR0aDogbnVtYmVyO1xuICAgIGF0bGFzSGVpZ2h0OiBudW1iZXI7XG4gICAgc291cmNlV2lkdGg6IG51bWJlcjtcbiAgICBzb3VyY2VIZWlnaHQ6IG51bWJlcjtcbiAgICBzb3VyY2VMZWZ0OiBudW1iZXI7XG4gICAgc291cmNlVG9wOiBudW1iZXI7XG4gIH1cbiAgXG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRJbWFnZUF0bGFzTWFwcGluZyhkYXRhPzogSW1hZ2VBdGxhc0RhdGEpOiBudW1iZXJbXSB7XG4gICAgaWYgKCFkYXRhKSByZXR1cm4gW11cbiAgXG4gICAgY29uc3Qge1xuICAgICAgYXRsYXNXaWR0aCxcbiAgICAgIGF0bGFzSGVpZ2h0LFxuICAgICAgc291cmNlV2lkdGgsXG4gICAgICBzb3VyY2VIZWlnaHQsXG4gICAgICBzb3VyY2VUb3AsXG4gICAgICBzb3VyY2VMZWZ0LFxuICAgIH0gPSBkYXRhXG4gIFxuICAgIHJldHVybiBbXG4gICAgICBzb3VyY2VMZWZ0IC8gYXRsYXNXaWR0aCwgKGF0bGFzSGVpZ2h0IC0gc291cmNlVG9wIC0gc291cmNlSGVpZ2h0KSAvIGF0bGFzSGVpZ2h0LFxuICAgICAgc291cmNlTGVmdCAvIGF0bGFzV2lkdGgsIChhdGxhc0hlaWdodCAtIHNvdXJjZVRvcCkgLyBhdGxhc0hlaWdodCxcbiAgICAgIChzb3VyY2VMZWZ0ICsgc291cmNlV2lkdGgpIC8gYXRsYXNXaWR0aCwgKGF0bGFzSGVpZ2h0IC0gc291cmNlVG9wKSAvIGF0bGFzSGVpZ2h0LFxuICAgICAgKHNvdXJjZUxlZnQgKyBzb3VyY2VXaWR0aCkgLyBhdGxhc1dpZHRoLCAoYXRsYXNIZWlnaHQgLSBzb3VyY2VUb3AgLSBzb3VyY2VIZWlnaHQpIC8gYXRsYXNIZWlnaHQsXG4gICAgXVxuICB9XG5cbiAgZXhwb3J0IGZ1bmN0aW9uIHJlYWxXaWR0aCh3aWR0aD86bnVtYmVyKTogbnVtYmVyIHtcbiAgICByZXR1cm4gd2lkdGggPyB3aWR0aCA6IHNlY3Rpb24uc291cmNlV2lkdGhcbiAgfVxuXG4gIGV4cG9ydCBmdW5jdGlvbiByZWFsSGVpZ2h0KGhlaWdodD86bnVtYmVyKTogbnVtYmVyIHtcbiAgICByZXR1cm4gaGVpZ2h0ID8gaGVpZ2h0IDogc2VjdGlvbi5zb3VyY2VIZWlnaHRcbiAgfSJdfQ==
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export declare function addFaceUserSystem(): void;
|
|
2
|
+
export declare const TrackUserFlag: import("@dcl/sdk/ecs").MapComponentDefinition<import("@dcl/sdk/ecs").MapResult<{
|
|
3
|
+
lockXZRotation: import("@dcl/sdk/ecs").ISchema<boolean>;
|
|
4
|
+
active: import("@dcl/sdk/ecs").ISchema<boolean>;
|
|
5
|
+
rotSpeed: import("@dcl/sdk/ecs").ISchema<number>;
|
|
6
|
+
}>>;
|
|
7
|
+
export declare function faceUserSystem(dt: number): void;
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { Schemas, Transform, engine } from "@dcl/sdk/ecs";
|
|
2
|
+
import { Quaternion, Vector3 } from "@dcl/sdk/math";
|
|
3
|
+
let faceUserAdded = false;
|
|
4
|
+
export function addFaceUserSystem() {
|
|
5
|
+
faceUserAdded = true;
|
|
6
|
+
engine.addSystem(faceUserSystem);
|
|
7
|
+
}
|
|
8
|
+
export const TrackUserFlag = engine.defineComponent("npcutils::trackUserFlag", {
|
|
9
|
+
lockXZRotation: Schemas.Boolean,
|
|
10
|
+
active: Schemas.Boolean,
|
|
11
|
+
rotSpeed: Schemas.Number
|
|
12
|
+
});
|
|
13
|
+
export function faceUserSystem(dt) {
|
|
14
|
+
for (const [entity, track] of engine.getEntitiesWith(TrackUserFlag)) {
|
|
15
|
+
if (track.active) {
|
|
16
|
+
const player = Transform.get(engine.PlayerEntity);
|
|
17
|
+
let lookAtTarget = Vector3.create(player.position.x, player.position.y, player.position.z);
|
|
18
|
+
let direction = Vector3.subtract(lookAtTarget, Transform.get(entity).position);
|
|
19
|
+
let transform = Transform.getMutable(entity);
|
|
20
|
+
transform.rotation = Quaternion.slerp(player.rotation, Quaternion.lookRotation(direction), dt * track.rotSpeed);
|
|
21
|
+
if (track.lockXZRotation) {
|
|
22
|
+
transform.rotation.x = 0;
|
|
23
|
+
transform.rotation.z = 0;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFjZVVzZXJTeXN0ZW0uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvZmFjZVVzZXJTeXN0ZW0udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLE1BQU0sY0FBYyxDQUFBO0FBQ3pELE9BQU8sRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBR25ELElBQUksYUFBYSxHQUFZLEtBQUssQ0FBQTtBQUVsQyxNQUFNLFVBQVUsaUJBQWlCO0lBQy9CLGFBQWEsR0FBRyxJQUFJLENBQUE7SUFFcEIsTUFBTSxDQUFDLFNBQVMsQ0FBQyxjQUFjLENBQUMsQ0FBQTtBQUNsQyxDQUFDO0FBRUQsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLE1BQU0sQ0FBQyxlQUFlLENBQ2xELHlCQUF5QixFQUN6QjtJQUNDLGNBQWMsRUFBRSxPQUFPLENBQUMsT0FBTztJQUMvQixNQUFNLEVBQUUsT0FBTyxDQUFDLE9BQU87SUFDckIsUUFBUSxFQUFFLE9BQU8sQ0FBQyxNQUFNO0NBQzFCLENBQUMsQ0FBQTtBQUVILE1BQU0sVUFBVSxjQUFjLENBQUMsRUFBVTtJQUN2QyxLQUFLLE1BQU0sQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLElBQUksTUFBTSxDQUFDLGVBQWUsQ0FBQyxhQUFhLENBQUMsRUFBRTtRQUNuRSxJQUFJLEtBQUssQ0FBQyxNQUFNLEVBQUU7WUFDaEIsTUFBTSxNQUFNLEdBQUcsU0FBUyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUE7WUFDakQsSUFBSSxZQUFZLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFBO1lBQzFGLElBQUksU0FBUyxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUMsWUFBWSxFQUFFLFNBQVMsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUE7WUFFOUUsSUFBSSxTQUFTLEdBQUcsU0FBUyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQTtZQUM1QyxTQUFTLENBQUMsUUFBUSxHQUFHLFVBQVUsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxVQUFVLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxFQUFFLEVBQUUsR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUE7WUFFL0csSUFBSSxLQUFLLENBQUMsY0FBYyxFQUFFO2dCQUN4QixTQUFTLENBQUMsUUFBUSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUE7Z0JBQ3hCLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQTthQUN6QjtTQUNGO0tBQ0Y7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU2NoZW1hcywgVHJhbnNmb3JtLCBlbmdpbmUgfSBmcm9tIFwiQGRjbC9zZGsvZWNzXCJcbmltcG9ydCB7IFF1YXRlcm5pb24sIFZlY3RvcjMgfSBmcm9tIFwiQGRjbC9zZGsvbWF0aFwiXG5cblxubGV0IGZhY2VVc2VyQWRkZWQ6IGJvb2xlYW4gPSBmYWxzZVxuXG5leHBvcnQgZnVuY3Rpb24gYWRkRmFjZVVzZXJTeXN0ZW0oKSB7XG4gIGZhY2VVc2VyQWRkZWQgPSB0cnVlXG5cbiAgZW5naW5lLmFkZFN5c3RlbShmYWNlVXNlclN5c3RlbSlcbn1cblxuZXhwb3J0IGNvbnN0IFRyYWNrVXNlckZsYWcgPSBlbmdpbmUuZGVmaW5lQ29tcG9uZW50KFxuXHRcIm5wY3V0aWxzOjp0cmFja1VzZXJGbGFnXCIsXG5cdHtcblx0XHRsb2NrWFpSb3RhdGlvbjogU2NoZW1hcy5Cb29sZWFuLFxuXHRcdGFjdGl2ZTogU2NoZW1hcy5Cb29sZWFuLFxuICAgIHJvdFNwZWVkOiBTY2hlbWFzLk51bWJlclxuXHR9KVxuXG5leHBvcnQgZnVuY3Rpb24gZmFjZVVzZXJTeXN0ZW0oZHQ6IG51bWJlcikge1xuICBmb3IgKGNvbnN0IFtlbnRpdHksIHRyYWNrXSBvZiBlbmdpbmUuZ2V0RW50aXRpZXNXaXRoKFRyYWNrVXNlckZsYWcpKSB7XG4gICAgaWYgKHRyYWNrLmFjdGl2ZSkge1xuICAgICAgY29uc3QgcGxheWVyID0gVHJhbnNmb3JtLmdldChlbmdpbmUuUGxheWVyRW50aXR5KVxuICAgICAgbGV0IGxvb2tBdFRhcmdldCA9IFZlY3RvcjMuY3JlYXRlKHBsYXllci5wb3NpdGlvbi54LCBwbGF5ZXIucG9zaXRpb24ueSwgcGxheWVyLnBvc2l0aW9uLnopXG4gICAgICBsZXQgZGlyZWN0aW9uID0gVmVjdG9yMy5zdWJ0cmFjdChsb29rQXRUYXJnZXQsIFRyYW5zZm9ybS5nZXQoZW50aXR5KS5wb3NpdGlvbilcblxuICAgICAgbGV0IHRyYW5zZm9ybSA9IFRyYW5zZm9ybS5nZXRNdXRhYmxlKGVudGl0eSlcbiAgICAgIHRyYW5zZm9ybS5yb3RhdGlvbiA9IFF1YXRlcm5pb24uc2xlcnAocGxheWVyLnJvdGF0aW9uLCBRdWF0ZXJuaW9uLmxvb2tSb3RhdGlvbihkaXJlY3Rpb24pLCBkdCAqIHRyYWNrLnJvdFNwZWVkKVxuXG4gICAgICBpZiAodHJhY2subG9ja1haUm90YXRpb24pIHtcbiAgICAgICAgdHJhbnNmb3JtLnJvdGF0aW9uLnggPSAwXG4gICAgICAgIHRyYW5zZm9ybS5yb3RhdGlvbi56ID0gMFxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIl19
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { activate, stopWalking, followPath, create, handleWalkAway, playAnimation, showDebug, getData, changeIdleAnim } from "./npc";
|
|
2
|
+
import { talk } from "./dialog";
|
|
3
|
+
import { Dialog, NPCPathType, NPCType } from "./types";
|
|
4
|
+
export { activate, stopWalking, followPath, create, handleWalkAway, playAnimation, showDebug, talk, Dialog, getData, NPCPathType, NPCType, changeIdleAnim };
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { activate, stopWalking, followPath, create, handleWalkAway, playAnimation, showDebug, getData, changeIdleAnim } from "./npc";
|
|
2
|
+
import { talk } from "./dialog";
|
|
3
|
+
import { NPCPathType, NPCType } from "./types";
|
|
4
|
+
export { activate, stopWalking, followPath, create, handleWalkAway, playAnimation, showDebug, talk, getData, NPCPathType, NPCType, changeIdleAnim };
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILFFBQVEsRUFDUixXQUFXLEVBQ1gsVUFBVSxFQUNWLE1BQU0sRUFDTixjQUFjLEVBQ2QsYUFBYSxFQUNiLFNBQVMsRUFDVCxPQUFPLEVBQ1AsY0FBYyxFQUFFLE1BQU0sT0FBTyxDQUFDO0FBQ2xDLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDaEMsT0FBTyxFQUFVLFdBQVcsRUFBRSxPQUFPLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFFdkQsT0FBTyxFQUNILFFBQVEsRUFDUixXQUFXLEVBQ1gsVUFBVSxFQUNWLE1BQU0sRUFDTixjQUFjLEVBQ2QsYUFBYSxFQUNiLFNBQVMsRUFDVCxJQUFJLEVBRUosT0FBTyxFQUNQLFdBQVcsRUFDWCxPQUFPLEVBQ1AsY0FBYyxFQUNqQixDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgXG4gICAgYWN0aXZhdGUsIFxuICAgIHN0b3BXYWxraW5nLCBcbiAgICBmb2xsb3dQYXRoLCBcbiAgICBjcmVhdGUsIFxuICAgIGhhbmRsZVdhbGtBd2F5LCBcbiAgICBwbGF5QW5pbWF0aW9uLCBcbiAgICBzaG93RGVidWcsXG4gICAgZ2V0RGF0YSxcbiAgICBjaGFuZ2VJZGxlQW5pbSB9IGZyb20gXCIuL25wY1wiO1xuaW1wb3J0IHsgdGFsayB9IGZyb20gXCIuL2RpYWxvZ1wiO1xuaW1wb3J0IHsgRGlhbG9nLCBOUENQYXRoVHlwZSwgTlBDVHlwZSB9IGZyb20gXCIuL3R5cGVzXCI7XG5cbmV4cG9ydCB7XG4gICAgYWN0aXZhdGUsIFxuICAgIHN0b3BXYWxraW5nLCBcbiAgICBmb2xsb3dQYXRoLCBcbiAgICBjcmVhdGUsIFxuICAgIGhhbmRsZVdhbGtBd2F5LCBcbiAgICBwbGF5QW5pbWF0aW9uLCBcbiAgICBzaG93RGVidWcsIFxuICAgIHRhbGssXG4gICAgRGlhbG9nLFxuICAgIGdldERhdGEsXG4gICAgTlBDUGF0aFR5cGUsXG4gICAgTlBDVHlwZSxcbiAgICBjaGFuZ2VJZGxlQW5pbVxufSJdfQ==
|
package/dist/npc.d.ts
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { Entity } from '@dcl/sdk/ecs';
|
|
2
|
+
import { FollowPathData, NPCData } from './types';
|
|
3
|
+
export declare const walkingTimers: Map<Entity, number>;
|
|
4
|
+
export declare const npcDataComponent: Map<Entity, any>;
|
|
5
|
+
export declare let activeNPC: number;
|
|
6
|
+
export declare function showDebug(debug: boolean): void;
|
|
7
|
+
export declare function getData(npc: Entity): any;
|
|
8
|
+
export declare function create(transform: any, data: NPCData): Entity;
|
|
9
|
+
export declare function followPath(npc: Entity, data?: FollowPathData): void;
|
|
10
|
+
export declare function stopWalking(npc: Entity, duration?: number, finished?: boolean): void;
|
|
11
|
+
export declare function activate(npc: Entity): void;
|
|
12
|
+
export declare function handleWalkAway(npc: Entity): void;
|
|
13
|
+
export declare function playAnimation(npc: Entity, anim: string, noLoop?: boolean, duration?: number): void;
|
|
14
|
+
export declare function changeIdleAnim(npc: Entity, animation: string, play?: boolean): void;
|