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/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=
@@ -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
@@ -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;